Tải trung bình có nghĩa là gì trên Unix / Linux?


68

Nếu tôi chạy uptime, tôi nhận được một cái gì đó như thế này:

10:50:30 up 366 days, 23:27,  1 user,  load average: 1.27, 2.06, 1.54

Những con số trên cuối có nghĩa là gì? Trang hướng dẫn cho tôi biết đó là "mức trung bình tải của hệ thống trong 1, 5 và 15 phút qua." Nhưng quy mô là gì? Là 1,27 cao? Thấp? Có phụ thuộc vào hệ thống của tôi?


2
Tôi tự hỏi làm thế nào trung bình tải nên được giải thích trên một hệ thống CPU đa lõi.
nagul

3
Theo nguyên tắc chung, bạn nên chia trung bình tải cho số lượng CPU cho các hệ thống đa lõi. Vì vậy, tải 2.0 trên hệ thống lõi kép gần tương đương với 1.0 trên hệ thống lõi đơn. Điều này không hoàn toàn đúng, bởi vì những thứ như I / O của đĩa và hệ số mạng, nhưng tải là loại ước tính bất khả thi.
Mike Cooper

1
Tôi thấy blog này thực sự hữu ích: Tìm hiểu về tải CPU của Linux
vào

Câu trả lời:


59

Tải trung bình là thước đo xem có bao nhiêu quá trình trung bình, đồng thời đòi hỏi sự chú ý của CPU.

Nói chung, nếu bạn có một quy trình hoạt động ở mức 100% và nó chỉ diễn ra như vậy mãi mãi, bạn có thể mong đợi tất cả các giá trị tiếp cận '1'.

Nói chung, đây là tính toán hiệu quả như bạn có thể nhận được, không bị mất do chuyển đổi ngữ cảnh.

Tuy nhiên, trên các hệ điều hành đa nhiệm hiện đại, có nhiều thứ cần sự chú ý của CPU, do đó, trong một lượng tải vừa phải từ một quy trình, tải trung bình sẽ dao động trong khoảng từ 0,8 đến 2.

Nếu bạn quyết định làm điều gì đó điên rồ, như xây dựng kernel make -j 60, mặc dù chỉ có một bộ xử lý logic, thì tải trung bình sẽ tăng lên 60 và máy tính của bạn sẽ vô dụng với bạn (chết vì chuyển đổi ngữ cảnh).

Cũng cần lưu ý, số liệu này không phân biệt có bao nhiêu lõi / CPU. Đối với hệ thống hai lõi, chạy một quy trình tiêu thụ toàn bộ lõi (để không hoạt động khác) dẫn đến trung bình tải là 1.0. Để quyết định mức độ tải của một hệ thống, bạn sẽ cần biết số lượng lõi và tự mình thực hiện việc phân chia.


1
Vì vậy, trung bình tải dưới 1 có nghĩa là "Các quy trình thường không bao giờ phải chờ"? Tôi có thể diễn giải trung bình tải là 2 là "Mỗi quá trình mất khoảng gấp đôi thời gian trong điều kiện lý tưởng" không? (Tôi biết rằng cũng có I / O để lo lắng)
John Fouhy

Vâng, điều đó có ý nghĩa, bỏ qua IO đó là;)
Kent Fredric

@KentFredric "Nói chung, đây là tính toán hiệu quả như bạn có thể nhận được, không bị tổn thất do chuyển đổi ngữ cảnh." ... 1 quá trình có hoạt động hiệu quả 100% không? Chắc chắn tôi đang thiếu một cái gì đó cơ bản ở đây. Bạn có thể vui lòng giải thích những gì bạn có ý nghĩa? Tôi bối rối vì làm thế nào một quá trình có thể ăn cắp tất cả các tài nguyên cpu được mô tả là hiệu quả?
Geek

2
Tôi biết một quy trình chạy ở mức 100% không có vẻ rất "hiệu quả", nhưng nếu quá trình đó tự ý giới hạn chỉ sử dụng 20%, thì sẽ mất gấp 5 lần. Vì vậy, ở đây hiệu quả có nghĩa là "sử dụng tài nguyên tối ưu".
Kent Fredric

1
Vì vậy, đối với một hệ thống n-cored, trung bình tải của n có nghĩa là mỗi lõi đang / đang xử lý một quá trình 100% thời gian và do đó có hiệu quả nhất?
joshreesjones

9

người đàn ông 5 Proc:

/ Proc / loadavg Ba trường đầu tiên trong tệp này là các số liệu trung bình tải cho số lượng công việc trong hàng đợi chạy (trạng thái R) hoặc chờ đĩa I / O (trạng thái D) trung bình trên 1, 5 và 15 phút . Chúng giống như các 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.


3

Nói chung, nó đo số lượng các quy trình hoạt động tại một thời điểm nhất định, nhưng các số liệu được sử dụng để tính toán nó khác nhau trên một số hệ thống. Bài viết duy nhất tôi thấy giải thích nó khá tốt là bài này .


2
Liên kết đó là ngày '03. Linux 2.6 ra đời từ đó. (Bạn sẽ lưu ý rằng họ đang sử dụng 2.0, Ouch.) Các số liệu dường như bây giờ hơi khác so với thực tế so với các số liệu được nêu trên trang đó.
Kent Fredric

Đây là một từ cuối '06, không khác với bài viết được liên kết: linuxjournal.com/article/9001
nagul

Liên kết của bạn vẫn hoạt động và đầu ra thiết bị đầu cuối của họ là từ năm 2001 😂 Thật tuyệt vời
MS Berends

2

Tôi trích dẫn từ một tài liệu tham khảo của một khóa học:

Tải trung bình là trung bình của số tải trong một khoảng thời gian nhất định. Nó đưa vào các quy trình tài khoản đó là:

  • Tích cực chạy trên CPU.
  • Được coi là có thể chạy được, nhưng chờ CPU có sẵn.
  • Ngủ: tức là chờ đợi một loại tài nguyên (thông thường, I / O) có sẵn.

Tôi trích dẫn thêm về diễn giải trung bình tải :

Trung bình tải được hiển thị bằng ba bộ số khác nhau, như trong ví dụ sau:

Phần cuối cùng của thông tin là tải trung bình của hệ thống. Giả sử hệ thống của chúng tôi là một hệ thống CPU đơn, 0,25 có nghĩa là trung bình trong một phút qua, hệ thống đã được sử dụng 25%. 0,12 ở vị trí tiếp theo có nghĩa là trong 5 phút qua, trung bình, hệ thống đã được sử dụng 12%; và 0,15 ở vị trí cuối cùng có nghĩa là trung bình trong 15 phút qua, hệ thống đã được sử dụng 15%. Nếu chúng ta thấy giá trị 1,00 ở vị trí thứ hai, điều đó có nghĩa là hệ thống CPU đơn được sử dụng 100%, trung bình, trong 5 phút qua; Điều này là tốt nếu chúng ta muốn sử dụng đầy đủ một hệ thống. Giá trị trên 1,00 cho một hệ thống CPU đơn ngụ ý rằng hệ thống đã được sử dụng quá mức: có nhiều quá trình cần CPU hơn CPU có sẵn.

Nếu chúng ta có nhiều CPU, giả sử hệ thống bốn CPU, chúng ta sẽ chia số lượng trung bình tải cho số lượng CPU. Trong trường hợp này, ví dụ, nhìn thấy trung bình tải 1 phút là 4,00 ngụ ý rằng toàn bộ hệ thống được sử dụng 100% (4,00 / 4) trong phút cuối.

Tăng ngắn hạn thường không phải là một vấn đề. Một đỉnh cao mà bạn thấy có khả năng là một sự bùng nổ của hoạt động, không phải là một cấp độ mới. Ví dụ, khi khởi động, nhiều quá trình bắt đầu và sau đó hoạt động lắng xuống. Nếu một đỉnh cao được nhìn thấy trong các mức trung bình tải 5 và 15 phút, nó có thể gây lo ngại.


Sẽ rất hữu ích khi thêm một liên kết đến tài liệu tham khảo của bạn.
Bến tàu

Điều đó thật khó khăn. Đây là một khóa học trực tuyến từ Quỹ Linux để chuẩn bị cho kỳ thi LFCS.
Ely
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.