我在研究各种计算进程CPU时间的机制上的堆栈溢出线程。
clock()是如何在内部实现的?它是否使用rdtsc() (如果是这样,那么它对内核之间的迁移很敏感)。
另外,getrusage()实现了吗?它也依赖于TSC吗?
提前感谢
发布于 2013-09-04 13:27:14
内核以节拍大小跟踪进程的CPU利用率。
clock()和getrusage()都是基于这些的。
节拍由内核使用采样方法由进程累积,其中内核接收时钟的硬件中断并执行时钟处理程序,该时钟处理程序将节拍添加到当前运行的进程。至少,我上次看起来是这样的。
因此,rtdsc根本不起作用--这是一件好事,因为rdtsc不能跨CPU进行精确测量。
https://stackoverflow.com/questions/12883441
复制相似问题