雖然cgroup管控了該cgroup下所有進程的CPU使用情況,但從操作系統的角度上,不論進程是否隸屬于某個子cgroup下,仍然是共用宿主機的CPU。所以監控宿主機上該進程的CPU就能得到進程的CPU監控指標。
Linux上常用的CPU監控命令是top。top對CPU監控的原理是在time1時刻獲取CPU從啟動時的累計總時間countAll1和busy總時間countBusy1,再到time2時刻獲取CPU總時間countAll2和busy總時間countBusy2,最后用busy的時間差值減去總時間的差值得到了在time1到time2這個時間段內機器CPU的占用情況。也就是:
CPU占用率(%) = (countBusy2 - countBusy1)/(countAll2 - countAll1) 100進程同理,在兩個時刻分別得到每個進程的busy總時間countProcBusy1和countProcBusy2,則得到進程CPU占用率:
進程CPU占用率(%) = (countProcBusy2 - countProcBusy1)/(countProcAll2 - countProcAll1)100第一行是總的CPU使用情況,具體參數的意思:
所以,選擇當前為time1,3秒后為time2,countAll = user + nice + system + idle + iowait + irq + softirq + stealstolean + guest + guest_nice。countBusy為countAll減去idle的值,這樣上面第一個公式的所有需要的值就齊了,可以直接計算。
第二行、第三行是每個邏輯CPU的使用情況,這里記下有兩個邏輯CPU,CPU的邏輯核數與CPU顯示模式irix和solaris有關。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。