zoukankan      html  css  js  c++  java
  • Linux中time命令输出的Real time, User time and Sys time

    原文:

    https://www.pianshen.com/article/4664449845/

    http://blog.sciencenet.cn/blog-830496-782593.html

    在运行的程序之前加 time 最后得出三个时间 real、  user、 sys, real是程序的实际运行时间,sys是内核态的时间,user是用户态的时间,单核情况,real远远大于user和sys之和。

    real,从程序开始到程序执行结束时所消耗的时间,包括CPU的用时和所有延迟程序执行的因素的总和。CPU用时被划分为user和sys两块。user表示程序本身,以及它所调用的库中的子例程使用的时间。sys是由程序直接或间接调用的系统调用执行的时间。

    real=cpu用时+其他因素时间
    cpu 用时=user+sys
    所以: real> user + sys (单核情况)

    time命令结果有三行组成:real、user和sys。CPU用时被划分为user和sys两块。

    real值表示从程序开始到程序执行结束时所消耗的时间,包括CPU的用时

    user值表示程序本身,以及它所调用的库中的子例程使用的时间

    sys是由程序直接或间接调用的系统调用执行的时间

    在单处理器上,real值和整个CPU用时之差,也就是real - ( user + sys )是所有延迟程序执行的因素的总和。

    使用示例

    示例一 统计运行时间

    [root@web186 root]# time find . -name "mysql.sh" 
    ./work186/sms/bin/mysql.sh
    ./work186/sms/src/scripts/mysql.sh
    ./work186/sms/src/scripts1/mysql.sh
    ./work186/sms1/bin/mysql.sh
    ./work186/sms1/src/scripts/mysql.sh
    ./temp/sms/bin/mysql.sh
    ./temp/sms/src/scripts/mysql.sh

    real    0m14.837s
    user    0m0.030s
    sys     0m0.120s
    [root@web186 root]#

    注:real远大于user加上sys,因为find需要遍历各个目录,需要大量的I/O操作,而磁盘I/O通常是最慢的环节,因此大部分时间find进程都在等待磁盘I/O完成。

    [root@web186 root]# time find . -name "mysql.sh" 
    ./work186/sms/bin/mysql.sh
    ./work186/sms/src/scripts/mysql.sh
    ./work186/sms/src/scripts1/mysql.sh
    ./work186/sms1/bin/mysql.sh
    ./work186/sms1/src/scripts/mysql.sh
    ./temp/sms/bin/mysql.sh
    ./temp/sms/src/scripts/mysql.sh

    real    0m0.230s
    user    0m0.040s
    sys     0m0.030s

    注:再次运行的时候,发现real time变得很小了,应该是操作系统将刚才操作过的一些文件缓存了的缘故,因而大大减少了磁盘I/O。 

      * Real 是时钟时间,程序从开始至结束的总时间。他包括期间其他进程所占用的时间片和进程被阻塞的时间(如IO等待的时间)
       * User 被测试程序在用户模式下所花的CPU时间。他是进程执行的正真的CPU时间。其他进程调度的时间片以及阻塞(如IO)的时间不包含在内。
       * Sys 是进程在内核中所花费的CPU时间。他表示进程在内核调用中所花的CPU时间,而程序的库调用仍然运行在用户空间下。
         User+Sys表示程序所执行的CPU时间(不包括IO以及其他进程的CPU时间).

  • 相关阅读:
    CentOS-6.8 最详细安装教程(贴镜像文件+多图)
    SSM 框架整合完整流程讲解(IDEA + Maven)
    【万字长文】Spring MVC 层层递进轻松入门 !
    Spring AOP 由浅入深学习教程【新手向】
    Spring 注解和XML两种方式配置IOC
    【万字长文】Spring框架 层层递进轻松入门 (IOC和DI)
    用idea搭建SSM项目,原来这么简单
    Java并发编程:什么是CAS?这回总算知道了
    Java并发编程:Java的四种线程池的使用,以及自定义线程工厂
    Java并发编程:Java线程池核心ThreadPoolExecutor的使用和原理分析
  • 原文地址:https://www.cnblogs.com/itfat/p/14246941.html
Copyright © 2011-2022 走看看