0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在Linux上time基础用法详解

麦辣鸡腿堡 来源:肖邦Linux 作者:肖邦Linux 2023-10-09 17:28 次阅读

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 指令,不受任何限制。内核态通常是操作系统提供的最底层、最可靠的代码运行的,内核态的代码崩溃是灾难性的,影响整个系
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内核
    +关注

    关注

    3

    文章

    1309

    浏览量

    39846
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206560
  • Linux
    +关注

    关注

    87

    文章

    10990

    浏览量

    206735
收藏 人收藏

    评论

    相关推荐

    Linux LED子系统详解

    Linux LED子系统详解
    的头像 发表于 06-10 10:37 986次阅读
    <b class='flag-5'>Linux</b> LED子系统<b class='flag-5'>详解</b>

    labview中的Elapsed Time控件的用法

    跪求labview中的Elapsed Time控件的用法
    发表于 03-22 23:36

    linux中comm命令用法

    linux系统中comm命令用法详解 linux系统下的comm命令是一个非常实用的文件对比命令。 comm命令功能:选择或拒绝两个已排序的文件的公共的行。 comm命令语法:comm
    发表于 07-04 08:22

    OrCAD中创建总线及用法详解

    OrCAD中创建总线及用法详解,如何创建总线,菜单place->bus或者右侧快捷按钮
    发表于 12-02 10:18 2.5w次阅读

    linux下网卡配置详解

    linux下网卡配置详解
    发表于 12-15 22:38 0次下载

    Linux设备驱动开发详解》第13章、Linux块设备驱动

    Linux设备驱动开发详解》第13章、Linux块设备驱动
    发表于 10-27 11:24 18次下载
    《<b class='flag-5'>Linux</b>设备驱动开发<b class='flag-5'>详解</b>》第13章、<b class='flag-5'>Linux</b>块设备驱动

    Linux设备驱动开发详解》第7章、Linux设备驱动中的并发控制

    Linux设备驱动开发详解》第7章、Linux设备驱动中的并发控制
    发表于 10-27 11:37 10次下载
    《<b class='flag-5'>Linux</b>设备驱动开发<b class='flag-5'>详解</b>》第7章、<b class='flag-5'>Linux</b>设备驱动中的并发控制

    Linux设备驱动开发详解》第4章、Linux内核模块

    Linux设备驱动开发详解》第4章、Linux内核模块
    发表于 10-27 14:15 0次下载
    《<b class='flag-5'>Linux</b>设备驱动开发<b class='flag-5'>详解</b>》第4章、<b class='flag-5'>Linux</b>内核模块

    XMEGA PWM模块多通道的用法详解

    本文主要详解XMEGA PWM模块多通道的用法,具体的跟随小编来了解一下。
    的头像 发表于 06-18 14:09 4005次阅读
    XMEGA PWM模块多通道的<b class='flag-5'>用法</b><b class='flag-5'>详解</b>

    你会使用Linux 中的“!”惊叹用法

    前言 实际上,不起眼的“!”在linux中有着很多让你惊叹的妙用。本文就来细数那些“!”的神奇用法
    的头像 发表于 01-29 09:08 2370次阅读

    CMake用法详解

    CMake用法详解
    发表于 10-25 16:28 2次下载

    Linux设备驱动开发详解

    Linux设备驱动开发详解
    发表于 10-28 11:03 45次下载

    Linux系统维护命令的用法

    Linux有很多命令,每个命令基本可以用一篇文章介绍,本文仅简单总结一些常用系统维护命令的用法
    的头像 发表于 04-17 14:57 650次阅读
    <b class='flag-5'>Linux</b>系统维护命令的<b class='flag-5'>用法</b>

    Linux中GNU time命令的使用

    更强大的功能 GNU time 命令提供了更强大的功能: 更详细的统计信息 更丰富的格式输出 支持保存统计数据到文件 下边我们来学习写 GNU time 的使用 1. 最简单的用法 root
    的头像 发表于 10-09 17:53 446次阅读

    linux中find用法详解

    Linux中, find 命令是一个非常强大的工具,用于在指定目录下查找文件和目录。下面是 find 命令的用法和详细解释: 语法: find [路径] [表达式] 路径:要查找的目录路径。可以
    的头像 发表于 11-08 14:29 437次阅读