linux / proc / loadavg


77

Khi phát hành lệnh này từ linux:

# cat /proc/loadavg
0.75 0.35 0.25 1/25 1747

2 số cuối là gì?

Số cuối cùng tiếp tục tăng 2 mỗi giây, tôi có nên lo lắng không?

Câu trả lời:


84

/ proc / loadavg

Ba trường đầu tiên trong tệp này là số liệu trung bình tải cho biết số lượng công việc trong hàng đợi chạy (trạng thái R) hoặc chờ I / O đĩa (trạng thái D) được tính trung bình trong 1, 5 và 15 phút . Chúng giống với số trung bình tải được đưa ra bởi thời gian hoạt động (1) và các chương trình khác.

Trường thứ tư bao gồm hai số được phân tách bằng dấu gạch chéo (/). Đầu tiên trong số này là số lượng thực thể lập lịch hạt nhân hiện đang thực thi (quy trình, luồng); điều này sẽ nhỏ hơn hoặc bằng số lượng CPU. Giá trị sau dấu gạch chéo là số lượng thực thể lập lịch hạt nhân hiện đang tồn tại trên hệ thống.

Trường thứ năm là PID của quá trình được tạo gần đây nhất trên hệ thống.


1
Người dùng nên tính đến các giá trị này trong khi chạy GNU makevới --load-average=N.Ntham số. Nếu makekhiến mức trung bình tải cao hơn số lõi CPU, makenên khởi động lại bằng cách --load-averagegiảm. Bằng cách này, hệ thống sẽ không bị quá tải bởi quá trình biên dịch.

2
Nếu hệ thống khởi động trước 5 phút, thì họ sẽ tính mức trung bình tải trong 15 phút như thế nào? Họ sẽ chỉ sử dụng dữ liệu 5 phút?
shafeeq

3
ít nhất trang thủ công hiện tại không chứa các từ "nhỏ hơn hoặc bằng số CPU" và nó nhiều hơn số cp khi bạn có nhiều quy trình có thể chạy hơn.
bạn bè

1
Trường thứ năm không như được mô tả trong câu trả lời: trên thực tế, đây là PID được cấp phát cuối cùng .
Mike Aski

20

Tôi muốn bình luận câu trả lời được chấp nhận.

Trường thứ tư bao gồm hai số được phân tách bằng dấu gạch chéo (/). Đầu tiên trong số này là số lượng thực thể lập lịch hạt nhân hiện đang thực thi (quy trình, luồng); điều này sẽ nhỏ hơn hoặc bằng số lượng CPU.

Tôi đã thực hiện một chương trình thử nghiệm đọc số nguyên N từ đầu vào và sau đó tạo N luồng và chạy chúng mãi mãi. Trên máy tính RHEL 6.5, tôi có 8 bộ xử lý và mỗi bộ xử lý có siêu phân luồng. Dù sao nếu tôi chạy thử nghiệm của mình và nó tạo ra 128 luồng, tôi thấy các giá trị trường thứ tư lớn hơn 128, ví dụ 135. Nó rõ ràng lớn hơn số CPU. Bài đăng này hỗ trợ quan sát của tôi: http://juliano.info/en/Blog:Memory_Leak/Undilities_the_Linux_load_average

Điều đáng chú ý là phần giải thích hiện tại trong trang hướng dẫn sử dụng (5) (kể từ trang hướng dẫn phiên bản 3.21, tháng 3 năm 2009) là sai. Nó báo cáo số đầu tiên của trường thứ tư là số thực thể lập lịch hiện đang thực thi và do đó dự đoán nó không thể lớn hơn số CPU. Điều đó không khớp với việc triển khai thực, trong đó giá trị này báo cáo số lượng luồng có thể chạy hiện tại.


5
Có thể xác nhận: kernel / Sched / core.c nr_running () tự mô tả là thu thập có thể chạy được thay vì các tác vụ đang chạy .
fche

14

Ba cột đầu tiên đo lường việc sử dụng CPU và I / O trong khoảng thời gian một, năm và 15 phút cuối cùng. Cột thứ tư hiển thị số lượng quy trình hiện đang chạy và tổng số quy trình. Cột cuối cùng hiển thị ID quy trình cuối cùng được sử dụng.

https://docs.fedoraproject.org/en-US/Fedora/17/html/System_Administrators_Guide/s2-proc-loadavg.html


6
Tôi phản đối mạnh mẽ định nghĩa này. Ba con số đầu tiên không đo lường trực tiếp việc sử dụng CPU và I / O , chúng là số lượng công việc trung bình trong hàng đợi chạy hoặc chờ I / O, như câu trả lời từ @auselen.
1,

2

Trang sau giải thích chi tiết những điều này:

http://www.brendangregg.com/blog/2017-08-08/linux-load-a Average.html

Tôi đang giải thích những con số này mà tôi nhận được từ trang trên như sau:

  • Nếu giá trị trung bình là 0,0, thì hệ thống của bạn không hoạt động.
  • Nếu mức trung bình 1 phút cao hơn mức trung bình 5 hoặc 15 phút, thì tải đang tăng.
  • Nếu mức trung bình 1 phút thấp hơn mức trung bình 5 hoặc 15 phút, thì tải đang giảm. Nếu chúng cao hơn số lượng CPU của bạn, thì bạn có thể gặp vấn đề về hiệu suất (tùy thuộc).
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.