我正在使用各种机制上的stackoverflow线程来计算进程的CPU时间。
clock()
如何在内部实施?它是否使用rdtsc()
(如果是这种情况,那么它对核心之间的迁移很敏感。)
此外,getrusage()
已实施?它还取决于TSC吗?
提前致谢
答案 0 :(得分:2)
内核跟踪大小为tick的进程的CPU利用率。
clock()
和getrusage()
都基于这些。
内核使用采样方法由进程累积任务,其中内核接收时钟的硬件中断并执行时钟处理程序,这会将勾号添加到当前正在运行的进程中。至少,这是我上次看的时候。
所以,rtdsc
根本没有发挥作用 - 这是一件好事,因为rdtsc
无法在CPU之间准确衡量。
答案 1 :(得分:0)