1. 程式人生 > 其它 >關於記憶體使用率監控

關於記憶體使用率監控

參考 https://blog.csdn.net/weixin_33769207/article/details/91633529?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-5.no_search_link&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-5.no_search_link

debian之類的系統認為:

可用記憶體=free的記憶體+cached的記憶體+buffers的記憶體

SUSE之類的系統則認為:

可用記憶體=free的記憶體+cached的記憶體+buffers的記憶體+SReclaimable的記憶體

cat /proc/meminfo 資訊如下:

需要使用的指標有:MemTotal,MemFree,Buffers,Cached,SReclaimable

MemTotal:總記憶體大小
MemFree: 空閒記憶體大小
Buffers和Cached:磁碟快取的大小
SReclaimable:在linux核心中會有許多小物件,這些物件構造銷燬十分頻繁,比如i-node,dentry。這麼這些物件如果每次構建的時候就向記憶體要一個頁,而其實際大小可能只有幾個位元組,這樣就非常浪費,為了解決這個問題就引入了一種新的機制來處理在同一頁框中如何分配小儲存器區,這個機制可以減少申請和釋放記憶體帶來的消耗,這些小儲存器區的記憶體稱為Slab。meminfo檔案中標識了Slab的大小,而SReclaimable是指可收回Slab的大小。

Buffers和Cached的區別:

buffers 是指用來給塊裝置做的緩衝大小,他只記錄檔案系統的metadata以及 tracking in-flight pages.
cached 是用來給檔案做緩衝。
buffers 是用來儲存目錄裡面有什麼內容,許可權等等。
而cached直接用來記憶我們開啟的檔案,比如先後執行兩次命令#man X ,你就可以明顯的感覺到第二次的開打的速度快很多。
而buffers隨時都在增加,比如先後兩次使用ls /dev後,就會發現第二次執行的速度會較第一次快。
這就是buffers/chached的區別。

實戰

prometheus監控 記憶體使用率的監控指標
之前是

  - expr: round((100-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes)/node_memory_MemTotal_bytes*100),0.01)
    record: memory:usage
    labels:
      desc: "記憶體消耗百分比"
      unit: "%"

後來換成了

  - expr: round((100-(node_memory_Buffers_bytes+node_memory_Cached_bytes+node_memory_MemFree_bytes+node_memory_SReclaimable_bytes)/node_memory_MemTotal_bytes*100),0.01)
    record: memory:usage
    labels:
      desc: "記憶體消耗百分比"
      unit: "%"
本人水平有限,還在不斷學習中 難免有很多錯誤或者遺漏,望見諒