/* We come here every 100ms in the worst case, so that's 100M ns of * cumulated time. By dividing by 2^16, we get the time resolution * down to 16us, ensuring we won't overflow 32-bit computations below * even up to 3k CPUs, while keeping divides cheap on smaller systems.
*/
curr_boot = ktime_get_boottime_ns() * cpus;
diff_boot = (curr_boot - activity_data->last_boot) >> 16;
diff_used = (curr_used - activity_data->last_used) >> 16;
activity_data->last_boot = curr_boot;
activity_data->last_used = curr_used;
/* * Now we know the total boot_time multiplied by the number of CPUs, and * the total idle+wait time for all CPUs. We'll compare how they evolved * since last call. The % of overall CPU usage is : * * 1 - delta_idle / delta_boot * * What we want is that when the CPU usage is zero, the LED must blink * slowly with very faint flashes that are detectable but not disturbing * (typically 10ms every second, or 10ms ON, 990ms OFF). Then we want * blinking frequency to increase up to the point where the load is * enough to saturate one core in multi-core systems or 50% in single * core systems. At this point it should reach 10 Hz with a 10/90 duty * cycle (10ms ON, 90ms OFF). After this point, the blinking frequency * remains stable (10 Hz) and only the duty cycle increases to report * the activity, up to the point where we have 90ms ON, 10ms OFF when * all cores are saturated. It's important that the LED never stays in * a steady state so that it's easy to distinguish an idle or saturated * machine from a hung one. * * This gives us : * - a target CPU usage of min(50%, 100%/#CPU) for a 10% duty cycle * (10ms ON, 90ms OFF) * - below target : * ON_ms = 10 * OFF_ms = 90 + (1 - usage/target) * 900 * - above target : * ON_ms = 10 + (usage-target)/(100%-target) * 80 * OFF_ms = 90 - (usage-target)/(100%-target) * 80 * * In order to keep a good responsiveness, we cap the sleep time to * 100 ms and keep track of the sleep time left. This allows us to * quickly change it if needed.
*/
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.