我刚买了一台新机器来运行 python 脚本进行大规模建模。它有两个 CPU,每个 CPU 有 4 个内核(Xeon,2.8GhZ)。每个内核都为 4 个逻辑 CPU 内核启用了超线程。
现在解决问题:当我在 8 个单独的终端中运行相同的 python 进程时,top
命令显示每个进程都占用了 100% 的 cpu。但是,终端 1 中的进程运行速度比终端 8 中的进程慢大约 4 倍。这对我来说似乎很奇怪......
我想知道它是否与如何在各种(逻辑?)核心上安排进程有关?有谁知道我如何才能以相同的速度运行?
编辑(回应 larsmans):好点。该脚本是一个运行大约 10,000 次的 ginat 循环。每个循环读入一个文本文件(500 行)并对读入的数量进行一些基本计算。循环运行时,它使用大约 0.2% 的内存。循环期间没有写入磁盘。我可以理解读取访问可能是一个限制因素,但我很困惑这样一个事实,即如果是这种情况,它将是第一个最慢的进程。我原以为它会随着我启动更多进程而变慢......
time
我使用终端中的命令对进程进行了几次计时。
EDIT2:我刚刚发现有时一个核心被指定来处理所有的读取和写入——所以多个进程(即使它们在不同的核心上运行)将使用一个单一的核心来处理所有的 I/O ......但这只会影响其中一个核心,不会导致所有核心具有不同的处理速度......