linux資源管理之記憶體
阿新 • • 發佈:2021-09-01
一、基本概念
舉例:
通過栗子,先了解一下指標型別說明和基本概念
linux 系統 free -m命令可檢視系統記憶體使用情況,linux系統使用記憶體的機制是:當一個程式需要程式時,系統會從總記憶體(total)中劃分出比當使用的真實記憶體更多的記憶體放在緩衝區,待應用耗記憶體量增加時,給應用使用。
下面對命令引數做如下說明:
第一列
Mem 記憶體的使用資訊
Swap 交換空間的使用資訊
第一行
total 系統總的可用實體記憶體大小
used 已被被分配掉的記憶體,但很多都會放在緩衝區,未被使用
free 未被分配的實體記憶體
shared 被共享使用的實體記憶體大小
buff/cache 被 buffer 和 cache 使用的實體記憶體大小。即,系統分配,但未被使用的buffers/cache數量
available 還可以被 應用程式 使用的實體記憶體大小
部分版本系統中有-/+ Buffers/cache維度指標:
第三行:-/+ Buffers/cache
used:實際使用的記憶體總量。buffers使用部分+cache使用部分
free:實際剩餘的記憶體總量。未被分配的記憶體+buffers未使用部分+cache未使用部分
第四行:Swap
交換分割槽
buffers和cache的含義貌似還不太懂,下面是網路上給出的定義:
buffer : 作為buffer cache的記憶體,是塊裝置的讀寫緩衝區,更靠近儲存裝置,或者直接就是disk的緩衝區。
cache: 作為page cache的記憶體, 檔案系統的cache,是memory的緩衝區
資料統計:
total=Mem_used+Mem_free
Mem_used=Mem_buffers+Mem_cached+(-/+ buffers/cache)_used
Mem_free=(-/+ buffers/cache)_free-Mem_buffers-Mem_cached
二、檢視當前記憶體使用
1、ps命令
Linux下獲取佔用記憶體最多的10個程序
ps aux|head -n1;ps aux|grep -v PID|sort -nr -k4|head -n10
2、free -g/m
三、遇到的問題
1、free 與 available 的區別
free 是真正尚未被使用的實體記憶體數量。
available 是應用程式認為可用記憶體數量,available = free + buffer + cache (注:只是大概的計算方法)
擴充套件:
Linux 為了提升讀寫效能,會消耗一部分記憶體資源快取磁碟資料,對於核心來說,buffer 和 cache 其實都屬於已經被使用的記憶體。但當應用程式申請記憶體時,如果 free 記憶體不夠,核心就會回收 buffer 和 cache 的記憶體來滿足應用程式的請求。這就是稍後要說明的 buffer 和 cache。
以上內容借鑑:https://www.cnblogs.com/M18-BlankBox/p/5326484.html