
我有一個包含以下資源的邊車容器:
resources:
limits:
memory: 512Mi
requests:
memory: 64Mi
然而,當我運行時top
,我看到了這個:
- envoy 和 Pilot-agent 似乎分別使用 ~ 363MB 和 61MB
- 頂部已用記憶體為 54.6MB
- 運行
free -m
給出以下結果;看似不相關的答案
$ free -m
total used free shared buff/cache available
Mem: 385307 47140 315018 292 23148 336021
Swap: 0 0 0
這裡到底發生了什麼,這些進程消耗了多少記憶體?
答案1
此空閒和頂部輸出顯示,主機記憶體總量約為 385,000 MiB,已使用約 50,000 MiB。
容器共享一個內核,因此主機指標通常會顯示節點範圍的數字。即使命名空間只顯示您的進程和檔案。這與專用虛擬機器或實體主機不同,後者的作業系統僅用於支援您的應用程式。
每個容器編號需要查詢 cgroups 編號。在 Stack Overflow 上查看一些實現此目的的方法:檢查 kubernetes pod CPU 和內存。其中許多需要指標伺服器。
請注意新增進程的 RESident 記憶體並期望它是系統的確切記憶體使用量。這不包括共享記憶體或快取。核心對記憶體做了一些奇怪的記帳技巧。你的 3 位有效數字是正確的想法。儘管在少量進程的簡單情況下,主要使用私有內存,但這是一個很好的估計。