优化Linux计算集群

我正在build立一个超级计算的Linux集群。 我们使用OpenMPI和GoToBlas2运行最新的HPCC基准testing,但结果非常糟糕。 当我使用一个进程对集群中的每个核心运行基准testing时,结果比在单个进程中运行基准testing结果差得多(超过100倍)。 这显然不是我们所期望的那种performance。 我唯一的想法就是MPI在这些进程之间传输消息的时间太长了。 有没有人有任何想法,我怎么可以优化服务器设置,使性能不吸收这么多?

我们正在使用OpenMPI v1.4.3的Rocks集群发行版。 我们的计算节点是戴尔机架式服务器,每台服务器带有两个四核英特尔至强处理器。 它们通过千兆以太网电缆连接。

当看到一个科学集群和performance这里是我看到的一些主要的瓶颈:

  • 你有什么样的networking。 是的,你说你有千兆以太网,但是你是否使用了非阻塞交换机,这样交换机上的每个节点都可以获得全线速率?
  • 您正在使用分布式文件系统还是优化的NAS?
  • 所有的链接全线速? 这又回到第一点,但你会惊讶于你会发现偶尔在节点上运行iperf
  • 什么是你的延迟。 如果遇到networking问题,这可能会偶尔成为千兆networking的问题,并且可能会影响到需要使用MPI的应用程序。
  • network-scripts主线设备的设置是什么? 你的MTU是否设定为9000?

Iperf通常可以在RHEL系统上find

 /apps/rhel5/iperf/bin/iperf 

要运行iperf,请首先在节点上设置服务器。

 /apps/rhel5/iperf/bin/iperf -s 

然后从节点你想testing的链接做

 /apps/rhel5/iperf/bin/iperf -c <host or IP of server> 

如果成功,您将在客户端看到类似这样的输出:

 ------------------------------------------------------------ Client connecting to <host or IP of server>, TCP port 4200 TCP window size: 256 KByte (default) ------------------------------------------------------------ [ 3] local 123.11.123.12 port 4400 connected with 123.456.789.12 port 4200 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.1 GBytes 1.01 Gbits/sec 

如果没有安装它,可以很容易地从存储库的许多平台上检索,如果没有,可以从源代码下载和编译。 在每个节点上运行它,看看实际以太网线是否有问题。 之后,在所有节点上运行它,看它是否陷入了交换机。