亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

container_memory_working_set_bytes與process_reside

container_memory_working_set_bytes與process_reside

Go
揚帆大魚 2022-09-12 17:04:01
我希望了解container_memory_working_set_bytes與process_resident_memory_bytes與total_rss(container_memory_rss)+file_mapped以便更好地配備系統來警報OOM的可能性。這似乎違背了我的理解(現在讓我感到困惑),因為如果一個容器/pod正在運行一個進程,執行用Go編寫的編譯程序。為什么兩者之間的差異如此之大(幾乎是10倍以上)container_memory_working_set_bytesprocess_resident_memory_bytes另外,和之間的關系在這里很奇怪,這是我沒想到的,讀完這里后container_memory_working_set_bytescontainer_memory_rss + file_mapped匿名和交換緩存內存的總量(它包括透明的大頁面),它等于來自 memory.status 文件的total_rss值。這不應與 cgroup 使用的真實駐留集大小或物理內存量相混淆。rss + file_mapped將為您提供 c 組的常駐集大小。它不包括換出的內存。它確實包括來自共享庫的內存,只要這些庫中的頁面實際上在內存中。它確實包括所有堆棧和堆內存。因此,總駐留集大小是此值如何小于在給定 c 組中運行的容器cgrouprss + file_mappedcontainer_working_set_bytes這讓我覺得這個統計數據我是不正確的。以下是用于構建上圖的 PROMQLprocess_resident_memory_bytes{container=“sftp-downloader”}container_memory_working_set_bytes{container=“sftp-downloader”}go_memstats_heap_alloc_bytes{container=“sftp-downloader”}container_memory_mapped_file{container=“sftp-downloader”} + container_memory_rss{container=“sftp-downloader”}
查看完整描述

2 回答

?
慕婉清6462132

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_rsscontainer_working_sets

container_memory_usage_bytes = container_memory_cache + container_memory_rss

cache 反映存儲在當前緩存在內存中的磁盤上的數據。它包含活動+非活動文件(如上所述)

這就解釋了為什么更高。container_working_set

編號 #1

編號 #2


查看完整回答
反對 回復 2022-09-12
?
長風秋雁

TA貢獻1757條經驗 獲得超7個贊

不是真正的答案,但仍然是兩個不同的觀點。

這是否有助于理解圖表?

在我$dayjob,我們遇到了各種不同的問題,即Go運行時外部的不同工具如何計數以及顯示執行用Go編寫的程序的進程的內存使用情況。
再加上Go在Linux上的GC實際上并沒有將釋放的內存頁面釋放到內核中,而只是瘋狂地(2)它就是這樣的頁面,一個釋放了大量內存的GC循環不會導致外部工具(通常是統計數據)所采用的“進程”RSS讀數的任何明顯變化。MADV_FREEcgroups

因此,我們將導出通過定期調用運行時獲得的自己的指標。在用 Go 編寫的任何主要服務中讀取記憶統計(和) - 借助專門為此編寫的簡單包。這些讀數反映了 Go 運行時關于其控制下的內存的真實想法。runtime/debug.ReadGCStats

順便說一句,如果您為容器設置了內存限制,則內存統計信息字段非常有用,因為一旦讀取達到或超過內存限制,容器中的進程肯定注定要最終被oom_killer擊落。NextGC


查看完整回答
反對 回復 2022-09-12
  • 2 回答
  • 0 關注
  • 350 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號