我正在尝试衡量流程的性能。我对一小段单线程确定性代码进行了广泛的性能测量,这些代码每次都应该执行相同的操作。
我想为该进程设置独占使用处理器,以测试性能波动是否是由于其他进程的调度、上下文切换等引起的。我不关心亲和力,因为我不关心它是哪个核心继续运行。我真正关心的是我的单线程进程对其运行的核心具有独占访问权限,无论是哪个核心。这可能吗?我不认为“好”能达到我想要的效果,因为那只能让我设定优先级。具有相同优先级的其他一些任务可能与我的进程共享处理器时间。我也不关心我的进程是否必须在队列中等待。我只是想确保一旦开始运行就不会被中断。
谢谢
答案1
始终可以使用taskset -c 0 来将您想要不间断的进程设置为第一个核心,然后将所有其他进程设置为使用其他核心。恕我直言,听起来效率很低,但它会完成你想要做的事情。
答案2
您能做的最好的事情就是使用chrt
将进程的调度类别设置为实时。