3

用于调度支持 10K 并发线程且 I/O 繁重但 CPU 使用率低的应用程序的最佳算法是什么?论文链接表示赞赏。

4

5 回答 5

4

为什么不使用 SCHED_RR?你自己说的:低CPU使用率。当您期望执行一些繁重的 I/O 时,您甚至可以对进程进行优化,这样您的调度频率就会低于其他进程。

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

于 2009-03-31T16:08:17.453 回答
1

实际上,我相信没有调度机制可以完美地处理这么多线程,因为内核中的管理表会变得非常大。

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

于 2009-03-31T17:11:21.280 回答
1

为此,您可能需要 SCHED_RR。您可能有兴趣阅读有关SCHED_FIFO 和 SCHED_RR 之间区别的问题。

于 2009-04-01T05:24:26.340 回答
1

您的问题与 I/O 调度比线程调度更相关。linux 内核提供了各种 I/O 调度器实现。您可以在本期LWN中找到有关此主题的好文章。

于 2009-04-15T09:53:09.853 回答
0

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

于 2009-04-01T05:50:50.473 回答