当前线程正在获得多少 CPU 使用率是可以知道的吗?

3
我正在为游戏引擎编写一个任务调度器,并希望它能根据一些启发式算法自我优化。是否可能知道当前线程在两个时间点之间执行了多长时间?我想要计时任务的执行时间,并希望该时间不包括线程切换,原因有多个(更准确的测量结果以及了解我的线程被切换了多少次会很有用)。我希望在Linux上找到解决方案,但Windows的解决方案也可以。

这个答案可能会有所帮助:
  • http://stackoverflow.com/questions/1689406/determining-execution-time-of-a-thread-and-io-accesses-by-different-threads/1691192#1691192
- udo
这很有用,谢谢,虽然我希望我的程序能够在代码中自己完成它,但我想我可以有一个第三个进程来获取valgrind的输出并将其传回游戏引擎:p - deek0146
2个回答

1

太棒了!比我想要的信息还要多 :) - deek0146

1

http://www.kernel.org/doc/man-pages/online/pages/man2/clock_gettime.2.html 指出,如果计算机具有多个核心,这种方法将无法工作。是否有解决方法? - deek0146
如果*_getcpuclockid()返回ENOENT,那么你可以尝试设置CPU亲和性pthread_setaffinity_np()sched_setaffinity() - jfs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接