全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

在Linux上time基础用法详解

时间:2023-10-09 17:28

人气:

作者:admin

标签: CPU  内核 

导读:1 基础用法详解 先来看下最基础的用法,也可能是大家最常见的用法了 root @chopin : ~ $ time find . - name "chopin.txt"...... real 0 m0 .174 s user 0 m0 .084 ssys 0 m0 .084 s 可以很清楚看到, find 命令执行的...

1 基础用法详解

先来看下最基础的用法,也可能是大家最常见的用法了

root@chopin:~$ time find . -name "chopin.txt"
......
real   0m0.174s
user   0m0.084s
sys    0m0.084s

可以很清楚看到,find 命令执行的时间为 0.174s ,是不是很简单,很方便呢

不过,time 命令输出了三个参数,我们只用到了第一个参数,其它两个参数代表什么含义呢?

这里我来解释一下:

  • real :表示的是墙上时间,说白了,其实就是从程序运行开始到结束所经历的时间;
  • user :表示程序运行期间,cpu 在用户态所花费的时间;
  • sys :表示程序运行期间,cpu 在内核态所花费的时间;

细心的读者会发现,上述案例中的 user + sys 不等于 real ,这是怎么回事呢?

其实上边解释的 usersys ,是 cpu 执行指令所消耗的时间,并不包含:进程阻塞 IO、调度排队,这些非 cpu 运行时间。

案例中 find 执行查找文件过程中,会有磁盘 IO 读取,这时 cpu 会被释放出来干别的事情,这些 IO 消耗的时间,是不包含在 usersys 统计数据中,所以就出现了 real 时间大于 user + sys 了。

再通过一个示例来验证并加强我们的理解

root@chopin:~$ time sleep 2
real   0m2.001s
user   0m0.000s
sys    0m0.000s

可以清楚地看到,sleep 命令基本上没有消耗 cpu,程序真实的运行时间就是 2 秒

那我们是不是可以得出如下结论了呢:

real >= user + sys

其实这个结论在单个 cpu 情况下,是正确的。

如果服务器是多个 cpu,你的程序正好可以将多个 cpu 充分利用起来,程序运行期间是多核心并行的,那么 user + sys 统计的 cpu 时间可能就会大于 real 时间啦

所以这 3 个时间之间的关系并不是恒定的,你需要清楚的了解服务器是否为多个核心。

通过统计到的 cpu 消耗时间,我们也可以大概知道,程序运行期间 cpu 利用情况。对于单核,计算密集型的程序,real 会很接近 usersys 时间之和的。

Tips:有些同学可能对操作系统可能不太熟悉,这里简单科普下内核态用户态的基本概念

Linux 为使系统更稳定,采取了隔离保护的措施,运行状态分为内核态和用户态

  • 用户态 :用户代码不具备直接访问底层资源的能力,需要借助内核提供的系统调用 API。在这种隔离保护下,即使用户程序崩溃,也不会影响整个系统的功能。
  • 内核态 :内核代码具备最大权限,可执行任意 cpu 指令,不受任何限制。内核态通常是操作系统提供的最底层、最可靠的代码运行的,内核态的代码崩溃是灾难性的,影响整个系
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信