- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试了解如何
int getrusage(int who, struct rusage* usage)
为了计算我的一个程序的运行时间而工作。
我 Handlebars 册页改红了,大概 10 次,但仍然无法得到它。试图在网上找到一些东西,但除了关于这个函数的手册页什么都找不到。
我不清楚的是 usage 结构中存储了什么——手册页不是很清楚——所以我试了用调试器运行它并直接查看里面的内容,但仍然不明白,特别是两个结构 - timeval ru_utime 和 timeval ru_stime - 是如何工作的。
它们里面的内容采用不同的值,有时为 0,有时为 2000等等
我运行了一个简单的程序,它有一个 for 循环,不断地分配和释放内存。我用秒表实际查看了多少时间,用了 5.23 秒。但我在这些结构中看到的似乎完全不相关:
循环之前:
ru_utime = { tv_sec = 0, tv_usec = 1000}, ru_stime = { tv_sec = 0, tv_usec = 1000 }
循环后:
ru_utime = { tv_sec = 4, tv_usec = 677000}, ru_stime = { tv_sec = 0, tv_usec = 2000}
所以,谁能解释一下或者提供一些很好的链接来解释这个问题?
我将不胜感激。
最佳答案
你感兴趣的两个子结构描述如下:
ru_utime This is the total amount of time spent executing in user mode, expressed in a timeval structure (seconds plus microseconds).
ru_stime This is the total amount of time spent executing in kernel mode, expressed in a timeval structure (seconds plus microseconds).
为了不让你砸满内存,你的系统有两个“特权级”,分别叫做内核态和用户态。为了保持快速和简单,您的用户模式不能看到所有内存,它不能与 I/O 设备通信,只能真正进行数字运算。对于任何更复杂的事情(例如内存页面分配、文件系统读/写、将内容打印到屏幕上),它必须要求内核来做,而内核可以访问所有这些。这是通过称为“系统调用”的机制完成的;阅读这篇维基文章以进一步阅读:http://en.wikipedia.org/wiki/System_call
在高层次上,ru_utime
结构返回您的程序花费在实际计算上的时间量,ru_stime
结构返回您的程序已经花费的时间量在进行磁盘访问、打印到屏幕等时一直在等待内核的回答。
关于c - getrusage 是如何工作的以及 usage 结构内部到底是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27586001/
我正在尝试获取 Ubuntu 上进程消耗的 CPU 时间。据我所知,有两个函数可以完成这项工作:getrusage() 和 clock_gettime(CLOCK_PROCESS_CPUTIME_ID
我正在开发一个 C 程序,其中我必须 fork() 一个进程并使用 getrusage() 函数来打印用户时间和内核时间子进程。 这是我的代码: #include #include #includ
我目前正在使用 getrusage 来告诉我我在应用程序的事件循环中花费了多少时间。 我想知道这将如何受到 hibernate 的影响。是否报告了休眠时间?或者作为系统时间?这是在 Posix 的某个
我正在尝试使用套接字将 getrusage 函数实现到我的客户端服务器程序中,所有这些都在 FreeBSD 上运行。我想打印出处理器时间使用情况和内存使用情况。 我已尝试执行以下代码,但得到的输出是
我正在尝试确定我的 PHP 脚本的 CPU 使用率。我刚找到 this article其中详细介绍了如何查找系统和用户 CPU 使用时间(第 4 节)。 但是,当我尝试这些示例时,我得到了完全不同的结
我正在尝试使用以下代码通过 getrusage 系统调用测量子进程使用的内存量 #include using std::cout; using std::endl; #include #inclu
我正在尝试使用 usage 测量各种函数调用的资源使用时间(用户和系统)。我发现我得到的结果大约为 10 毫秒,例如 0 秒、70000 秒、10000 秒等。如果有办法为 getrusage 设置精
我想跟踪给定命令 执行的磁盘 io。 getrusage() 可以在C中使用;我能以某种方式在命令行中获得相同的结果吗? time 和 times 显示用户和系统花费的时间,后者包括自己/ child
这个 C++ 程序给出了可变的结果。有时变化很大。我调用 getrusage() 一次以获得开始时间。然后我循环调用 rand() 500000000 次。然后我再次调用 getrusage() 并输
作为 this question 的延续我想知道我是否可以获得一些关于如何 make use of getrusage 的简单示例代码.我想用它来查找进程使用的 CPU 时间,最好是从 PID。 我正
在一个为了通过减法得到一个任务的时间而调用了两次getrusage()的程序中,曾经看到过一个断言,说任务的时间应该是非负的,失败.当然,这不容易复制,尽管我可以编写一个专门的程序来更容易地复制它。
我正在尝试了解如何 int getrusage(int who, struct rusage* usage) 为了计算我的一个程序的运行时间而工作。 我 Handlebars 册页改红了,大概 10
我想了解 Linux 中 cpu 时间是如何计算的。特别是,我想关注这个问题 clock_gettime和 getrusage .我想知道这两个有什么关系。 一个会调用另一个吗? 它们都依赖于相同的底
我在 Linux 中编写了两个系统调用,并在系统调用中使用 getrusage 测量了它们的资源使用情况。然而,我得到的大多数结果都是 0,我不确定这是否有意义。这是输出: [ 4103.028728
我正在编写一个 shell,我需要在其中同时启动多个子进程并记录系统时间和用户时间。 到目前为止,我能够做到。唯一的问题是我正在使用 wait4 获取子程序使用的系统资源并将其放入我的名为 usage
所以我想知道当前线程到目前为止执行的时间。我正在尝试为此使用 getrusage(RUSAGE_THREAD, &r_usage);。这是我的困惑: 1- 此函数返回的时间是否包括线程被阻塞(例如,在
当我运行具有两个不同部分的程序时,我试图获取页面错误。 我所做的是使用两种矩阵乘法方法进行一些运算,并尝试找出哪一种方法会导致更多页面错误。 /Operations for method 1 getr
getrusage() 可以显示进程的子进程使用的内存量。我正在创建一个 shell,我将从中启动几个子程序。 getrusage() 将报告所有这些 child 正在使用的内存总量,这不是我想要的。
我正在尝试使用 getrusage(.)和最大驻留集大小 (maxrss) 以检查内存泄漏。但是,当我故意尝试制造泄漏时,maxrss 不会改变。也许我对 maxrss 的理解还不够深入。这是代码:
我想测量执行某些代码所需的系统时间。为此,我知道我会将所述代码夹在对 getrusage() 的两次调用之间,但我得到了一些意想不到的结果...... #include #include #inc
我是一名优秀的程序员,十分优秀!