当前位置: 首页 > 面试题库 >

Linux time命令输出中的real,user和sys的含义

郝池暝
2023-03-14
问题内容

$ time ./Test

real    0m2.906s
user    0m2.887s
sys     0m0.017s

这是程序代码:

#include <iostream>
#include <map>

void func_a() {
    std::map<int, int> m;
    for (unsigned int i = 0; i < 10000; i++) {
        m.insert(std::pair<int, int>(i, i));
    }
}

void func_b() {
    std::map<int, int> m;
    for (unsigned int i = 0; i < 1000000; i++) {
        m.insert(std::pair<int, int>(i, i));
    }
}

int main() {
    func_a();
    func_b();
    return 0;
}

问题答案:

如果您查看联机帮助页(man time),它会指出:

time命令使用给定参数运行指定的程序命令。命令完成后,时间将消息写入标准输出,以提供有关此程序运行的计时统计信息。这些统计信息包括(i)调用和终止之间经过的实时时间;(ii)用户CPU时间(由times(2)返回的结构tms中tms_utime和tms_cutime值的总和),以及(iii)系统CPU时间(由times(2)返回的结构tms中tms_stime和tms_cstime值的总和)。

但是,基本上,user时间是程序在CPU上运行的sys时间,而时间是程序等待操作系统为其执行任务的时间。如果您对基准测试感兴趣,那user + sys就是使用的好时机。 real可能会受到其他正在运行的进程的影响,并且更加不一致。



 类似资料:
  • 问题内容: 在上面的状态o / p中, _ 设备_ 条目表示什么? 问题答案: 在示例中,“工具”(801h)位于/ dev / sda1中(主要设备号为8,次要设备号为1),这是/ dev / sda中的第一个分区。

  • 我想为我的服务器做一些简单的日志记录,它是一个运行在Docker容器中的小Flask应用程序。 这是Dockerfile 正如您在最后一行中看到的,我将stderr和stdout重定向到一个文件。现在我运行这个容器并将外壳放入其中 并观察以下事情: 服务器正在运行,网站正在运行 没有 产生: 但是没有日志...然而,如果我到容器,我可以看到应用程序在控制台中生成输出。 使用Docker时如何正确重

  • 我想使用OpenNLP来标记泰语单词。我下载了OpenNLP和Thai tokenize模型,并运行了以下程序 我将下载的放在我调用的目录中并运行以下内容。在中包含此文本。但是,我得到的输出只有这些文本: 我对OpenNLP非常陌生,如果有人知道如何从中获取输出,请告诉我。

  • 主要内容:sudo命令的配置文件/etc/sudoers我们知道,使用 su 命令可以让普通用户切换到 root 身份去执行某些特权命令,但存在一些问题,比如说: 仅仅为了一个特权操作就直接赋予普通用户控制系统的完整权限; 当多人使用同一台主机时,如果大家都要使用 su 命令切换到 root 身份,那势必就需要 root 的密码,这就导致很多人都知道 root 的密码; 考虑到使用 su 命令可能对系统安装造成的隐患,最常见的解决方法是使用 sudo

  • 我在生产中遇到了一个奇怪的问题,在操作了5年多后只发生过一次。我们发现,PSPermGen和“real”持续时间远远高于User+SYS时间。2016年2月4日,PSPermGen花了38.96秒,而以前的运行是0.2-0.3秒,并且没有释放内存。当User+SYS为0.3-0.4秒时,实时时间需要40秒,与以前的运行相比,这是异常高的。完全的GC并不经常发生,我也没有观察到任何与GC相关的错误。

  • Computer says no. — Little Britain 一个问题的详细反馈会对解决问题有帮助。当你使用 exec 资源在节点上执行命令时, 并不总能轻易地找出其为何没有正确执行。如果命令返回一个非零的退出状态,Puppet 就会返回类似如下的错误消息: err: /Stage[main]//Node[cookbook]/Exec[this-will-fail]/returns: ch