我有一个 kthread,它在多核 CPU 的一个核心上单独运行。此 kthread 禁用该内核的所有 IRQ,尽可能快地运行循环并在 TSC 的帮助下测量最大循环持续时间。整个 ACPI 的东西都被禁用(没有频率缩放,没有省电等)。
我的问题是,最大循环持续时间显然取决于 gpu。
- 当系统正常使用时(有点办公室、互联网和编程的东西/不是很忙),那么最大循环持续时间约为 5 us :-(
- 相同的情况,但 CPU 压力过大(其他三个内核 100% 忙)导致最大循环持续时间约为 1 us :-|
- 但是当 GPU 切换到空闲模式(关闭屏幕)时,最大循环持续时间会下降到小于 300 ns :-)
这是为什么?我如何影响这种行为?我以为CPU和RAM是直接连接的。我认识到,对于第一种情况,在带有外部显卡的系统上,最大循环持续时间会变得更好。对于第二种和第三种情况,我看不出有什么不同。我还测试了 AMD 和 Intel 系统但没有成功 - 总是一样的:-(
我对第二种情况很好。但是是否有可能在不给 CPU 额外压力的情况下实现这一目标?
提前谢谢了!
比利