docker cgroup 資源監控的詳解
1.cgroup術語解析:
blkio: 這個subsystem可以為塊設備設定輸入/輸出限制,比如物理驅動設備(包括磁盤、固態硬盤、USB等)。cpu: 這個subsystem使用調度程序控制task對CPU的使用。cpuacct: 這個subsystem自動生成cgroup中task對CPU資源使用情況的報告。cpuset: 這個subsystem可以為cgroup中的task分配獨立的CPU(此處針對多處理器系統)和內存。devices 這個subsystem可以開啟或關閉cgroup中task對設備的訪問。freezer 這個subsystem可以掛起或恢復cgroup中的task。memory 這個subsystem可以設定cgroup中task對內存使用量的限定,并且自動生成這些task對內存資源使用情況的報告。perfevent 這個subsystem使用后使得cgroup中的task可以進行統一的性能測試。{![perf: Linux CPU性能探測器,詳見https://perf.wiki.kernel.org/index.php/MainPage]}*net_cls 這個subsystem Docker沒有直接使用,它通過使用等級識別符(classid)標記網絡數據包,從而允許 Linux 流量控制程序(TC:Traffic Controller)識別從具體cgroup中生成的數據包。
2.資源監控的關鍵目錄:cat讀出
已使用內存:
/sys/fs/cgroup/memory/docker/應用ID/memory.usage_in_bytes
分配的總內存:
/sys/fs/cgroup/memory/docker/應用ID/memory.limit_in_bytes
已使用的cpu:單位納秒
/sys/fs/cgroup/cpuacct/docker/應用ID/cpuacct.usage
系統當前cpu:
$ cat /proc/stat | grep 'cpu '(周期/時間片/jiffies)#得到的數字相加/HZ(cat /boot/config-`uname -r` | grep '^CONFIG_HZ='ubuntu 14.04為250)就是系統時間(秒)#再乘以10*9就是系統時間(納秒)
例子
[~]$ cat /proc/statcpu 432661 13295 86656 422145968 171474 233 5346cpu0 123075 2462 23494 105543694 16586 0 4615cpu1 111917 4124 23858 105503820 69697 123 371cpu2 103164 3554 21530 105521167 64032 106 334cpu3 94504 3153 17772 105577285 21158 4 24intr 1065711094 1057275779 92 0 6 6 0 4 0 3527 0 0 0 70 0 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ctxt 19067887btime 1139187531processes 270014procs_running 1procs_blocked 0輸出解釋CPU 以及CPU0、CPU1、CPU2、CPU3每行的每個參數意思(以第一行為例)為:參數 解釋user (432661) 從系統啟動開始累計到當前時刻,用戶態的CPU時間(單位:jiffies) ,不包含 nice值為負進程。nice (13295) 從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間(單位:jiffies) system (86656) 從系統啟動開始累計到當前時刻,核心時間(單位:jiffies) idle (422145968) 從系統啟動開始累計到當前時刻,除硬盤IO等待時間以外其它等待時間(單位:jiffies) iowait (171474) 從系統啟動開始累計到當前時刻,硬盤IO等待時間(單位:jiffies) ,irq (233) 從系統啟動開始累計到當前時刻,硬中斷時間(單位:jiffies) softirq (5346) 從系統啟動開始累計到當前時刻,軟中斷時間(單位:jiffies)
cpu使用率: (已使用2-已使用1)/(系統當前2-系統當前1)*100%
如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答
圖片精選