我知道这是一个很长的镜头,但我在这里毫无头绪。 我在oracale grid engine(sge)的高性能计算集群(HPC)上运行了几个计算机模拟。 一个作业以一定的速度运行(大约每秒80步),当我在机器上添加作业时,在一定的时间,速度由两个收回。 在一台机器上(我不知道cputypes),16个cpu的门槛是11个工作。 在另一个具有相同数量和types的CPU的情况下,阈值是8。
起初我以为这是一个内存问题,但是每个工作大概需要60MB到100MB,而且每台机器上都有16GB的内存。
你们有没有遇到过这样的问题? 有什么办法来分析这个?
谢谢。
不知道你的集群的设置我不知道CPU是使用超级pipe理? 超核处理的核心数量是物理核心数量的两倍,但是对于非物理核心,计算能力可能不会线性增加。
https://superuser.com/questions/279629/how-much-speedup-does-a-hyper-thread-give-in-theory
可能有几个原因。
虽然你的作业不会消耗大量的内存,但它们可能会填满内存总线(将CPU连接到内存)。 如果公交车满了,增加更多的工作只会给内存总线造成更大的压力,导致一切都变慢。
另一个可能的原因是I / O。 如果您的作业执行大量的文件操作(例如打开/写入/closures文件操作),则系统中的磁盘可能无法跟上,因为一次执行的作业太多。
其他原因是CPU中的其他瓶颈,例如共享caching或浮点执行单元。