Как я могу отобразить точный расчет использования процессора в процентах - PullRequest
1 голос
/ 07 марта 2020

Я знаю, что этот вопрос задавался много раз, но, к сожалению, ни один из приведенных ответов не работает для того, что мне нужно.

Кажется, что все рекомендуют /proc/stat, однако я не могу найдите 1 ответ, который работает, как и ожидалось:

, как вы можете видеть здесь, отчеты по ядру 0 используются на 16%, хотя фактически они используются только на 3%, на самом деле не имеет значения, если это 100%, он по-прежнему сообщает о 16% с увеличением только на 0,01% -0,02%

Я также протестировал другой подход только с $2+$4 +$5, а не со всем диапазоном, но даже этот результат дал неточные результаты ...

Как мониторы ЦП, как и приведенный выше график, получают свою информацию ??
, потому что она не проходит через /proc/stat, если все не делают что-то не так.

Заметные ресурсы:

Я просмотрел гораздо больше, но все они в значительной степени указывают на одно и то же.

Что касается сценария, я знаю, что он немного грязный, я не работаю с bash много, но вот оно:

#!/bin/bash
H=($(awk '/MHz/{printf "%.2fGHz|", $4/1000}' /proc/cpuinfo))
A=($(awk 'FNR>1 && FNR<4 {
    i=$5+$6; printf "%d|%d\n", i, i+$2+$3+$4+$7+$8+$9
}' /proc/stat))
sleep 0.125
awk -v a="${A[*]}" -v h="${H[*]}" -v n="0" 'FNR>1 && FNR<4 {
    n++
    split(h,s,"|"); split(a,p,"|")
    i=$5+$6; t=(i+$2+$3+$4+$7+$8+$9)-p[n,1]
    printf "%s: %s %.2f%\n", $1, s[n], ((t-(i-p[n,0]))/t)*100
}' /proc/stat

в значительной степени все это следовало из других ответов ...

Если есть лучший способ сделать что-либо из этого (например, объединение cpuinfo с stat, или необязательное разделение массива, чтобы исключить s[n] сообщение о скалярной ошибке, или даже спящий и перечитывание в awk), во что бы то ни стало, пожалуйста, улучшите. :)

...