В Linux есть значение procs_running в / proc / stat
, которое показывает количество запущенных процессов (потоков) .
Вопрос в том, включает ли это значение текущий процесс, который запрашивает procfs, или нет?
В абсолютно незанятой системе следует ожидать, что значение будет 0 или 1?
После небольшого тестирования похоже, что это ВКЛЮЧАЕТ процесс, выполняющий запрос. Таким образом, возможно, vmstat вычитает 1 из числа активных процессов, чтобы показать реальную загрузку системы
Включает ли поле
procs_running
в/ proc / stat
текущий процесс, который запрашивает procfs?
Да, включает. Псевдофайл / proc / stat
создается в fs / proc / stat.c
в ядре Linux путем вызова nr_running ()
.
Функция nr_running ()
определена в kernel / sched / core.c
, которая просто суммирует все счетчики процессов для каждого процессора. Текущий процесс здесь не обрабатывается каким-либо особым образом, поэтому он включается в подсчет.
Должны ли мы ожидать, что в абсолютно незанятой системе значение будет 0 или 1?
Поскольку процесс должен читать псевдофайл, чтобы ядро сгенерировало содержимое, и такой процесс всегда подсчитывается функцией ядра nr_running ()
, мы всегда должны ожидать, что он будет не меньше 1.