2 回答

TA貢獻1804條經驗 獲得超2個贊
所以這種關系似乎是這樣的
container_working_set_in_bytes = container_memory_usage_bytes - total_inactive_file
container_memory_usage_bytes
顧名思義,這意味著容器使用的總內存(但由于它還包括文件緩存,即inactive_file哪個操作系統可以在內存壓力下釋放),減去inactive_filecontainer_working_set_in_bytes
和 之間的關系可以使用以下表達式進行總結container_memory_rss
container_working_sets
container_memory_usage_bytes = container_memory_cache + container_memory_rss
cache 反映存儲在當前緩存在內存中的磁盤上的數據。它包含活動+非活動文件(如上所述)
這就解釋了為什么更高。container_working_set
編號 #1
編號 #2

TA貢獻1757條經驗 獲得超7個贊
不是真正的答案,但仍然是兩個不同的觀點。
這是否有助于理解圖表?
在我$dayjob,我們遇到了各種不同的問題,即Go運行時外部的不同工具如何計數以及顯示執行用Go編寫的程序的進程的內存使用情況。
再加上Go在Linux上的GC實際上并沒有將釋放的內存頁面釋放到內核中,而只是瘋狂地(2)
它就是這樣的頁面,一個釋放了大量內存的GC循環不會導致外部工具(通常是統計數據)所采用的“進程”RSS讀數的任何明顯變化。MADV_FREE
cgroups
因此,我們將導出通過定期調用運行時獲得的自己的指標。在
用 Go 編寫的任何主要服務中讀取記憶統計(和) - 借助專門為此編寫的簡單包。這些讀數反映了 Go 運行時關于其控制下的內存的真實想法。runtime/debug.ReadGCStats
順便說一句,如果您為容器設置了內存限制,則內存統計信息字段非常有用,因為一旦讀取達到或超過內存限制,容器中的進程肯定注定要最終被oom_killer擊落。NextGC
- 2 回答
- 0 關注
- 350 瀏覽
添加回答
舉報