天天看點

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/stat
cpu 432661 13295 86656 422145968 171474 233 5346
cpu0 123075 2462 23494 105543694 16586 0 4615
cpu1 111917 4124 23858 105503820 69697 123 371
cpu2 103164 3554 21530 105521167 64032 106 334
cpu3 94504 3153 17772 105577285 21158 4 24
intr 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 19067887
btime 1139187531
processes 270014
procs_running 1
procs_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%