Công cụ như top, uptime, w và host metrics của AppSignal báo cáo metric gọi là load average. Metric này cho biết load hệ thống chịu đựng, trung bình qua nhiều khung thời gian.
$ uptime 10:14:14 up 60 days, 17:42, 1 user, load average: 0.44, 0.28, 0.25 Load averages thường hiển thị 3 con số, như ví dụ từ uptime trên. Ba con số cuối kết quả cho thấy average load trong phút qua (0.44), 5 phút qua (0.28), và 15 phút qua (0.25).
Trên AppSignal, load averages hiển thị theo phút cho 8 giờ qua, và theo giờ cho khung thời gian dài hơn.
System Load
Để hiểu load averages nói gì (và khi nào báo động), ta cần hiểu system load nghĩa là gì, và cách nó được đếm.
Load của hệ thống về cơ bản là số process đang active tại thời điểm đó. Khi idle, load là 0. Khi process bắt đầu, load tăng 1. Process kết thúc giảm load 1. Ngoài running process, bất kỳ process nào queued up cũng được đếm. Vì vậy, khi một process đang dùng CPU, và hai process khác chờ lượt, load là 3.
Load biến động nhanh do short-lived process và có thể nhảy từ 0 lên 5 trong mili-giây và quay lại ngay lập tức. Do độ biến động này, nhìn average load theo thời gian hữu ích hơn, cho overview tốt hơn về load hệ thống chịu đựng.
Load Averages
Bây giờ biết cách system load được đếm, ta xem load averages. Như đã thấy, load hệ thống chịu đựng thường hiển thị dạng average theo thời gian.
Nói chung, single-core CPU xử lý một process tại một thời điểm. Average load 1.0 nghĩa là một core busy 100% thời gian. Nếu load average giảm 0.5, CPU idle 50% thời gian.
Nếu load average tăng 1.5, CPU busy toàn bộ thời gian trong khi (trung bình) một process khác chờ 50% thời gian, cho CPU nhiều việc hơn khả năng xử lý.
Logical Processors
Quy tắc chung: load average không nên vượt số processor trong máy. Nếu số processor là 4, load nên giữ dưới 4.0.
Lưu ý liên quan đến logical processors thay vì physical CPU cores. Do abstraction phần mềm như hyper-threading, số logical processors (processing threads) có thể cao hơn số physical cores.
Để kiểm tra logical processors trên Linux, đếm số processor trong /proc/cpuinfo, hoặc grep processor /proc/cpuinfo | wc -l, in tự động số dòng processor.
Trên Mac, dùng sysctl -n hw.ncpu hỏi trực tiếp số logical processors.
Đối với hệ thống multiple logical processors, load average có thể cao hơn, vì chạy được nhiều concurrent process hơn. Trên máy 2 CPU cores, load average 2.0 nghĩa là cả 2 CPU utilized 100%, trong khi trung bình 2 process active.
👋 Xem thêm bài Ruby (on Rails) performance khác trong checklist giám sát hiệu suất Ruby.
Đọc Load Averages
Vì là average của số process tuyệt đối, có vẻ khó xác định load average phù hợp và khi nào báo động. Nói chung, vì mỗi CPU core xử lý một process tại một thời điểm, hệ thống không overloaded cho đến khi vượt 1.0 per logical processor. Trên dual-core system (không hyper-threading), đó là 2.0.
Thường ổn nếu load average trên 1.0 per core ở mốc 1 phút, nhưng load tăng ở average 5 hoặc 15 phút có thể chỉ ra vấn đề.
MẸO: Anomaly detection của AppSignal có thể alert khi load average ở trên giá trị nhất định trong một khoảng thời gian. Dùng warm-up setting, chúng tôi gửi tin nhắn khi load ở trên 1.5 trong 15 phút, ví dụ.
Chúng tôi đã trả lời câu hỏi về load averages chưa, hay vẫn còn phần không rõ? Đừng ngần ngại liên hệ @AppSignal. Chúng tôi rất muốn biết bạn thấy bài này như thế nào, hoặc chủ đề gì bạn muốn biết thêm.