Как посмотреть загрузку цпу?

Привет!

Я смотрю как-то так
tmp0=0; for i in `seq 20`; do tmp1=$(cat /proc/stat | head -2 | tail -1 | sed 's/cpu0 //;s/ /\n/' | head -1); rez=$(($tmp1 - $tmp0)); echo $rez; tmp0=$tmp1; sleep 1; done

Вопрос: Как часто обновляется /proc/stat?
Иными словами, какое значаение sleep самое адекватное?

Хочу сделать минималистичный статус бар у себя в dwm, т.е. мне нужно на Си как-то узнать загрузку ядра. Пока что планируется с интервалом в секунду парсить /proc/stat, находить разность, и умножать её на некий коэффициент..
Весь вопрос в том, каким должен быть этот коэффициент. С слипом в 1 секунду, у меня получаются значения где-то на 5-10% больше чем у top.

Впрочем все мы знаем, что top, что htop, показывают разное “среднее по больнице”.
Какой самый точный способ измерения загрузки цпу?
https://fastenv.ru
не знаю про Си, но вот как сейчас на шелле слямзал (взял с wmfs новый, так старый никак найти не могу) для wmfs2 бара.
может что подойдет. (не точно, но достаточно близко к правде, чтобы пользоваться)
cpu="$(eval $(awk '/^cpu /{print "previdle=" $5 "; prevtotal=" $2+$3+$4+$5 }' /proc/stat); sleep 0.4;
                eval $(awk '/^cpu /{print "idle=" $5 "; total=" $2+$3+$4+$5 }' /proc/stat);
                intervaltotal=$((total-${prevtotal:-0}));
                echo "$((100*( (intervaltotal) - ($idle-${previdle:-0}) ) / (intervaltotal) ))")"
echo "$cpu"
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
sleepycat, у меня со слипом в 0.4 будут одни нули, 99% времени. В принципе, оно конечно отображает - что ничего не грузится и всё ок, но эстетически хотелось бы видеть там какие-то небольшие, но значения. По-этому интервал обновления надо брать достаточно большой. У меня даже с секундой на 20 замерах, половина нулей.
Эмпирически, во время пересборки, пришел к выводу что самое адекватное значение sleep 0.95. Надежда этого поста в том, что придёт кто-то умный и скажет “абсолюнтно точное значение = ”. Скажет это из какиех-то принципиальных соображений. Например он будет знать, где логика этого файла реализована. Или как ядро “для себя” считает эти значения итд..

На Си это добро будет выглядеть еще проще.

За скрипт спасибо. Не знаю я awk, всё чаще и чаще это “сковывает”. Буду разбираться.
https://fastenv.ru
не буду рекламировать, но мне показалось что оно шустрее пашет нежели sed. Опять же только там, где можно обойтись без сед.
Да, то что я дал (из скипта) у меня пашет, видел и 80% работая в браузере, 0 тоже вижу, но редко. Но я так и думал, что Вы глянете на слип))) Это нормально, что у Вас не подходит, я это и ожидал. Просто дал , что было.
Лозунг у них был такой: "Познание бесконечности требует бесконечного времени". С этим я не спорил, но они делали из этого неожиданный вывод: "А потому работай не работай — все едино". И в интересах неувеличения энтропии Вселенной они не работали. (с)
Всё-таки это нетривильный вопрос.

sleepycat дал значение 0.4. У меня адекватное 0.95.
Стоит ли говорить, что у меня на работе, как 0.4, так и 0.95 совершенно не подходят :-) И тем не менее, top работает “корректно” на всех машинах. Судя по strace top парсит /proc/stat. Значит он из каких-то соображений, подбирает коэффициент.

Какой физический смысл имеют значения в /proc/stat ???
https://fastenv.ru
 
Зарегистрироваться или войдите чтобы оставить сообщение.