Nghe đồn hội này sắp giải tán nên mình phải chào tạm biệt chớ hỉ!?
Vào terminal, gõ `w |head -1` thì ra thế này 22:09:09 up 2 days, 7:08, 3 users, load average: 0.32, 0.36, 0.25 `Load average` là gì? Hiểu thế nào cho đúng? ============================================ Đường Sài Gòn ra Thủ Đức có cây cầu. Lúc bình thường thì chạy bon bon, nhưng lúc cao điểm thì cách gì cũng có người phải chờ đợi hoặc đi rất chậm (cũng coi như là chờ.) CPU cũng thế. Mỗi "core" của nó là một cây cầu. Máy nào i5 i7 có 4 core thì coi là 4 cây cầu. Khi nào đông xe thì ngoài bốn cái xe đang chạy trên bốn cây cầu đó còn một số xe khác đang chờ ở để lên cầu. Ví dụ, * Lúc 1 giờ: có 1 xe trên cầu, 1 xe chờ ở đầu cầu * Lúc 1 giờ 10 giây: có 2 xe trên cầu, 2 xe ở đầu cầu * Lúc 1 giờ 20 giây: có 1 xe trên cầu, 10 xe chờ ở đầu cầu Tính trung bình, có (2 + 4 + 11 / 3 ) = 5.7 xe đang chạy trên cầu hoặc đang chờ ở đầu cầu. Vậy "load average" của cây cầu này là 5.7 :D Vậy, `load average` cho biết trung bình có bao nhiêu tiến trình đang chạy hoặc đang chờ chạy trên tất cả các `core` của hệ thống. Trong ví dụ ở trên 0.32, 0.36, 0.25 thì là con số trung bình trong 1 phút, 5 phút và 15 phút. Con số này có phần lẻ (.32) do phải chia trung bình. Muốn xem "thật tế" luôn, "real time" luôn, số nguyên thôi, thì gõ vmstat 1 rồi đọc con số đầu tiên bạn thấy được. Đó chính là con số tròn tại mỗi thời điểm. Nó nhảy tưng tưng sau mỗi giây! `Load average` bao nhiều là nặng!?? =================================== Con số `load average` là tính cho tất cả các cây cầu (core) bạn có. Nên nếu đang `load` tới `15` mà máy bạn có 4 core thì chưa xi nhê gì. Đó là vì, người ta (thường quy ước), khi mỗi core phải chờ tới 5 tiến trình, thì mới là nặng. Vậy nếu máy bạn có 4 core, thì khi nào load lên tới `20` là đáng báo động. Ở mức 15 thì vãn còn nhẹ. Mặc dù vậy, khi đó cpu hoạt động liên tục, máy sẽ nóng! Có thể làm chín trứng được luôn đó! Nếu máy bạn có 2 core, thì load lên tới 2x5 = 10 vẫn còn đẹp. `Load average` nặng có thật sự `nặng` không? =========================================== Người ta thường bảo khi máy chạy lên `100%` là máy chạy `nặng`. Nặng là nặng thế nào? Hỏng hiểu. Nhưng nguyên nhân chính của tình trạng này thường là do `io blocking`: hệ thống phải chờ cho các hoạt động đọc / ghi vào ổ cứng được hoàn tất chẳng hạn. Đó là vì, tốc độ làm việc của CPU, trên bộ nhớ, rất là cao. Nhưng tốc độ làm việc (đọc / ghi) vào ổ cứng thì chậm hơn rất nhiều. Khi cần ghi gì vào ổ cứng thì CPU phải chờ một tí, hoặc nhiều tí. Do sự chậm chạp của thiết bị đọc ghi, mà phải "chờ qua cầu". Giống như hồi xưa đi học, cô giảng bài nhanh, mà bạn ghi không kịp. Đó là do tình trạng "io blocking" ở bạn ;) Cô nào giảng bài từ từ lừ đừ thì thường được học trò khen giỏi. Thực ra là do học trò khi không kịp mà thôi ^^, hỏng phải cô giỏi :D Túm lại, khi `load average` lên > 100% (cpu 1 core), 400% (4 core) thì bạn có thể gọi là `máy đang chờ`, có lẽ là chính xác nhất :) Muốn tránh chờ thì để máy nghỉ, hoặc mua ổ đĩa SSD, bla bla. Thôi tạm dừng ở đây. Đi ngủ. -- I am ... 5.5 dog years old.
