Folosesc Ubuntu 20.04. Încerc să obțin IO și BlockIO pentru procesul postgres (și toți copiii acestuia).
`statut systemctl [email protected]`
arată memoria și timpul CPU utilizat, dar nu IO:
[email protected] - PostgreSQL Cluster 14-main
Încărcat: încărcat (/lib/systemd/system/[email protected]; enabled-runtime; >
Activ: activ (alergare) din Mar 2021-12-14 17:13:19 WET; acum 2 min 21 s
Proces: 1285 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 14>
PID principal: 1395 (postgres)
Sarcini: 11 (limită: 37513)
Memorie: 263,2 M
CPU: 32.372s
CGroup: /system.slice/system-postgresql.slice/[email protected]
ââ1395 /usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/>
ââ1442 postgres: 14/principal: punct de control
ââ1444 postgres: 14/principal: scriitor de fundal
ââ1445 postgres: 14/principal: walwriter
ââ1446 postgres: 14/principal: lansator de autovacuum
ââ1447 postgres: 14/principal: colector de statistici
ââ1448 postgres: 14/principal: TimescaleDB Fund Worker Launcher
ââ1449 postgres: 14/principal: lansator de replicare logica
ââ1450 postgres: 14/principal: TimescaleDB Background Worker Scheduler
ââ1453 postgres: 14/principal: TimescaleDB Background Worker Scheduler
ââ5990 postgres: 14/principal: postgres tsenergydata 127.0.0.1(55312) I>
Mai întâi, am încercat următoarele:
- Sub
/etc/systemd/system.conf
, am setat opțiunile IO Accounting la
da:
DefaultIOAccounting=da
DefaultBlockIOAccounting=da
- și apoi reporniți sistemul.
Cu toate acestea, nu pare să facă o diferență. IO nu este afișat.
Apoi, am încercat systemctl --all --full show [email protected]
:
- Ieșirea arată de fapt valori pentru I/O:
IOReadBytes=18446744073709551615
IOReadOperations=18446744073709551615
IOWriteBytes=18446744073709551615
IOWriteOperations=18446744073709551615
- Cu toate acestea, aceste valori nu par să aibă niciun sens (pare să fie în regiunea petabyte). Nu am făcut altceva decât să pornesc postgres. Acest lucru nu poate genera nicăieri atât de mult IO, cu siguranță. Mai mult, valorile pentru citiri, scrieri și operații sunt toate identice, ceea ce pare suspect.
- Valorile indicate de
show systemctl
pentru CPU și memorie sunt identice cu valorile afișate folosind starea systemctl
comanda. Deci nu toate valorile sunt în afara graficelor.
Există o modalitate de a obține IO-ul unui anumit serviciu (chiar dacă acel serviciu folosește mai multe procese)?
Caut ceva mai simplu decât să fac bucla proc/$pid/io
și adunarea citirilor/scrierilor pentru fiecare proces asociat.