Tại sao không phải là trung bình di chuyển 1/5/15 phút đơn giản được sử dụng trong tính toán tải Linux?


28

Cho đến gần đây, tôi nghĩ rằng trung bình tải (ví dụ như trên cùng) là trung bình di động trên n giá trị cuối cùng của số lượng quá trình ở trạng thái "có thể chạy" hoặc "chạy". Và n sẽ được xác định bởi "độ dài" của trung bình di chuyển: vì thuật toán tính trung bình tải dường như kích hoạt cứ sau 5 giây, n sẽ là 12 cho trung bình tải 1 phút, 12x5 cho trung bình tải 5 phút và 12x15 cho trung bình tải 15 phút.

Nhưng sau đó tôi đọc bài viết này: http://www.linuxjournal.com/article/9001 . Bài viết này khá cũ nhưng thuật toán tương tự được triển khai ngày hôm nay trong nhân Linux. Trung bình tải không phải là trung bình di động mà là thuật toán mà tôi không biết tên. Dù sao, tôi đã thực hiện một so sánh giữa thuật toán nhân Linux và trung bình di động cho một tải định kỳ tưởng tượng:

đồ thị tải.

Có một sự khác biệt lớn.

Cuối cùng, câu hỏi của tôi là:

  • Tại sao việc thực hiện này đã được chọn so với mức trung bình di động thực sự, điều đó có ý nghĩa thực sự với bất kỳ ai?
  • Tại sao mọi người nói về "trung bình tải 1 phút" vì thuật toán được tính đến nhiều hơn phút cuối cùng. (về mặt toán học, tất cả các biện pháp kể từ khi khởi động; trong thực tế, có tính đến lỗi làm tròn - vẫn còn rất nhiều biện pháp)

5
Đó là một đường trung bình di chuyển theo cấp số nhân (EMA), cũng được sử dụng ví dụ trong tài chính (phân tích kỹ thuật). Các ưu điểm có lẽ giống nhau - EMA có thể được tính từ chỉ giá trị trước đó và hiện tại và các giá trị gần đây được coi trọng hơn so với các giá trị cũ. Trong một MA tiêu chuẩn, giá trị cũ nhất đóng góp tương đương với mức trung bình như giá trị gần đây nhất và đôi khi chúng tôi nghĩ rằng các giá trị gần đây quan trọng hơn.
jg-faustus

Câu trả lời:


24

Sự khác biệt này bắt nguồn từ Berkeley Unix ban đầu và xuất phát từ thực tế là hạt nhân thực sự không thể giữ mức trung bình; nó sẽ cần phải giữ lại một số lượng lớn các bài đọc trước đây để làm như vậy, và đặc biệt là trong những ngày xưa, không có bộ nhớ để dành cho nó. Thuật toán được sử dụng thay thế có lợi thế là tất cả các kernel cần giữ là kết quả của phép tính trước đó.

Hãy nhớ rằng thuật toán đã gần hơn một chút so với sự thật khi tốc độ máy tính và chu kỳ xung nhịp tương ứng được đo bằng hàng chục MHz thay vì GHz; có nhiều thời gian hơn cho sự khác biệt để leo trong những ngày này.


2
Ok, điều đó giải thích sự lựa chọn thực hiện. Bạn có biết tại sao nhiều người nghĩ rằng trung bình ba tải được tính trong 1 phút / 5 phút / 15 phút cuối không? Tôi nghĩ đó là sai, thuật toán tính trung bình trên tất cả các giá trị cuối cùng. Tôi hiểu rằng các giá trị cũ ít quan trọng hơn các giá trị mới nhưng tuy nhiên, các giá trị cũ hơn 1 phút vẫn có ảnh hưởng không đáng kể trong trung bình tải 1 phút. Vì vậy, theo tôi "1 phút / 5 phút / 15 phút" không có ý nghĩa gì, nhưng tôi có thể sai (?)
user368507

5
Bởi vì đó là những gì tài liệu và mọi chương trình báo cáo chúng bắt đầu với BSD ban đầu uptimew, được yêu cầu; bạn phải xem các nguồn kernel để biết rằng nó không thực sự đúng.
geekizard

1
đó thực sự là một điều đáng tiếc
user368507

3
@ user5528 Giờ 1min/5min/15min làm có ý nghĩa. Họ xác định thời gian sau đó ảnh hưởng của tải hiện tại giảm theo một số yếu tố cố định (có thể là e = 2,71 .. hoặc có thể 2). Hãy thử nó.
maaartinus

2
@maaartinus Vâng. 1 phút / 5 phút / 15 phút xác định thời gian sau đó các biện pháp cũ hơn có trọng số nhỏ hơn hoặc bằng 1 / e trong tính toán EMA. Độ chính xác này không xuất hiện trong thời gian hoạt động của người đàn ông hoặc người đàn ông hàng đầu .
dùng368507
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.