我想知道当上下文切换发生时,是否有人知道有关 Linux 中时间戳计数器的更多详细信息?到目前为止,我的观点是,TSC 值在每个时钟周期内仅增加 1,无论是在内核模式下还是在用户模式下都是独立的。我现在使用 TSC 测量了一个应用程序的性能,它产生了 5 个 Mio 时钟周期的性能结果。然后,我对调度程序进行了一些更改,这意味着上下文切换需要更长的时间,例如 2 个 Mio 周期而不是 500.000 个周期。有趣的是,当再次测量原始应用程序的性能时,它仍然需要 5 个 Mio 周期......所以我想知道为什么它没有花费更长的时间,因为上下文切换现在需要将近 2 个 Mio 时钟周期?(并且在应用程序执行期间至少出现 3 个上下文)。
时间戳计数器是否在内核模式期间以某种方式停用?还是在比赛切换时保存了 TSC 的内容?谢谢,如果有人能指出我可能是什么问题!