Перейти к содержанию

Глава 6: Анализ процессов

Обзор

ProcessCollector идентифицирует Top-20 потребителей CPU и памяти, используя двухточечное сэмплирование /proc/[pid]/stat.

Функции

Функция Что делает
readAllPIDs() Итерация по /proc/[pid]/
readProcPID() Парсит comm, state, utime, stime, rss, threads, fds
getTotalMemory() Получает MemTotal для вычисления процент

Трюк с парсингом скобок

/proc/[pid]/stat содержит имя команды в круглых скобках. Имя может содержать пробелы и скобки: (Web Content). Нужно найти ПОСЛЕДНЮЮ ) чтобы корректно парсить остальные поля.

Состояния процессов

Состояние Символ Значение
Running R Выполняется или в очереди
Sleeping S Прерываемый сон — ждёт события
Disk Sleep D Непрерываемый сон — ждёт I/O
Zombie Z Завершился, но parent не вызвал wait()

Файловые дескрипторы

Кол-во FD Оценка
< 100 Норма
1000-10000 Высоко — проверить утечки
> 10000 Вероятна утечка FD

Далее: Глава 7 — Анализ контейнеров