gpt4 book ai didi

c - 连续两次调用 getrusage 是否保证产生越来越多的结果?

转载 作者:IT王子 更新时间:2023-10-29 01:26:38 27 4
gpt4 key购买 nike

在一个为了通过减法得到一个任务的时间而调用了两次getrusage()的程序中,曾经看到过一个断言,说任务的时间应该是非负的,失败.当然,这不容易复制,尽管我可以编写一个专门的程序来更容易地复制它。

我试图找到保证 getrusage() 随执行增加的保证,但我系统上的手册页(x86-64 上的 Linux)和 this system-independant description 都没有。明确地说。

该行为是在具有多个内核并运行 NTP 的物理计算机上观察到的。

我应该报告我正在使用的操作系统的错误吗?当我期望 getrusage() 随时间增加时,我是不是要求太多了?

最佳答案

在许多系统上,usage(我假设你的意思是 ru_utimeru_stime)计算不准确,它只是每个时钟滴答采样一次,通常慢到 100Hz 并且有时甚至更慢。

这样做的主要原因是许多机器的时钟读取起来非常昂贵,而且您不想进行这种计算(每次系统调用都必须读取时钟两次)。在执行许多系统调用的程序中,您很可能最终花在读取时钟上的时间比做任何其他事情都多。

不过,计数器永远不应该倒退。很多年前,我已经看到进程的总运行时间是在上下文切换时跟踪的(这相对便宜,getrusge 可以通过使用 stime 的样本并从总运行时间中减去它来计算 utime)。在这种情况下使用的时钟是挂钟而不是单调时钟,当您更改机器上的时间时,进程的运行时间可能会倒退。但这当然是一个错误。

关于c - 连续两次调用 getrusage 是否保证产生越来越多的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26801841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com