Tôi đang sử dụng Ubuntu 20.04. Tôi đang cố lấy IO và BlockIO cho quy trình postgres (và tất cả các phần tử con của nó).
`trạng thái systemctl [email protected]`
hiển thị bộ nhớ và thời gian CPU đã sử dụng, nhưng không IO:
[email protected] - Cụm PostgreSQL 14-chính
Đã tải: đã tải (/lib/systemd/system/[email protected]; enable-runtime; >
Đang hoạt động: đang hoạt động (đang chạy) kể từ Thứ Ba 2021-12-14 17:13:19 WET; 2 phút 21 giây trước
Quy trình: 1285 ExecStart=/usr/bin/pg_ctlcluster --skip-systemctl-redirect 14>
PID chính: 1395 (postgres)
Nhiệm vụ: 11 (giới hạn: 37513)
Bộ nhớ: 263,2M
CPU: 32.372s
Nhóm C: /system.slice/system-postgresql.slice/[email protected]
ââ1395 /usr/lib/postgresql/14/bin/postgres -D /var/lib/postgresql/>
ââ1442 postgres: 14/main: checkpointer
ââ1444 postgres: 14/main: người viết nền
ââ1445 postgres: 14/main: walwriter
ââ1446 postgres: 14/main: autovacuum launcher
ââ1447 postgres: 14/main: bộ sưu tập số liệu thống kê
ââ1448 postgres: 14/main: TimescaleDB Background Worker Launcher
ââ1449 postgres: 14/main: trình khởi chạy sao chép logic
ââ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>
Đầu tiên, tôi đã thử như sau:
- Dưới
/etc/systemd/system.conf
, tôi đặt tùy chọn Kế toán IO thành
Vâng:
DefaultIOAccounting=có
DefaultBlockIOAccounting=có
- và sau đó khởi động lại hệ thống.
Tuy nhiên, nó dường như không tạo ra sự khác biệt. IO không được hiển thị.
Sau đó, tôi đã thử systemctl --all --full show [email protected]
:
- Đầu ra thực sự hiển thị các giá trị cho I/O:
IOReadBytes=18446744073709551615
IOReadOperations=18446744073709551615
IOWriteBytes=18446744073709551615
IOWriteOperations=18446744073709551615
- Tuy nhiên, những giá trị này dường như không có ý nghĩa gì (dường như nằm trong vùng petabyte). Tôi đã không làm gì ngoài việc khởi động postgres. Điều này chắc chắn không thể tạo ra bất cứ nơi nào có nhiều IO như vậy. Hơn nữa, các giá trị cho lần đọc, ghi và thao tác đều giống hệt nhau, điều này có vẻ đáng ngờ.
- Các giá trị được hiển thị bởi
hệ thống hiển thị
đối với CPU và bộ nhớ giống hệt với các giá trị được hiển thị bằng cách sử dụng trạng thái hệ thống
chỉ huy. Vì vậy, không phải tất cả các giá trị đều nằm ngoài bảng xếp hạng.
Có cách nào để lấy IO của một dịch vụ cụ thể (ngay cả khi dịch vụ đó sử dụng nhiều quy trình) không?
Tôi đang tìm kiếm thứ gì đó đơn giản hơn là lặp qua proc/$pid/io
và thêm đọc/ghi cho từng quy trình liên quan.