Я использую Убунту 20.04. Я пытаюсь получить IO и BlockIO для процесса postgres (и всех его дочерних элементов).
`статус systemctl [email protected]`
показывает используемое время памяти и процессора, но не ИО:
[email protected] — кластер PostgreSQL 14-основной
Загружено: загружено (/lib/systemd/system/[email protected]; enable-runtime; >
Активно: активно (работает) с Вт 2021-12-14 17:13:19 WET; 2мин 21с назад
Процесс: 1285 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 14>
Основной PID: 1395 (постгрес)
Заданий: 11 (лимит: 37513)
Память: 263,2 Мб
ЦП: 32,372 с
CGroup: /system.slice/system-postgresql.slice/[email protected]
ââ1395 /usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/>
ââ1442 postgres: 14/main: контрольная точка
ââ1444 postgres: 14/main: фоновый писатель
ââ1445 postgres: 14/main: walwriter
ââ1446 postgres: 14/main: автовакуумный лаунчер
ââ1447 postgres: 14/main: сборщик статистики
ââ1448 postgres: 14/main: TimescaleDB Background Worker Launcher
ââ1449 postgres: 14/main: средство запуска логической репликации
ââ1450 postgres: 14/main: TimescaleDB Background Worker Scheduler
ââ1453 postgres: 14/main: TimescaleDB Background Worker Scheduler
ââ5990 postgres: 14/main: postgres tsenergydata 127.0.0.1(55312) I>
Сначала я попробовал следующее:
- Под
/etc/systemd/system.conf
, я установил для параметров учета ввода-вывода значение
да:
DefaultIOAccounting=да
DefaultBlockIOAccounting=да
- а затем перезагрузите систему.
Однако, похоже, это не имеет значения. ИО не отображается.
Затем я попытался systemctl --all --full показать [email protected]
:
- Вывод действительно показывает значения для ввода-вывода:
IReadBytes=18446744073709551615
IReadOperations=18446744073709551615
IOWriteBytes=18446744073709551615
IOWriteOperations=18446744073709551615
- Однако эти значения, похоже, не имеют никакого смысла (кажется, в районе петабайт). Я ничего не сделал, кроме запуска postgres. Конечно, это не может генерировать так много операций ввода-вывода. Более того, значения для чтения, записи и операций идентичны, что кажется подозрительным.
- Значения, показанные
systemctl показать
для ЦП и памяти идентичны значениям, показанным с помощью статус systemctl
команда. Так что не все значения зашкаливают.
Есть ли способ получить ввод-вывод конкретной службы (даже если эта служба использует несколько процессов)?
Я ищу что-то более простое, чем цикл proc/$pid/io
и суммирование операций чтения/записи для каждого связанного процесса.