什么是最好的algorithm来调度一个应用程序,将支持10K并发线程繁重的I / O但CPU使用率低? 链接到论文表示赞赏。
为什么不使用SCHED_RR? 你自己说: CPU使用率低 。 如果您希望执行一些繁重的I / O操作,那么您甚至可以很好地处理这个过程,所以您比其他进程安排得更少。
但是,一般来说,为什么不让操作系统去做最好的事情,而只是担心编写高效的代码呢? 操作系统会知道你正在做一个阻塞的I / O调用,并将你的线程/任务置于等待状态,并选择另一个任务来运行。 你不需要担心这些细节。
其实我相信没有任何调度机制会处理这个线程的数量,因为内核中的管理表将变得相当大。
如果可能的话,我会建议重写应用程序以使用异步I / O,select()或类似的操作系统上的选择。
你可能会希望SCHED_RR。 您可能有兴趣阅读有关SCHED_FIFO和SCHED_RR之间差异的问题。
您的问题与线程调度相关的I / O调度更多。 Linux内核提供了各种I / O调度器的实现。 你可以在这个版本的LWN中找到关于这个主题的好文章。
正如Grover所建议的那样,您也可以使用一些线程池机制,这些机制资源较少,至少在一定程度上能够解决您的问题