- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
在一个为了通过减法得到一个任务的时间而调用了两次getrusage()
的程序中,曾经看到过一个断言,说任务的时间应该是非负的,失败.当然,这不容易复制,尽管我可以编写一个专门的程序来更容易地复制它。
我试图找到保证 getrusage()
随执行增加的保证,但我系统上的手册页(x86-64 上的 Linux)和 this system-independant description 都没有。明确地说。
该行为是在具有多个内核并运行 NTP 的物理计算机上观察到的。
我应该报告我正在使用的操作系统的错误吗?当我期望 getrusage()
随时间增加时,我是不是要求太多了?
最佳答案
在许多系统上,usage(我假设你的意思是 ru_utime
和 ru_stime
)计算不准确,它只是每个时钟滴答采样一次,通常慢到 100Hz 并且有时甚至更慢。
这样做的主要原因是许多机器的时钟读取起来非常昂贵,而且您不想进行这种计算(每次系统调用都必须读取时钟两次)。在执行许多系统调用的程序中,您很可能最终花在读取时钟上的时间比做任何其他事情都多。
不过,计数器永远不应该倒退。很多年前,我已经看到进程的总运行时间是在上下文切换时跟踪的(这相对便宜,getrusge 可以通过使用 stime 的样本并从总运行时间中减去它来计算 utime)。在这种情况下使用的时钟是挂钟而不是单调时钟,当您更改机器上的时间时,进程的运行时间可能会倒退。但这当然是一个错误。
关于c - 连续两次调用 getrusage 是否保证产生越来越多的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26801841/
我正在尝试获取 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
我是一名优秀的程序员,十分优秀!