我在一台拥有24核的共享Linux计算机上运行大规模并行科学计算作业。当这台计算机上没有其他任务运行时,我的作业通常可以扩展到24个核心。但是,即使有一个单线程的非我自己的作业正在运行,我的24线程作业(我将其设置为高优先级)似乎也只能获得约1800%的CPU(使用Linux表示法)。同时,大约500%的CPU周期(再次使用Linux表示法)处于空闲状态。有人能解释这种行为以及我该怎么做才能获得其他未被他人使用的23个核心吗?
注: 1. 如果相关,我曾在略微不同的内核版本上观察到这种情况,尽管我无法立即记住具体是哪个版本。 2. CPU架构是x64。我的24核心作业是32位的,而我正在竞争的其他作业是64位的,这是否相关?
编辑:我刚刚注意到的一件事是,增加到30个线程似乎在一定程度上缓解了问题。它让我达到了约2100%的CPU。
注: 1. 如果相关,我曾在略微不同的内核版本上观察到这种情况,尽管我无法立即记住具体是哪个版本。 2. CPU架构是x64。我的24核心作业是32位的,而我正在竞争的其他作业是64位的,这是否相关?
编辑:我刚刚注意到的一件事是,增加到30个线程似乎在一定程度上缓解了问题。它让我达到了约2100%的CPU。