用于调度将支持具有大量I / O但CPU使用率低的10K并发线程的应用程序的最佳算法是什么?赞赏论文的链接。
答案 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建议的那样,你也可以使用一些线程池机制,这些机制资源消耗较少,并且至少在一定程度上可以解决你的目的,如果不是完全的话