来讲讲:Linux Shell中PS命令中的%CPU的寄义先容
要多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命令数量不一样,这里笔者把它们中比较重要的和使用频率最多的命令。 安装一个新的软件时先看README,再看INSTALL然后看FAQ,最后才动手安装,这样遇到问题就知道为什么。如果Linux说明文档不看,结果出了问题再去论坛来找答案反而浪费时间。 和私有操作系统不同,各个Linux的发行版本的技术支持时间都较短,这对于Linux初学者是往往不够的。 熟读Linux系统有关知识,如系统目录树,有关内容可购书阅读或搜索论坛。 期间我阅读了不少关于Linux的相关资料,其中也不乏一些有趣的小故事,这既丰富了我的课余生活,也让我加深了对一些术语的理解,比玩游戏强多了。? 这种补充有助于他人在邮件列表/新闻组/论坛中搜索对你有过帮助的完整解决方案,这可能对他们也很有用。 任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统. 感谢老师和同学们在学习上对我的帮助。
页:
[1]