一、CGroups 關于mememory的限制操作
cgroup關于cpu操作? ?關于memeory cgroup的幾個要點
①??memeory限額類
1、memory.limit_bytes:'硬限制'--> 限制'最大內存'使用量,單位有k、m、g三種,填-1則代表無限制,默認是'字節'2、memory.soft_limit_bytes:'軟限制',只有比強制限制設置的值'小'時才有意義,填寫'格式同上'場景:1) 當整體內存'緊張'的情況下,task 獲取的內存就'被限制'在軟限制額度之內2) 以保證不會有太多進程'因內存挨餓';可以看到加入了內存的資源限制'并不代表'沒有資源競爭3、memory.memsw.limit_bytes:設定'最大內存'與 'swap 區'內存'之和'的用量限制,填寫格式同上
②??memeory報警與自動控制
4、memory.oom_control:1) 該'參數'填 0 或 12) '0表示開啟',當 cgroup 中的進程使用資源'超過界限時'立即殺死進程,'1'表示'不啟用'3) '默認'情況下,包含 memory 子系統的 cgroup 都'啟用'4) 當oom_control'不啟用',實際使用內存'超過界限時'進程會'被暫停'直到有空閑的內存資源
③? memeory統計與監控
5、memory.usage_bytes:統計???'該??? cgroup 中???進???程'???使???用???的???當???前???總???內???存???用???量,以'字節'為單位6、memory.max_usage_bytes:統計報???告???該??? cgroup 中???進???程???使???用???的???'最???大???'內???存???用???量6、memory.failcnt:報???告???內???存'???達???到'???在??? memory.limit_in_bytes設???定???的???'限???制???值'???的???次???數???7、memory.stat:包含'大量'的內存統計數據8、cache:'頁???緩???存'???,包???括??? tmpfs(shmem),單位為字節9、rss:'匿???名???和??? swap 緩???存'???,不???包???括??? tmpfs(shmem),單位為字節9、mapped_file:memory-mapped 映???射???的???文???件???大???小???,包???括??? tmpfs(shmem),單???位???為???字???節???10、pgpgin:'存???入'???內???存???中???的???頁???數
???
11、pgpgout:從???內???存???中'???讀???出???'的???頁???數12、swap:swap 用???量???,單???位???為???字???節???
kubelet --cgroup-driver=systemd
④? ?在容器中使用cgroup
容器本質:操作系統上的一個'進程process',關于進程有'哪些'管理nerdctl run -h '截取部分輸出'
docker 背后的內核 Cgroups 機制
需求:在 Containerd 的容器中來'使用 cgroup',并限制其使用內存為 '50M'
?
nerdctl inspect nginx | jq '.[0].Id' -r
?
說明:nginx 容器'進程 ID' 也會出現在上面的 'tasks' 文件中
說明:刪除'容器'后,/sys/fs/cgroup/memory/default/ 目錄下的'容器 ID'文件夾也會自動刪除
namespace基礎概念
容器背后的兩個核心技術:Cgroups 和 Namespace
Docker背后的內核Cgroup機制? ??cgroup的兩種驅動 cgroups systemd
linux 虛擬化 docker 之 cgroup? ? ?linux cgroup學習總結mount