被忽视的time命令

标签: Technical Linux | 发表时间:2019-12-08 11:57 | 作者:老王
出处:https://blog.huoding.com

如果要选 Linux 下最容易被忽视的命令,time 应该算一个。简单来说,它是一个用来计算命令运行时间的工具,之所以说它容易被忽视,一方面很多人根本不知道 time 的存在,而是习惯在命令启动前后记录两个时间戳,然后手动计算命令运行时间;另一方面很多人虽然知道 time 的存在,但是却并没有真正理解它的含义。

下面让我们通过若干例子来理解 time 的真正含义:

shell> time ls

real	0m0.003s
user	0m0.001s
sys	0m0.002s

大概意思是 ls 命令运行花了 0.003 秒,其中用户态花了 0.001 秒,内核态花了 0.002 秒,看上去似乎「real = user + sys」?此等式是否成立,在回答这个问题之前我们不妨看看 real、user、sys 的确切含义,如下定义源自 Stackoverflow

  • Real is wall clock time – time from start to finish of the call. This is all elapsed time including time slices used by other processes and time the process spends blocked (for example if it is waiting for I/O to complete).
  • User is the amount of CPU time spent in user-mode code (outside the kernel) within the process. This is only actual CPU time used in executing the process. Other processes and time the process spends blocked do not count towards this figure.
  • Sys is the amount of CPU time spent in the kernel within the process. This means executing CPU time spent in system calls within the kernel, as opposed to library code, which is still running in user-space. Like ‘user’, this is only CPU time used by the process.

总的来说,real 是我们直观感受到的消耗的时间,如果命令运行时被堵塞了,那么堵塞时间也是被统计在内的, user 统计在用户态态模式下消耗的 CPU 时间,如果命令运行时被堵塞了,那么堵塞时间并不被统计在内,sys 统计在内核态模式下消耗的 CPU 时间,如果命令运行时被堵塞了,那么堵塞时间并不被统计在内。

看上去是否统计堵塞时间是区分 real 和 user、sys 的关键,看看下面这个 sleep 例子:

shell> time sleep 1

real	0m1.002s
user	0m0.001s
sys	0m0.001s

那么除了堵塞时间,还有别的关键点么,让我们再看看下面两个例子:

shell> time find /etc -type f | xargs -n1 -I{} cat {} > /dev/null

real	0m2.050s
user	0m0.626s
sys	0m1.533s

shell> time find /etc -type f | xargs -n1 -I{} -P2 cat {} > /dev/null

real	0m1.079s
user	0m0.681s
sys	0m1.486s

前后两个例子的区别在于后者在使用 xargs 的时候通过「-P」选项激活了多进程,换句话说,后者可以同时用到多个 CPU。

了解了相关知识之后,我们通过 real、user、sys 的大小就可以判断程序的行为:

  • 如果 real 远远大于 user + sys,那么说明程序可能有严重的堵塞问题。
  • 如果 real 基本等于 user + sys,那么说明程序可能没有用到多 CPU 能力,
  • 如果 real 远远小于 user + sys,那么说明程序可能用到了多 CPU 能力。

怎么样?看似简单的 time 命令,是不是远比你想的要复杂得多!

相关 [time 命令] 推荐:

被忽视的time命令

- - 火丁笔记
如果要选 Linux 下最容易被忽视的命令,time 应该算一个. 简单来说,它是一个用来计算命令运行时间的工具,之所以说它容易被忽视,一方面很多人根本不知道 time 的存在,而是习惯在命令启动前后记录两个时间戳,然后手动计算命令运行时间;另一方面很多人虽然知道 time 的存在,但是却并没有真正理解它的含义.

Long time no see,英式中文

- cow - 刁民公園
昨天「星期日檔案」探討港式英語. 節目中好幾個嘉賓包括楊鐵樑先生都說long time no see是港式英語. 楊官的英文程度不會令人懷疑,但long time no see有其背景,不能算作港式英語.

自建基于 Linux 的 Time Capsule 服务

- Class4 - Gracecode.com
2011-02-14 更改 netatalk 部分配置参数. 2011-02-10 初始化版本. Apple 的 Time Machine 提供了非常完备的数据备份方案,但每次使用外接磁盘备份很 麻烦也很容易忘记备份. 同时,个人对于 Time Capsule “高昂的”售价(虽然它的确值那些钱)颇有微词.

Google Analytics Real-Time 实时报告开测

- Ray - 谷奥——探寻谷歌的奥秘
先进的互联网越来越强调实时性,Google Analytics终于也开始了这方面的尝试. 以前我们必须等到第二天才能看到第一天的统计数据,今天随着Google Analytics Real-Time的上线,实时的统计数据报告已经不是梦了. 实时统计对于衡量社交媒体对网站的贡献率是非常重要的,在博文发出之后,你即可实时看到各个社交网络引入的流量:.

夏娃的时间:Just enjoy the time of EVE

- Eastar Lee - ACG批评
08年的《夏娃的时间》作为吉浦康裕的第三部动画作品,也是最长的一部作品,在剧情主旨和背景设定上都带有其出道作《水之语》的很多影子. 人类和机器人之间关系,可以说是SF作品中永恒的主题之一,无数电影动漫小说都对这个主题进行过探讨,要把这个老调常弹的主题说出新意并不是一件容易的事情,但是《夏娃的时间》做到了.

Popcorn Time – 开源电影播放器

- - 小众软件
Popcorn Time 是一个很火爆的开源电影播放器,无需完全下载就可以直接播放 yts 里的高清电影,并且能够加载外挂字幕文件. 由于有版权争论, Popcorn Time 以开源的方式让其不会被版权机构干掉,不过…不知道老外是否想到了天朝早已有类似服务的商业公司. Popcorn Time 已经提供了 Windows、OS X、Linux 三个平台的客户端,无广告,有搜索、分类.

『Time』一周摄影图片精选:June 25 - July 08, 2011

- 翼翔 - 『Leica中文摄影杂志』
链接: 《Times》新闻摄影图片精选     新闻摄影@Leica.org.cn. 美国佛罗里达州肯尼迪航天中心,“亚特兰蒂斯”号航天飞机将于8日发射,这是“亚特兰蒂斯”号最后一次执行太空任务. The shuttle atlantis on mission sts-135 sits on launch pad 39 after the rotating service structure has been rolled back at kennedy space center, cape canaveral, florida, usa..

『Time』一周摄影图片精选:July 30 - August 05,2011

- L - Leica中文摄影杂志
链接: 《Times》新闻摄影图片精选     新闻摄影@Leica.org.cn. 一名学生在斋月晨祷阅读“古兰经”,印度尼西亚. A student read the Quran before morning prayers in the holy month of Ramadan at the Al-Mukmin Islamic boarding school in Solo, Indonesia, Tuesday..

『Time』一周摄影图片精选:August 06 - 13, 2011

- Roger - Leica中文摄影杂志
链接: 《Times》新闻摄影图片精选     新闻摄影@Leica.org.cn. 一名摘葡萄工在倾倒整篮的白葡萄,法国Domaine de Rombeau葡萄庄园. 摄影师:Guillaume Horcajuelo. 大雨的积水导致学校被淹,两名小学生在水中搬运自己的桌椅,印度. 摄影师:Mukesh Gupta.

『Time』一周摄影图片精选:Feb 11 - 25,2011

- Yuli - Leica中文摄影杂志
链接: 《Times》新闻摄影图片精选     新闻摄影@Leica.org.cn. 消防队员试图扑灭空袭导致的油罐车大火,巴基斯坦. 美国卡纳维拉尔角发射中心的“发现号”整装待发,即将于2月24日发射升空. 本次飞行是美国全部航天飞机的最后一次进入太空. 摄影师: John Raoux. Space shuttle Discovery stands ready for launch at Pad 39A as the rotating service structure is moved back to expose the orbiter at the Kennedy Space Center in Cape Canaveral, Fla..