Я использую squeeze DomU на xen 4.0.1, который полностью выгружен. Я замечаю разницу в состояниях процессора между iostat и top, например:
верх (в каждом итэре):
Cpu0 : 0.2%us, 2.0%sy, 0.0%ni, 94.2%id, 2.7%wa, 0.0%hi, 0.0%si, 0.9%st
iostat -x 3 (первый iter):
avg-cpu: %user %nice %system %iowait %steal %idle
0.19 0.00 1.98 2.69 0.88 94.26
iostat -x 3 (последующие итоги):
avg-cpu: %user %nice %system %iowait %steal %idle
0.00 0.00 0.00 0.00 0.00 100.00
Прав ли я, если предполагаю, что top показывает мне накопленные проценты, а не разницу между итерацией сейчас и сейчас-1? Я знаю, что top понимает кумулятивный режим, но он отключен для меня и должен влиять только на отображение процесса, а не на статистику состояния процессора.
Ошибка? Может быть, Xen имеет отношение?
С уважением
Тим
top
, vmstat
(и другие подобные xstat
s вы можете использовать) получить их информацию из /proc/stat
Попробуйте перехватить этот виртуальный файл, вы увидите счетчики для ЦП в целом, плюс по одной строке для каждого аппаратного потока и некоторые другие счетчики прерываний.
Цифры, которые вы видите для ЦП, - это номера ядер. миг что прошло так как система загрузилась в различных государствах.
В то время как первая итерация vmstat
просто покажет вам относительные проценты, основанные на одном чтении этих счетчиков (которое, как вы говорите, основано на совокупных счетах), top фактически опрашивает счетчики дважды в течение примерно 0,5 секунды, прежде чем вы увидите начальное отображение, поэтому ( возможно, это немного неточно) первое, что вы увидите, - это чтение текущих соотношений.
Для подтверждения попробуйте запустить: strace -e open top |grep "/proc/stat"
и вы увидите два быстрых прочтения большей части /proc/
, за которым следует одно последующее чтение за такт. Вот почему вы всегда получаете небольшую задержку до появления вершины.
Насколько мне известно, в ядре нет регистров, отслеживающих дельты для немедленного доступа программ пользовательского пространства. Он подходит для средней нагрузки, поддерживая три скользящих средних количества «запущенных» процессов в разные интервалы времени; но ничего подобного по загрузке ЦП.
Итак: не баг, а по дизайну.