当我用 8 个高优先级(nice=-20)操作系统线程(我拥有的核心数量)“淹没”我的 CPU 时,由于显而易见的原因,操作变得“暂停”,但仍然可用。
请注意,当我说“高优先级线程”时,我指的是由同一高优先级进程生成的线程。
然而,像 64 线程这样的事情会让我的电脑完全无法使用。最大优先级线程与其在核心之间的分配之间有什么关系?我们能否大致算出需要生成多少个线程才能完全淹没 CPU 以达到给定的好值?
答案1
不存在这种关系,至少不存在直接关系。
请记住,一个nice
值是一个优先事项。无论您有 N 个友善度为 0 的线程,还是 N 个友善度为 10 的线程,还是 N 个友善度为 -10 的线程,调度结果都是相同的。
系统是否保持响应取决于它有多少时间来关心缓慢的事情,比如用户输入。如果您有 1000 个进程,每个进程都在等待从存储中传送网络数据包或数据,那么对于您作为人类用户来说,这对于您的系统的表现来说几乎没有什么影响。它们存在,但它们并没有占用那些需要发生的时髦事情的调度时间。无论它们与您交互的进程是否相同、较低或较高,重要的是它们是否争夺相同的资源。
所以,友善在这方面确实只扮演了次要角色;当准备工作的任务多于 CPU 核心时,它是一个定义谁接下来运行的工具。有多少任务准备好工作,以及它们是否与可能具有 ( PRIO_RR
) 的任务冲突,保证它们在准备好时每秒被激活多少次,这只是一个不同的问题。