Топ показывает 64% простоя на первом экране или в пакетном режиме, в то время как простоя нет вообще

Я использую довольно тяжелые вычисления на нескольких 4-х ядерных серверах, все из которых работают под управлением Ubuntu Precise Pangolin LTS 64 bit в облаке (так что я полагаю, в виртуализированной среде).

Чтобы контролировать использование процессора, я написал.sh, который использует "top -b -n 1" (то есть один запуск top, только первый "фрейм") и объединяет его с некоторыми другими данными, чтобы написать небольшой отчет.,

Однако top всегда сообщал о 64% ​​простоя в строке процессора для каждого сервера, даже если я был уверен, что все четыре ядра были заняты на 100%.

На самом деле, при интерактивном запуске top он сообщает о 64% ​​времени простоя, но как только он обновляет, он сообщает правильные (почти 0% бездействия) данные.

Кроме того, vmstat в столбце cpu всегда сообщает о 64% ​​времени простоя в первой строке, а затем начинает сообщать (предположительно) реальные данные.

Почему это? Это ошибка в top/vmstat или в ядре? Или это известный побочный эффект того, как измеряется CPU%? Почему всегда 64%?

Загрузка процессора вместо этого всегда правильная (около 4).

2 ответа

Это связано с тем, что top, vmstat, iostat при первом запуске собирают данные с момента последней перезагрузки системы.

И последующие итерации выполняются в указанный вами период выборки. Итак, при первом запуске top вы увидите% простоя, потому что с момента перезагрузки до времени запуска top было так много% простоя. Но на следующих итерациях, поскольку он занят, он не показывает% простоя.

Исключите первую итерацию и попробуйте выполнить выборку за нужный интервал.

Вы можете сделать это grepпропинговать строку, начинающуюся с "Cpu (s)" и передавая результат через tail,

top -b -n2 -d 0.1 |grep "Cpu(s)"|tail -n +1

tail -n +1 отбрасывает первую строку (плохие результаты) и пропускает только вторую. -d 0.1 означает задержку в одну десятую секунды между первой и второй итерацией top; -b -n2 означает запустить дважды в пакетном режиме. Окончательный результат этого - единственная строка, содержащая "хорошие" результаты, которые вы можете затем использовать в отчете.

Если вам нужны другие строки, кроме строки "Процессор (ы)", промойте и повторите для каждой из них.

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