Linux Shell中PS命令中的%CPU的含義介紹

來源:互聯網
上載者:User

PS命令中的%CPU是指一個進程佔用CPU的時間百分比,那麼具體的含義是什麼呢? PS的man手冊的解釋是這樣的:

cpu utilization of the process in "##.#" format. Currently, it is the CPU time used divided by the time the process has been running (cputime/realtime ratio),
expressed as a percentage. It will not add up to 100% unless you are lucky. (alias pcpu).
ps的代碼中是這樣處理的 :
static int pr_pcpu(char *restrict const outbuf, const proc_t *restrict const pp){unsigned long long total_time; /* jiffies used by this process */unsigned pcpu = 0; /* scaled %cpu, 999 means 99.9% */unsigned long long seconds; /* seconds of process life */total_time = pp->utime + pp->stime;if(include_dead_children) total_time += (pp->cutime + pp->cstime);seconds = seconds_since_boot - pp->start_time / Hertz;if(seconds) pcpu = (total_time * 1000ULL / Hertz) / seconds;if (pcpu > 999U)return snprintf(outbuf, COLWID, "%u", pcpu/10U);return snprintf(outbuf, COLWID, "%u.%u", pcpu/10U, pcpu%10U);}

其中
seconds_since_boot是用目前時間減去系統啟動時的時間得到的,啟動的時間通過讀/proc/stat中的btime獲得。而
start_time是進程被fork時設定的。另外進程的時間包括在使用者態啟動並執行時間和核心態啟動並執行時間。這樣,這個百分比的含義就是從進程被建立到執
行ps操作這段時間T內,這個進程啟動並執行時間和T的比值。


如果在ps中指定了include_dead_children選項,那麼這個進程的時間還
包括它的它建立的但已經死去的進程的已耗用時間,cutime和cstime會在父進程為子進程收屍的時候調用wait_task_zombie來累加。比
如在bash中執行updatedb,在執行完成後,運行

ps -eo pcpu,comm,stat,pid|grep bash

ps S -eo pcpu,comm,stat,pid|grep bash

 


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.