Điểm:1

trạng thái systemctl không hiển thị (khối) IO, systemctl show hiển thị các giá trị không hợp lệ cho IO

lá cờ mv

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:

  1. 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ó

  1. 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.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.