Thursday, 5 January 2017

[Linux] Máy còn free bao nhiêu RAM?

Ai dùng Linux, một thời gian sẽ biết cách kiểm tra dung lượng bộ nhớ (memory - RAM) còn trống bằng lệnh free:
$ free -m 
             total       used       free     shared    buffers     cached
Mem:           992        789        203          0         43        413
-/+ buffers/cache:        332        660
Swap:            0          0

Lệnh này không dễ đọc và rất nhiều người sẽ nhầm tưởng là máy còn free 203 MB RAM.
Điều này đúng hay sai phụ thuộc vào khái niệm "free" của từng người.


203MB này là phần RAM không được phần mêm nào/hệ thống sử dụng.
Nhưng nếu tính dung lượng RAM khả dụng bởi các chương trình khác thì số 660 mới là chính xác:
= 203 (free) + 43 (buffer) + 413 (cached) = 659 ~ 660.

Cách tính này dù đúng ở các phiên bản Linux cũ, nhưng giờ nó không còn thực sự chính xác nữa.

Tại 1 commit từ bản 3.14 của Linux Kernel có viết:
> Many load balancing and workload placing programs check /proc/meminfo to estimate how much free memory is available. They generally do this by adding up "free" and "cached", which was fine ten years ago, but is pretty much guaranteed to be wrong today.

Tại commit này, developer đã thêm 1 thông số là MemAvailable có thấy trong file /proc/meminfo và nó chính là lượng bộ nhớ khả dụng:
$ grep MemAvailable /proc/meminfo
MemAvailable:     587688 kB

Tham khảo:  https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=34e431b0ae398fc54ea69ff85ec700722c9da773

HVN at http://www.familug.org/ and http://pymi.vn