2013-07-12 28 views
52

Trên RedHat Linux 6.2 Tôi đang chạy free -m và nó cho thấy gần như tất cả 8GB sử dụngLinux chương trình miễn phí sử dụng bộ nhớ cao nhưng đầu không

   total  used  free  shared buffers  cached 
Mem:   7989  7734  254   0   28  7128 
-/+ buffers/cache:  578  7411 
Swap:   4150   0  4150 

Nhưng cùng lúc trong top -M Tôi không thể nhìn thấy bất kỳ quy trình sử dụng tất cả bộ nhớ này:

top - 16:03:34 up 4:10, 2 users, load average: 0.08, 0.04, 0.01 
Tasks: 169 total, 1 running, 163 sleeping, 5 stopped, 0 zombie 
Cpu(s): 0.7%us, 0.3%sy, 0.0%ni, 98.6%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st 
Mem: 7989.539M total, 7721.570M used, 267.969M free, 28.633M buffers 
Swap: 4150.992M total, 0.000k used, 4150.992M free, 7115.312M cached 

    PID USER  PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 
1863 sroot  20 0 398m 24m 9.8m S 0.3 0.3 3:12.87 App1 
    1 sroot  20 0 2864 1392 1180 S 0.0 0.0 0:00.91 init 
    2 sroot  20 0  0 0 0 S 0.0 0.0 0:00.00 kthreadd 
    3 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.07 migration/0 
    4 sroot  20 0  0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 
    5 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.00 migration/0 
    6 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.00 watchdog/0 
    7 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.08 migration/1 
    8 sroot  RT 0  0 0 0 S 0.0 0.0 0:00.00 migration/1 

Tôi cũng đã thử này ps mem script nhưng onlt hiển thị khoảng 400MB bộ nhớ đang được sử dụng.

Trả lời

99

Đừng nhìn vào dòng "Mem", hãy xem dòng bên dưới.

Hạt nhân Linux tiêu thụ càng nhiều bộ nhớ càng tốt để cung cấp bộ nhớ đệm I/O (và các bộ đệm không quan trọng khác, nhưng bộ nhớ cache sẽ là phần lớn việc sử dụng này). Bộ nhớ này được bỏ qua cho các quá trình khi họ yêu cầu. Dòng "-/+ buffer/cache" hiển thị cho bạn các giá trị được điều chỉnh sau khi bộ nhớ đệm I/O được tính, nghĩa là lượng bộ nhớ được sử dụng bởi các quy trình và số lượng có sẵn cho các quy trình (trong trường hợp này, 578MB được sử dụng và 7411MB miễn phí).

Sự khác biệt của bộ nhớ được sử dụng giữa dòng "Mem" và "-/+ buffer/cache" cho bạn biết hạt nhân đang sử dụng bao nhiêu cho mục đích lưu trong bộ nhớ đệm: 7734MB - 578MB = 7156MB trong I/O bộ nhớ cache. Nếu các tiến trình cần bộ nhớ này, hạt nhân sẽ đơn giản thu nhỏ kích thước của bộ nhớ đệm I/O.

+1

Yip, cảm ơn. Vấp vào này quá mà cũng là một lời giải thích tốt: https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/5/html/Tuning_and_Optimizing_Red_Hat_Enterprise_Linux_for_Oracle_9i_and_10g_Databases/chap-Oracle_9i_and_10g_Tuning_Guide-Memory_Usage_and_Page_Cache.html – DarVar

+0

Cảm ơn. Thực sự hữu ích. –

12

Ngoài ra, như dòng đầu tiên cho thấy total used free shared buffers cached Mem: 7989 7734 254 0 28 7128 -/+ buffers/cache: 578 7411

Nếu chúng ta thêm (cache [7128] + buffers [28] + miễn phí [254]), chúng tôi sẽ nhận được khoảng dòng thứ hai của tự do [7411] Giá trị 7128 + 28 + 254 = 7410

Các vấn đề liên quan