我在具有 24 个内核的共享 Linux 计算机上运行大规模并行科学计算作业。大多数时候,当这台计算机上没有运行其他任何东西时,我的工作能够扩展到 24 个内核。但是,似乎即使不是我的一个单线程作业也在运行,我的 24 线程作业(我将其设置为高值)只能设法获得 ~1800% 的 CPU(使用 Linux 表示法)。同时,大约 500% 的 CPU 周期(同样,使用 Linux 表示法)是空闲的。谁能解释这种行为以及我能做些什么来获得其他人未使用的所有 23 个内核?
笔记:
万一它是相关的,我在稍微不同的内核版本上观察到了这一点,尽管我不记得是哪一个在我的脑海中。
CPU架构是x64。我的 24 核工作是 32 位的,而我正在竞争的其他工作是 64 位这一事实有可能吗?
编辑:我刚刚注意到的一件事是,增加 30 个线程似乎在一定程度上缓解了这个问题。它使我的 CPU 达到 ~2100%。