ฉันใช้ Ubuntu 20.04 ฉันกำลังพยายามรับ IO และ BlockIO สำหรับกระบวนการ postgres (และลูกของมันทั้งหมด)
`สถานะ systemctl [email protected]`
แสดงหน่วยความจำและเวลา CPU ที่ใช้ แต่ไม่ใช่ IO:
[email protected] - PostgreSQL Cluster 14-main
โหลดแล้ว: โหลดแล้ว (/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 (postgres)
งาน: 11 (จำกัด: 37513)
หน่วยความจำ: 263.2M
ซีพียู: 32.372 วินาที
CGroup: /system.slice/system-postgresql.slice/[email protected]
ââ1395 /usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/>
ââ1442 postgres: 14/หลัก: ด่าน
ââ1444 postgres: 14/หลัก: ผู้เขียนพื้นหลัง
ââ1445 postgres: 14/หลัก: walwriter
ââ1446 postgres: 14/หลัก: ตัวเปิดสูญญากาศอัตโนมัติ
ââ1447 postgres: 14/หลัก: ตัวรวบรวมสถิติ
ââ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
ฉันตั้งค่าตัวเลือกบัญชี IO เป็น
ใช่:
DefaultIOAccounting=ใช่
DefaultBlockIOAccounting=ใช่
- แล้วรีบูตระบบ
อย่างไรก็ตาม ดูเหมือนจะไม่สร้างความแตกต่าง IO ไม่แสดง
จากนั้นฉันก็พยายามแล้ว systemctl --all --full แสดง [email protected]
:
- ผลลัพธ์จริง ๆ แล้วแสดงค่าสำหรับ I/O:
IOReadBytes=18446744073709551615
IOReadOperations=18446744073709551615
IOWriteBytes=18446744073709551615
IOWriteOperations=18446744073709551615
- อย่างไรก็ตาม ค่าเหล่านี้ดูเหมือนจะไม่สมเหตุสมผล (ดูเหมือนจะอยู่ในพื้นที่เพตะไบต์) ฉันไม่ได้ทำอะไรนอกจากเริ่มต้น postgres สิ่งนี้ไม่สามารถสร้างได้ทุกที่ใกล้กับ IO มากอย่างแน่นอน ยิ่งไปกว่านั้น ค่าสำหรับการอ่าน การเขียน และการดำเนินการนั้นเหมือนกันหมด ซึ่งดูน่าสงสัย
- ค่าที่แสดงโดย
แสดง systemctl
สำหรับ CPU และหน่วยความจำจะเหมือนกันกับค่าที่แสดงโดยใช้ สถานะ systemctl
สั่งการ. ดังนั้นค่าทั้งหมดจึงไม่อยู่ในแผนภูมิ
มีวิธีรับ IO ของบริการเฉพาะ (แม้ว่าบริการนั้นจะใช้หลายกระบวนการ) หรือไม่
ฉันกำลังมองหาสิ่งที่ตรงไปตรงมามากกว่าการวนซ้ำ proc/$pid/io
และเพิ่มการอ่าน/เขียนสำหรับแต่ละกระบวนการที่เกี่ยวข้อง