Tôi biết câu hỏi này https://stackoverflow.com/questions/41224738/how-to-calculate-system-memory-usage-from-proc-meminfo-like-htop
Câu trả lời dường như đã lỗi thời về việc sử dụng bộ nhớ và câu hỏi này có vẻ phức tạp hơn.
htop chắc chắn bây giờ không tính toán tổng bộ nhớ thông qua MemTotal - MemFree
nữa không.
Ở đó https://access.redhat.com/solutions/406773 Tôi tìm thấy một giải pháp có thể phù hợp. Theo đó nó sẽ được tính toán thông qua MemTotal - MemFree - Bộ đệm - Cached - Slab
nhưng điều đó dẫn đến việc sử dụng bộ nhớ quá thấp so với htop.
Việc sử dụng bộ nhớ trong htop dường như khá liên quan như miễn phí -m
hiển thị trong ô Mem: đã qua sử dụng
Nhưng nếu bạn tạo ramdisk, mọi thứ sẽ thay đổi rất nhiều:
mkdir mnt
Sudo mount -t tmpfs none mnt
đĩa cd
Sudo dd if=/dev/urandom of=test bs=32M status=progress
Ở trên sẽ tạo một đĩa RAM có kích thước bằng 50% dung lượng bộ nhớ đã cài đặt và lấp đầy đĩa ram này.
htop hiện hiển thị hơn một nửa RAM vật lý được sử dụng, trong trường hợp thử nghiệm là 3,82 GB trong tổng số 7,44 GB đã sử dụng. Tuy nhiên miễn phí -m
vẫn chỉ hiển thị 104 MB được sử dụng so với 102 MB trước khi tạo và lấp đầy đĩa RAM. Vì vậy, 104 MB được sử dụng chắc chắn là sai, vì một nửa bộ nhớ hệ thống vật lý không thể khả dụng nữa do nó được sử dụng bởi đĩa RAM.
Trong /proc/meminfo
kích thước của đĩa RAM dường như được bao gồm trong Đã lưu vào bộ nhớ cache
, do đó, không nên trừ bộ nhớ đệm đã sử dụng để tính toán.
Vậy tại sao free -m báo cáo sai giá trị bộ nhớ trống như vậy? Theo mặc định, có nhiều tmpf khác nhau trên các bản phân phối như Debian hoặc Ubuntu, điều đó có nghĩa là free -m gây ấn tượng sai về bộ nhớ trống.
Tính toán bộ nhớ của htop có vẻ khá hợp lý. Vậy làm cách nào để tính giá trị htop từ /proc/meminfo
?