Linux 記憶體使用量不增加

Linux 記憶體使用量不增加

我嘗試監控 ubuntu 伺服器中的記憶體使用情況。當我運行“top”命令時,它顯示 70% 的記憶體已使用。 (顯示在“Mem:”行中)。但我想找到佔用我記憶體使用量的進程並將它們加起來,它遠未達到 70%。誰能幫我解釋一下嗎?

多謝!

這是我的頂級命令結果:

頂部 - 20:59:06 向上 23 天,33 分鐘,3 位用戶,平均負載:0.06、0.12、0.09
任務:總共 92 個,1 個正在運行,91 個正在睡覺,0 個停止,0 個殭屍
CPU:0.3%us、0.2%sy、0.0%ni、99.5%id、0.0%wa、0.0%hi、0.0%si、0.0%st
記憶體:總共 4124236k,已用 2903104k,空閒 1221132k,147508k 緩衝區
交換:總計 4192252k,已使用 440k,空閒 4191812k,快取 2596860k

  PID 使用者 PR NI VIRT RES SHR S %CPU %MEM TIME+ 指令
30558 mysql 20 0 311m 36m 5956 S 0 0.9 0:00.74 mysqld
28848 傑超 20 0 50688 9244 3144 S 0 0.2 0:05.65 蟒蛇
  956根20 0 11712 8004 2964 S 0 0.2 0:39.26 ddclient-睡眠
28846 傑超 20 0 49256 7652 3280 S 0 0.2 0:07.17 蟒蛇
22284 傑超 20 0 10400 6876 1664 S 0 0.2 0:00.49 bash
30433 傑超 20 0 10344 6776 1620 S 0 0.2 0:00.46 bash
31053 傑超 20 0 10344 6768 1612 S 0 0.2 0:00.47 bash
28847 傑超 20 0 48168 6096 2980 S 0 0.1 0:00.59 蟒蛇
29178 www-資料 20 0 228m 5392 2052 S 0 0.1 0:00.06 apache2
29179 www-資料 20 0 12796 5148 1920 S 0 0.1 0:00.02 apache2
29180 www-資料 20 0 12796 5148 1920 S 0 0.1 0:00.02 apache2
29181 www-資料 20 0 12796 5148 1920 S 0 0.1 0:00.02 apache2
29182 www-資料 20 0 12796 5148 1920 S 0 0.1 0:00.02 apache2
29183 www-資料 20 0 12796 5148 1920 S 0 0.1 0:00.02 apache2
  999 根 20 0 11396 3948 2052 S 0 0.1 0:21.21 阿帕契2
  926 百日咳 20 0 24572 3284 2280 S 0 0.1 0:00.18 百日咳
30933 根 20 0 9604 3104 2484 S 0 0.1 0:00.00 sshd
22164 根 20 0 9604 3096 2484 S 0 0.1 0:00.01 sshd
30313 根 20 0 9604 3096 2480 S 0 0.1 0:00.00 sshd
24302 根 20 0 9632 3024 2428 S 0 0.1 0:00.07 sshd
  787 根 20 0 6664 2424 1988 S 0 0.1 0:00.05 sshd
    1 根 20 0 3504 1876 1276 S 0 0.0 0:01.57 初始化
24421 傑超 20 0 9632 1596 992 S 0 0.0 0:00.00 sshd
  812 系統日誌 20 0 31044 1484 1008 S 0 0.0 1:47.00 rsyslogd

答案1

當然,該數字是進程使用的 RAM 以及檔案緩衝區和高速緩存的組合。 Linux 的理念是最大限度地使用 RAM 來存取文件,而不是必須為這些文件存取硬碟。

嘗試使用該命令free或透過此命令查看內核本身,cat /proc/meminfo.

自由的

% free
             total       used       free     shared    buffers     cached
Mem:       7987492    7717152     270340          0     314644    2435048
-/+ buffers/cache:    4967460    3020032
Swap:      5963772       1304    5962468

貓 /proc/meminfo

% cat /proc/meminfo 
MemTotal:        7987492 kB
MemFree:          284328 kB
Buffers:          314384 kB
Cached:          2427852 kB
SwapCached:          116 kB
Active:          4698232 kB
Inactive:        2374796 kB
Active(anon):    3756264 kB
Inactive(anon):   768392 kB
Active(file):     941968 kB
Inactive(file):  1606404 kB
Unevictable:          68 kB
Mlocked:              68 kB
SwapTotal:       5963772 kB
SwapFree:        5962468 kB
Dirty:               452 kB
Writeback:             0 kB
AnonPages:       4330964 kB
Mapped:           185540 kB
Shmem:            193864 kB
Slab:             306532 kB
SReclaimable:     261520 kB
SUnreclaim:        45012 kB
KernelStack:        6192 kB
PageTables:        94376 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     9957516 kB
Committed_AS:    9671884 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      585392 kB
VmallocChunk:   34359040964 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       12288 kB
DirectMap2M:     8237056 kB

free命令將顯示總 RAM,在我的例子中為 7987492,其中 7717152 正在使用,270340 是空閒的。這是 RAM、緩衝區和快取的組合。第二行顯示了緩衝區和快取正在使用多少 RAM,4967460,這意味著我確實有 3020032 的可用 RAM。

來自一個itworld.com 文章關於理解記憶體使用:

緩衝區編號表示核心存取磁碟時產生的記憶體區塊,例如當核心需要讀取檔案內容時。快取的數字告訴我們有多少 RAM 用於快取最近讀取的檔案的內容。當繞過檔案系統層時,緩衝區數量會增加,而當使用檔案系統時,快取會增加。兩者都隨著讀取操作的增加而增長。

筆記:請記住,Linux 核心的記憶體管理器將釋放用於緩衝區和快取的任何 RAM(如果應用程式實際需要它)。

資源

相關內容