Làm thế nào một trung bình tải 0,00 tồn tại?


12

Tôi hiểu rằng cân bằng tải là cách đo mức độ bận rộn của CPU. Tuy nhiên, tôi không hiểu làm thế nào trung bình tải 0.00có thể tồn tại. Không phải kernel luôn chạy sao? Nó không phải là một phần của tải CPU?


6
Lưu ý rằng trong phần lớn các trường hợp, những gì bạn thấy là 0,00 thực sự là 0,0001 hoặc hơn
PlasmaHH

1
Ngày xưa, nó là chiều dài trung bình của hàng đợi chạy. Nói cách khác, có bao nhiêu quy trình đã sẵn sàng để thực thi (và không chờ I / O, v.v.). Nếu không có thì nó là 0,00. Ngày nay, đây chỉ là kinh nghiệm của tôi nếu bạn không chạy máy tính để bàn đồ họa mà chỉ là máy chủ không có GUI.
Thorbjørn Ravn Andersen

Nói một cách chính xác, tôi nghĩ rằng đó là một trong những BSD mà trong một thời gian đã có một lỗi kernel trong đó luồng xử lý nhàn rỗi của hạt nhân được tính vào mức trung bình tải, gây ra trung bình tải là 1,00 khi hệ thống không làm gì cả. Điều đó đã được sửa chữa khá nhanh chóng.
CVn

Câu trả lời:


16

Trung bình tải trong một khoảng thời gian là số lượng quá trình trung bình đang cạnh tranh cho CPU trong khoảng thời gian đó. "Nhân" không chạy nếu không có gì để làm; cụ thể hơn, nếu không có gì để làm, CPU sẽ được cung cấp cho một luồng "nhàn rỗi" đặc biệt không được tính (và có thể làm những việc như đặt CPU là trạng thái chờ ngắt).

Vì vậy, ví dụ, trung bình tải 0,6 trên 5 phút thường có nghĩa là trong 5 phút đó, CPU đã được sử dụng tổng cộng 3 phút bởi một số quy trình (hoặc bởi hạt nhân) và tổng cộng là 2 phút đã nhàn rỗi. Nhưng, như @UKMonkey quan sát, điều đó có thể có nghĩa là sau 4 phút rưỡi không làm gì, 6 quy trình đã cạnh tranh cho CPU trong 30 giây qua ...

CPU không hoạt động, không có quy trình nào muốn sử dụng nó để chạy mã, bởi vì tất cả các quy trình đang chờ một hoạt động đầu vào hoặc đầu ra hoàn thành hoặc đang chờ để thức dậy vào một thời điểm nhất định trong tương lai.

Các liên kết của @ Panther cung cấp các cuộc thảo luận sâu hơn về trung bình tải.


1
Trung bình tải 0,6 trong 5 phút cũng có nghĩa là nó không làm gì trong 4 phút rưỡi - và trong 30 giây qua, có một số lượng đáng kể các quy trình đang chờ thời gian của CPU ... Đây không phải là dấu hiệu cho thấy công việc của nó là bao nhiêu CPU đã hoàn thành - nhưng có bao nhiêu quá trình đã chờ để sử dụng nó.
UKMonkey

@UKMonkey: Hoàn toàn đúng ... Trung bình là trung bình và mức trung bình tương tự có thể được lấy theo nhiều cách. Chỉnh sửa câu trả lời để giải thích rằng trung bình vừa phải không có nghĩa là các đỉnh cũng hợp lý.
AlexP

13

Trung bình tải là thước đo mức độ quá tải của lõi CPU về số lượng quá trình muốn sử dụng nó cùng một lúc.

Sau đây giả sử CPU lõi đơn (luồng đơn):

  • 0,0

    CPU không làm gì cả. Nếu một quá trình bắt đầu sử dụng CPU thì đó sẽ là người duy nhất sử dụng nó.

    Một CPU nhàn rỗi không có nghĩa là không có quá trình nào đang chạy. Ví dụ, các dịch vụ nền và kernel vẫn đang chạy và vẫn chiếm bộ nhớ. Họ không sử dụng bất kỳ CPU nào, vì họ không làm gì cả.

  • 1

    CPU được sử dụng tối đa, nhưng không có sự tranh chấp giữa các quá trình sử dụng CPU. Đó là, chỉ có một quy trình duy nhất đang chạy để có thể yêu cầu 100% thời gian của CPU cho chính nó. Ngoài ra, nhiều quy trình đang chạy nhưng không có quy trình nào yêu cầu CPU 100% và việc sử dụng CPU kết hợp của chúng tăng thêm 100%. Tất cả chúng vẫn chạy nhanh như chúng sẽ chạy ngay cả khi chúng có CPU.

  • Lớn hơn 1

    CPU được sử dụng tối đa và có nhiều quá trình muốn sử dụng đồng thời để chúng hoạt động hiệu quả chậm hơn so với khả năng chạy trên CPU nhàn rỗi. Ví dụ: trung bình tải 3.0 cho biết các quá trình đang chạy ở một phần ba tốc độ mà chúng muốn chạy. Trung bình tải là 50.0 cho biết các quy trình đang chạy ở tốc độ 1/50 tốc độ mà chúng muốn chạy, do tất cả các quy trình khác đang chạy. Nghĩa là, các số liệu cao hơn 1.0 chỉ ra rằng CPU có sẵn đang được kéo dài giữa ngày càng nhiều quá trình.

Có CPU nhiều lõi không thay đổi ý nghĩa của các số liệu nhưng có thể thay đổi cách hiểu của chúng. Ví dụ: nếu bạn có CPU 4 lõi, thì tải 1.0 vẫn tương đương với một quá trình sử dụng CPU 100% trên một lõi, nhưng có ba lõi khác. Vì vậy, trên CPU 4 lõi, điểm hiệu quả tối đa là 4.0, không phải 1.0 - và điểm mà mọi thứ đang chạy ở hiệu suất 1/3 là 12.0, không phải 3.0. Để thêm vào sự phức tạp, một quy trình có thể có nhiều hơn một luồng cho mỗi CPU của chính nó. Vì vậy, một quy trình có thể sử dụng 100% của cả 4 lõi nếu đó là đa luồng.

Lưu ý quan trọng

Việc sử dụng CPU chỉ là một tài nguyên có thể giới hạn hiệu suất của một quá trình. I / O là một cái khác, và không được tính vào tải CPU. Một quá trình sử dụng một lượng CPU nhất định sẽ không nhất thiết có thể sử dụng nhiều hơn trên một máy tải nhẹ hơn vì chúng có thể gặp các tắc nghẽn khác.

Trung bình tải tốt nhất là gì

Nó thực sự phụ thuộc vào những gì bạn đang làm và bạn thích phản ứng nhanh hơn hay CPU hoạt động mạnh nhất có thể.

Đối với một cái gì đó cần phải hoàn thành càng nhiều càng tốt, trung bình tải nên ở mức hoặc cao hơn một chút so với số lõi. Bất cứ điều gì lớn hơn thế này chỉ ra rằng bạn có thể hoàn thành nhiều việc hơn, nhanh hơn, nếu bạn tách các tác vụ trên nhiều máy tính / máy chủ hơn.

Đối với một cái gì đó cần phải phản ứng nhanh nhất có thể (phản ứng nhanh), trung bình tải phải là một mức chênh lệch thoải mái ít hơn số lượng lõi, chẳng hạn như một nửa hoặc một phần ba, cho phép một số thay đổi không liên tục trước khi xảy ra chậm.

Đối với một khách ảo hóa (ví dụ KVM), trung bình tải càng thấp càng tốt, bởi vì bạn thực sự đang chia sẻ CPU với các khách khác trên cùng một máy chủ.


Tôi đã giật mình khi thấy rằng đôi khi các chủ đề "chờ đợi trên I / O" được bao gồm trong tải trung bình serverfault.com/a/524818/27813 có vẻ như ...
rogerdpack

@rodgerpack Có, Dcác quy trình trạng thái luôn được bao gồm trong mức trung bình tải trong Linux. Vâng, nó khó hiểu. Có, chúng ta chủ yếu nên xem xét các số liệu khác ngoài tải avg.
kubanchot

2

Trung bình tải 0,00 về cơ bản có nghĩa là hệ thống của bạn không hoạt động và không có độ trễ hoặc căng thẳng hoặc tắc nghẽn đối với CPU của bạn theo thời gian đo.

Điều đó không có nghĩa là CPU của bạn không hoạt động, nó chỉ có nghĩa là nếu một quá trình muốn có thời gian của CPU, thì không phải chờ đợi.

Thật khó để nói nhiều hơn từ những gì bạn đã đăng vì nó có thể phụ thuộc vào cách bạn đo tải (hệ thống, trên mỗi người dùng?) Và theo thời gian.

Để biết một số chi tiết và đọc thú vị xem

https://www.tecmint.com/understand-linux-load-a Average-and-monitor-performance/

http://blog.scoutapp.com/articles/2009/07/31/under Hiểu-load-a Average

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

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.