0

我一直在分析一些可能在系统调用中花费大量执行时间的代码。手动和使用 callgrind 对某些函数计时,callgrind 报告的系统调用时间比简单地对函数计时(当然也包括 CPU 时间)长约 20、30 或 40 倍。

--collect-systime=ON 用于收集每个函数的此 sysCall 时间。

据我所知,callgrind 通过计算 CPU 指令和计时系统调用来工作,只是让操作系统完成工作并且不会干扰。我不明白为什么在使用 callgrind 进行分析时花费在 sysCalls 上的时间会增加,有人可以详细说明吗?

callgrind 仍然是分析在 sysCalls 中花费的时间的有用工具吗?

4

1 回答 1

0

你能试着看看它们是否有显着不同吗--collect-systime=usec?可能会快一点。--collect-systime=nsecusec

当指定 --collect-systime 时,Valgrind 将为每个客户端应用程序系统调用调用各种时间系统调用之一。我希望这会增加大量开销,特别是如果您的客户端应用程序正在调用非常多的“快速”系统调用。

于 2021-07-01T08:23:47.447 回答