zoukankan      html  css  js  c++  java
  • ps 和 top 的cpu的区别

    cpu的计算

    一、ps命令中%CPU字段的含义
    1、"man ps"中的解释
    CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process.
    This is not ideal,and it does not conform to the standards that ps otherwise conforms to.CPU usage is unlikely to add up to exactly 100%.


    2、计算模型
    %CPU=(进程的生命周期中占用CPU的时间)*100/(进程的生命周期代表的时间长度)
    比如一个进程的生命周期的时间长度是1000s,然后在这1000s内占用CPU的时间是500s,那么
    %CPU=500*100/1000=50
    即最后的结果表示50%


    3、具体计算过程
    1)获取数据
    主要是从/proc/uptime文件和/proc/[PID]/stat文件获取相关数据
    2)计算
    主要根据“2、计算模型”的思路利用获得的数据进行计算

    二、top命令中%CPU字段的含义
    根据"man top"中的解释:
    "The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time."


    top命令中的%CPU字段的含义跟ps命令中的%CPU字段的含义不一样
    top命令中的%CPU字段表示:在一个固定的间隔时间内,某个进程使用的CPU时间占总CPU时间(即这段间隔时间)的比值。[在Window操作系统下的资源管理器中的CPU字段含义也是如此]


    三、手动计算top命令中的%CPU字段
    1、利用ps
    确定一个间隔时间,在间隔时间的开始处,执行ps命令,获取某个进程在开始处已经使用的CPU时间;在间隔时间的结束处,执行ps命令,获取某个进程在结束处已经使用的CPU时间。
    间隔时间内进程使用的CPU时间=结束处使用的CPU时间-开始处使用的CPU时间
    %CPU=间隔时间内进程使用的CPU时间*100/CPU总时间(即间隔时间长度)


    2、利用/proc下的数据
    其实ps命令的数据来自于/proc目录下的文件,因而如果直接使用/proc下的数据也是可以实现“手动计算top命令中的%CPU字段”的目标的


    参考文献:
    [1]http://unix.stackexchange.com/questions/58539/top-and-ps-not-showing-the-same-cpu-result
    接!

  • 相关阅读:
    VC++6.0在win8.1系统下运行失败的解决办法
    oracle赋值问题(将同一表中某一字段赋值给另外一个字段的语句)
    Myeclipse 2014破解教程
    关于js赋值给input解析
    java时间格式
    Idea报错Check $M2_HOME environment variable and mvn script match.
    新博客
    理解jquery的$.extend()、$.fn和$.fn.extend()
    在vs code中使用ftp-sync插件实现客户端与服务器端代码的同步
    js字符串倒序
  • 原文地址:https://www.cnblogs.com/saryli/p/9925916.html
Copyright © 2011-2022 走看看