Linux线程优先级会降低性能

时间:2020-05-26 17:08:55

标签: multithreading

机器:具有运行Cent OS 7.7的超线程(即128个硬件线程)的AMD单插槽64核

实验集1 :创建了5888个线程(因为5888是128的倍数),并且每个线程都使用递归fib(n)= fib(n-1)+ fib计算第37个斐波那契数(n-2)方法。这是有目的的,因此需要大量计算。我运行了具有不同线程优先级和调度策略(SCHED_RR和SCHED_FIFO)的多个测试。但是,在任何测试运行中,所有5888个线程都将具有相同的优先级和相同的调度策略。

实验集2 :与上述相同,除了我没有为任何5888个线程设置任何线程优先级。

观察:与实验集2 相比,实验集1 的运行时间慢4倍,并且这与线程优先级和/或计划实验集1 中使用的策略。

问题:为什么与不设置线程优先级相比,每次设置线程优先级时运行时间会变慢?

然后,我们尝试通过删除所有设置线程优先级的调用,使所有线程均以操作系统默认优先级运行,从而在软件中复制该实验的结果。我们看到了很大的进步(最高达到30%)

0 个答案:

没有答案