Как рассчитать холостые циклы процессора?

Я хочу рассчитать холостые циклы процессора. Я попытался найти ответ на этот вопрос в Интернете. Но ответы не были удовлетворительными. Я запросил расчет циклов простоя ЦП, но ответы были об использовании ЦП / ЦП.

Подскажите пожалуйста, как рассчитать незанятые циклы ЦП для заданного интервала времени на языке c? Я работаю над алгоритмом установки скорости. Планирование снижения энергопотребления процессора.

idle_cycles = hard_idle + soft_idle;
run_cycles += excess_cycles;
run_percent = run_cycles /
(idle_cycles + run_cycles);
next_excess = run_cycles -
speed * (run_cycles + soft_idle)
IF excess_cycles < 0. THEN
excess_cycles = 0.
energy = (run_cycles - excess_cycles) *
speed * speed;
IF excess_cycles > idle_cycles THEN
newspeed = 1.0;
ELSEIF run_percent > 0.7 THEN
newspeed = speed + 0.2;
ELSEIF run_percent < 0.5 THEN
newspeed = speed -
(0.6 - run_percent);
IF newspeed > 1.0 THEN
newspeed = 1.0;
IF newspeed < min_speed THEN
newspeed = min_speed;
speed = newspeed;
excess_cycles = next_excess;

В этом алгоритме я наткнулся на термин idle_cycles, который я хочу вычислить с помощью c.

1 ответ

/proc/uptime переменный файл

Существует переменный файл, расположенный по адресу /proc/uptime, содержащий только два значения:

  1. Время работы в секундах

  2. Простой в секундах

Примечание: если вы используете более одного ядра, второе значение - это счетчик простоя против всех ядер.

Я написал демо, используя бесконечный HTML там:

или простой монитор:

Пожалуйста, rtfm: man proc

/proc/stat переменный файл

Первые строки в /proc/stat держите счетчики для процессора и каждого ядра.

head -n3 /proc/stat
cpu  1500160 13226 337809 16064648 1475420 34 16142 0 0 0
cpu0 747501 6569 168513 8022626 742061 25 14478 0 0 0
cpu1 752659 6656 169296 8042022 733359 9 1664 0 0 0

Где 4-й счетчик idle time counter,

в man proc:

man proc | sed  '/proc\/stat/,+19p;d'
   /proc/stat
          kernel/system statistics.   Varies  with  architecture.   Common
          entries include:

          cpu  3357 0 4313 1362393
                 The   amount  of  time,  measured  in  units  of  USER_HZ
                 (1/100ths  of  a  second  on  most   architectures,   use
                 sysconf(_SC_CLK_TCK) to obtain the right value), that the
                 system spent in various states:

                 user   (1) Time spent in user mode.

                 nice   (2) Time spent in  user  mode  with  low  priority
                        (nice).

                 system (3) Time spent in system mode.

                 idle   (4)  Time  spent  in  the  idle  task.  This value
                        should be USER_HZ times the second  entry  in  the
                        /proc/uptime pseudo-file.

Для этого есть еще один бесконечный HTML- скрипт:

Другие вопросы по тегам