操作系统调度算法

时间:2009-03-31 15:57:55

标签: linux multithreading kernel scheduling bsd

用于调度将支持具有大量I / O但CPU使用率低的10K并发线程的应用程序的最佳算法是什么?赞赏论文的链接。

5 个答案:

答案 0 :(得分:4)

为什么不使用SCHED_RR?你自己说过:低CPU使用率。当你期望做一些繁重的I / O时,你甚至可以很好地完成这个过程,所以你的安排比其他过程少。

总的来说,为什么不让操作系统做到最擅长的,只是担心编写高效的代码?操作系统将知道您正在执行阻塞I / O调用,并将您的线程/任务置于等待队列中并选择另一个要运行的任务。您无需担心这些细节。

答案 1 :(得分:1)

实际上我认为,由于内核中的管理表将变得非常大,因此没有调度机制可以处理这些线程的漏洞。

如果可能,我建议重写应用程序以在您选择的操作系统上使用异步I / O,select()或类似的东西。

答案 2 :(得分:1)

您可能需要SCHED_RR。您可能有兴趣阅读有关difference between SCHED_FIFO and SCHED_RR的问题。

答案 3 :(得分:1)

您的问题与I / O调度比线程调度更相关。 linux内核提供各种I / O调度程序实现。你可以在this edition的LWN中找到关于这个主题的好文章。

答案 4 :(得分:0)

正如grover建议的那样,你也可以使用一些线程池机制,这些机制资源消耗较少,并且至少在一定程度上可以解决你的目的,如果不是完全的话