在没有上下文切换的情况下执行代码块

时间:2012-12-14 20:38:56

标签: linux-kernel context-switch perf

有没有办法在没有上下文切换的情况下在C中执行代码块?

我修改了perf stat以定期对计数器进行采样。虽然这有效,但它最终会给我一些不好的数据点,例如0周期x指令。

我认为发生这种情况的原因是因为上下文切换。

由于我的代码总是在指令计数器之前拉出循环计数器值,如果在拉出循环计数器值之后发生了上下文切换,并且如果进程I正在为调度量子的某些部分执行分析,那么当我最终拉出时指令计数器值,它将是我已经拉出的循环计数器值的“提前一步”。

有没有办法在不允许进行上下文切换的情况下执行代码块?

1 个答案:

答案 0 :(得分:1)

不,没有简单的方法可以实现 - 在没有上下文切换的情况下执行代码 - (除非你的代码在内核中运行,但你想要处理中断)。

您可以使用clock_gettime(2)来测量Linux应用程序内的时间。仔细阅读time(7)

顺便说一下,你确实想要上下文切换。如果没有它们,有些计(有些机器用软件处理他们的粉丝。)