zoukankan      html  css  js  c++  java
  • 墙上时钟时间 ,用户cpu时间 ,系统cpu时间

    一、 墙上时钟时间 ,用户cpu时间 ,系统cpu时间定义与联系

    时钟时间(墙上时钟时间wall clock time):从进程从开始运行到结束,时钟走过的时间,这其中包含了进程在阻塞和等待状态的时间。

    用户CPU时间:就是用户的进程获得了CPU资源以后,在用户态执行的时间。
    系统CPU时间:用户进程获得了CPU资源以后,在内核态的执行时间。

       进程的三种状态为阻塞、就绪、运行。

       时钟时间 = 阻塞时间 + 就绪时间 +运行时间
       用户CPU时间 = 运行状态下用户空间的时间
       系统CPU时间 =  运行状态下系统空间的时间。

       用户CPU时间+系统CPU时间=运行时间。

    注意:
    其中,用户CPU时间和系统CPU时间之和为CPU时间,即命令占用CPU执行的时间总和。实际时间要大于CPU时间,因为Linux是多任务操作系统,往往在执行一条命令时,系统还要处理其它任务。
    另一个需要注意的问题是即使每次执行相同命令,但所花费的时间也是不一样,其花费时间是与系统运行相关的。

    在多核处理器机器上,若进程含有多个线程或通过fork调用创建子进程,则实际时间(墙上时钟时间)可能小于CPU总时间——因为不同线程或进程可并行执行,但其时间会计入主进程的CPU总时间。若程序在某段时间处于等待状态而并未执行,则实际时间可能大于CPU总时间。其数值关系总结如下:

    • Real < CPU,表明进程为计算密集型(CPU bound),利用多核处理器的并行执行优势;
    • Real ≈ CPU,表明进程为计算密集型(CPU bound),未并行执行;
    • Real > CPU,表明进程为I/O密集型(I/O bound),多核并行执行优势并不明显。

    在单核处理器上,Real时间和CPU时间之差,即Real- (User + Sys)是所有延迟程序执行的因素的总和。可估算程序运行期间的CPU利用率为CpuUsage = (User + Sys)/ Real * 100(%)。

    在SMP(对称多处理系统)上,该差值近似为Real* ProcessorNum - (User + Sys)。这些因素包括:

    • 调入程序文本和数据的I/O操作;
    • 获取程序实际使用内存的I/O操作;
    • 由其它程序消耗的CPU用时;
    • 由操作系统消耗的CPU用时。

    二、实例

     linshuqiang@ubuntu:~/temp$ time  ./test  
        sdga  
        s   d   g   a     
         //上面是测试test程序的   
        real    0m4.019s                     //时钟时间  
        user    0m0.004s           //用户CPU时间  
        sys 0m0.000s                   //系统CPU时间  


    三、参考文献

    http://os.51cto.com/art/201407/445853.htm (说得很详细,值得看一下)

    http://blog.chinaunix.net/uid-27629574-id-3880991.html

    http://blog.csdn.net/fjt19900921/article/details/8301230

  • 相关阅读:
    openOPC与监控页面二
    Node教程——Gulp前端构建工具-教程
    回到顶部插件
    《软件测试52讲》——测试基础知识篇
    计算贝塞尔曲线上点坐标
    少年,不要滥用箭头函数啊
    JS属性defer
    leetcode-572-另一个树的子树
    leetcode-9.-回文数
    leetcode-300-最长上升子序列
  • 原文地址:https://www.cnblogs.com/vinozly/p/5078755.html
Copyright © 2011-2022 走看看