Sự khác biệt giữa báo cáo sử dụng bộ nhớ trong System Monitor và báo cáo miễn phí là gì?


14

Tôi đang sử dụng System Monitor 2.28.0. Khi tôi nhìn vào tab Tài nguyên, tôi thấy một biểu đồ đẹp với bộ nhớ và trao đổi. Bộ nhớ khoảng 60% 2,3 GiB là 3,8. Khi tôi gõ lệnh miễn phí, tôi nhận được:

             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

mèo / Proc / meminfo | grep MemFree tặng

MemFree:           34536 kB

Tình hình vẫn là tiết kiệm trong vài phút. Tôi đã bắt đầu rất nhiều quá trình với một kịch bản và kịch bản đang chờ bộ nhớ trống giảm xuống. Theo những gì tôi đang thấy trong tab Process (hoặc trên cùng), số trong System Monitor có vẻ rất gần với tổng bộ nhớ của tiến trình mà báo cáo miễn phí.

Cảm ơn

Câu trả lời:


15

Sự khác biệt là liệu bộ nhớ "bộ đệm" và "bộ nhớ cache" có được bao gồm trong số "đã sử dụng" hay không.

Nói chung, bộ nhớ hệ thống Linux được sử dụng bởi kernel cho hai mục đích: tiến trình và bộ đệm / bộ đệm / tệp / mạng. Nếu bạn nhìn kỹ vào đầu ra của freenó, nó đã được hiển thị:


             total       used       free     shared    buffers     cached
Mem:       3994908    3962396      32512          0     100852    1477032
-/+ buffers/cache:    2384512    1610396
Swap:      8000328      28468    7971860

Nếu bạn thêm "bộ đệm" và "bộ đệm", sau đó trừ đi từ cột "đã sử dụng", bạn sẽ nhận được dòng thứ hai trong "đã sử dụng" (dòng bắt đầu bằng -/+ buffers/cache), hiển thị khoảng 2.3G (2384512) trong sử dụng, phù hợp với bộ nhớ được báo cáo đang sử dụng mà System Monitor đang báo cáo (nó đang bỏ qua bộ đệm / bộ đệm vì chúng sẽ biến mất để nhường chỗ cho nhiều quá trình hơn).

Grep của bạn /proc/meminfothực sự khớp với cột "miễn phí" của dòng đầu tiên (32512 đủ gần với 34536 - nó có thể thay đổi giữa hai đầu ra lệnh).


Cảm ơn, tôi tự hỏi tại sao hệ thống cần 1,5 Gig trong bộ nhớ cache, nhưng điều đó làm cho nó rõ ràng.
Guillaume Coté

1
Đó không phải là vấn đề "cần" hơn là "đã sử dụng". Vào thời điểm đó, nó đã đọc ít nhất là từ ổ cứng và giữ nó trong bộ nhớ dự phòng trong trường hợp cần sử dụng lại.
Kees Cook

0

Khi tôi bắt tay vào giám sát hệ thống, việc sử dụng bộ nhớ được báo cáo trong tab "Tài nguyên" giống với freecột trong /usr/bin/free.

Vấn đề là bộ nhớ vật lý miễn phí gần 0, sớm hay muộn: Linux lưu trữ rất nhanh để số tiền bạn bỏ ra để mua RAM được sử dụng hiệu quả. Và điều này có nghĩa là biểu đồ sẽ liên tục hiển thị> 98% mức sử dụng bộ nhớ, điều này là vô ích.

Vì vậy, tôi / chúng tôi quyết định làm giống như -/+ buffers/cache:dòng /usr/bin/free. Bằng cách này, biểu đồ rất có ý nghĩa và cho phép người dùng xem ~ sử dụng bộ nhớ ứng dụng / người dùng thay vì trạng thái vật lý của bộ nhớ.

Tôi biết, điều này hơi sai lệch, bởi vì hầu hết (l) người dùng không hiểu rằng bộ nhớ vật lý miễn phí là một sự lãng phí tiền bạc và hiệu suất. Tôi đã đối mặt với cùng một vấn đề tại nơi làm việc: vào mỗi thứ hai, các máy chủ sẽ khởi động lại và trong 24 giờ tới, mọi máy chủ sẽ kích hoạt cảnh báo "đầy bộ nhớ". Vì vậy, tôi đã tính toán bộ nhớ miễn phí trong phần mềm giám sát giống như trong màn hình hệ thống.

Solaris hiện tại có cùng một vấn đề: Bộ đệm ZFS (ARC) không được bao gồm trong bộ nhớ miễn phí được báo cáo bởi các công cụ vmstatkhiến các quản trị viên DB ngu ngốc phàn nàn rằng "ZFS là xấu" :)

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.