我知道这是个长远的想法,但我对此一无所知。我正在 Oracle Grid Engine (sge) 的高性能计算集群 (HPC) 上运行几个计算机模拟。当我将作业添加到机器时,单个作业以一定的速度运行(大约每秒 80 步),在某个阈值下,速度会降低两倍。在一台机器上(我不知道 CPU 类型),阈值是 16 个 CPU 的 11 个作业。在另一台具有相同数量和类型的 CPU 的机器上,阈值是 8。
我起初以为这是一个内存问题,但每个作业大约需要 60MB - 100MB,并且我的每台机器都有 16GB 的内存。
大家有遇到过这样的问题吗?有什么方法可以分析吗?
谢谢。
答案1
在不知道集群设置的情况下,我想知道 CPU 是否使用了超威胁?超威胁核心显示为物理核心数量的两倍,但非物理核心的计算能力可能不会线性增加。
https://superuser.com/questions/279629/how-much-speedup-does-a-hyper-thread-give-in-theory
答案2
可能有几个原因。
尽管您的作业不会占用大量内存,但它们可能会填满内存总线(将 CPU 连接到 RAM)。如果总线已满,添加更多作业只会给内存总线带来更多压力,导致一切变慢。
另一个可能的原因是 I/O。如果您的作业执行大量文件操作(例如打开/写入/关闭文件操作),如果同时运行太多作业,系统中的磁盘可能无法跟上。
其他原因是 CPU 中的其他瓶颈,例如共享缓存或浮点执行单元。