Возможно ли получить текущую загрузку процессора от конкретного ядра через / sys в Linux? - PullRequest
0 голосов
/ 06 октября 2019

Я хотел бы написать сценарий оболочки, который считывает текущую загрузку ЦП для каждого ядра. Можно ли прочитать это из каталога /sys в Linux (CentOS 8)? Я нашел /sys/bus/cpu/drivers/processor/cpu0, который дает мне достаточно информации (например, текущую частоту), но мне еще предстоит выяснить, как читать загрузку процессора.

Другими словами: существует ли файл, который дает мне информацию о текущем использовании определенного ядра процессора в Linux, в частности, CentOS 8?

1 Ответ

2 голосов
/ 06 октября 2019

Я считаю, что вы должны иметь возможность извлекать информацию из / proc / stat - строки, начинающиеся с cpu $ N, где $ N - 0, 1, 2, ...... Например:

Настоятельно рекомендуем прочитать статьи, на которые есть ссылки в другом ответе.

cpu0 101840 1 92875 80508446 4038 0 4562 0 0 0
cpu1 81264 0 68829 80842548 4424 0 2902 0 0 0

При повторном вызове будут показаны большие значения:

cpu  183357 1 162020 161382289 8463 0 7470 0 0 0
cpu0 102003 1 93061 80523961 4038 0 4565 0 0 0
cpu1 81354 0 68958 80858328 4424 0 2905 0 0 0

Обратите внимание, что CPU0 5-й столбец (число пустых) перемещается с 80508446 на 80523961

Формат каждой строки в

cpuN время пользовательского времени системное время простоя io-wait ireq softirq steal guest guest_nice

Итак, основное решение:

while true ;

   for each cpu
       read current counters, at least user-time system-time and idle 
       usage = current(user-time + system-time) - prev(user-time+system-time)
       idle = current(idle) - prev(idle)
       utilization = usage/(usage+idle)
       // print or whatever.
       set prev=current
done
...