Linux /proc/PID/stat
списки несколько метрик, которые измеряются в миге. Существует ли способ получить текущий # мига начиная с перезагрузки? Миг я также принимаю, чтобы быть временами секунд значение USER_HZ.
Я могу получить это путем подведения итогов первых 4 аргументов на cpu
строка в /proc/stat
?
ОБНОВЛЕНИЕ:
$ date +"%s.%N" && grep '^jiffies' timer_list
1262103103.162169230
jiffies: 1007865965
jiffies: 1007865965
jiffies: 1007865965
jiffies: 1007865965
$ date +"%s.%N" && grep '^jiffies' timer_list
1262103108.706475051
jiffies: 1007867351
jiffies: 1007867351
jiffies: 1007867351
jiffies: 1007867351
Дельта между ними является почти точно 250 мигом / второй. Появляется, как будто все строки мига на ЦП эквивалентны (хотя я предполагаю, что они не могли бы быть то, если бы горячее | ondemand ЦП было настроено/заменено). Я думаю, что это дает мне лучшее место для получения по запросу последовательного счетчика мига.
Технически миг в компьютерном языке является продолжительностью 1 галочки системного прерывания по таймеру. Это не абсолютно все же. Для Linux 2.6.13 + на миге Intel x86 4 мс, но могут колебаться от 1 мс до 10 мс в зависимости от версии ядра и архитектуры.
От страницы Kernel Timer Systems:
Исторически, ядро использовало 100 в качестве значения для Гц, приводя к интервалу мига 10 мс. С 2,4, значение Гц для i386 было изменено на 1 000, приведя к интервалу мига 1 мс. Недавно (2.6.13) ядро изменило Гц для i386 к 250. (1000 считался слишком высоким).
Это перечисляет /proc/timer_list
и /proc/timer_stats
.
Можно активировать timer_stats во время начальной загрузки, затем кошка этот файл для печати статистики.
Нет, Вам только нужна первая строка. Первая строка агрегировала все остальное в других строках CPU.
Пример произвел:
[john@awesome]$cat /proc/stat cpu 35024984 1771325 94153391 1810948613 2648063 352387 557232 cpu0 13955475 927654 59431476 895791946 1910028 318618 438048 cpu1 21069509 843671 34721915 915156667 738035 33769 119184 intr 1403502159 1138402452 597 0 3 3 0 5 0 1 0 0 0 12315 0 92119425 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 57676632 0 0 0 0 0 0 0 115290726 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 21043582666 btime 1252332786 processes 25663823 procs_running 1 procs_blocked 0
Что каждый столбец означает (слева направо):
как Вы видите, первый столбец после того, как CPU (процессы непривилегированного режима) будет равен этим 2 числам под добавленным вместе.
миг в секунду:
awk 'BEGIN {"cat /proc/timer_list | grep '\''^jiffies'\'' | awk '\''{print $2}'\''" | getline a; "cat /proc/uptime | awk '\''{print $1}'\''" | getline b ;printf "%.4f\n", a/b}'
Объяснение: Это делит миг, так как начальная загрузка нашла в/proc/timer_list к секундам, так как начальная загрузка нашла в/proc/uptime