Глава 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 — Анализ контейнеров