Làm cách nào tôi có thể biết quy trình nào gây ra tải cao nếu chúng không sử dụng cpu cao?


12

Đôi khi các máy chủ của tôi sẽ hiển thị mức trung bình tải cao trong chương trình "hàng đầu" (ví dụ tải là ~ 10 trên máy 4 lõi), nhưng mức sử dụng CPU thực tế không đặc biệt cao.

Tôi giả sử vấn đề là có nhiều công việc chuyên sâu I / O đang chạy. Có cách nào dễ dàng để xác định các công việc này đang gây ra tải không, nếu giá trị "% CPU" của chúng ở mức cao nhất không?


Bạn có thể dán vùng tóm tắt mà bạn thấy khi bạn chạy toplệnh không?
mfriedman

Câu trả lời:


7

iostatCó thể báo cáo thống kê như thế. Thường được bao gồm trong distro của bạn trong gói sysstat.

dstat cũng có thể đáng xem, đó là một sự thay thế hiện đại.


+1 vì iostatsẽ là câu trả lời của tôi .
Ernie

4

Nếu bạn có kế toán IO trong kernel, thì bạn có thể sử dụng iotopđể cung cấp thông tin như thế. Ngoài ra, các công cụ giám sát như colld có thể ghi lại và báo cáo dữ liệu.


4

Để tìm những gì gây ra tải cao, bạn có thể kiểm tra vài thứ.

  • vmstat -w sẽ hiển thị cho bạn ovierwiem (quy trình, trao đổi, mem, cpu, io, hệ thống)
  • pmstat -P ALL sẽ cung cấp cho bạn số liệu thống kê (với% iowait) trên mỗi lõi cpu
  • iostat -x tìm kiếm% cao sử dụng hoặc chờ đợi lâu hoặc kích thước hàng đợi trung bình lớn
    • đào sâu hơn với iotop
  • ps -ax tìm trạng thái D là giấc ngủ không bị gián đoạn (thường là IO), chạy lại kiểm tra thêm một lần nữa nếu chúng vẫn ở trạng thái D
    • đào sâu hơn với bước đi
    • kiểm tra các tập tin và kết nối của các quá trình đó với lsof và netstat
  • sar / sysstat - với công cụ đó, bạn có thể khám phá không chỉ các số liệu thống kê "bây giờ" mà còn kiểm tra những gì đang xảy ra vào lúc nửa đêm
    • sar -b - hoạt động tổng thể của io
    • sar -d - hoạt động khối io thiết bị cá nhân
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.