|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
要多google,因为我不可能,也不可以给你解答所有内容,我只能告诉你一些关键点,甚至我会故意隐瞒答案,因为在寻找答案的过程中。
PS命令中的%CPU是指一个历程占用CPU的工夫百分比,那末详细的寄义是甚么呢?
PS的man手册的注释是如许的:
cpuutilizationoftheprocessin"##.#"format.
Currently,itistheCPUtimeuseddividedbythetimethe
processhasbeenrunning(cputime/realtimeratio),
expressedasapercentage.Itwillnotaddupto100%
unlessyouarelucky.(aliaspcpu).
ps的代码中是如许处置的
staticintpr_pcpu(char*restrictconstoutbuf,constproc_t*restrictconstpp){
unsignedlonglongtotal_time;/*jiffiesusedbythisprocess*/
unsignedpcpu=0;/*scaled%cpu,999means99.9%*/
unsignedlonglongseconds;/*secondsofprocesslife*/
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)
returnsnprintf(outbuf,COLWID,"%u",pcpu/10U);
returnsnprintf(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-eopcpu,comm,stat,pid|grepbash
和
psS-eopcpu,comm,stat,pid|grepbash
后者的百分比更在。
</p>
不同版本的Linux命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令。 |
|