SLURM高级配置教程
目前由Slurm管理的一些大型系统的示例包括:
- 美国橡树岭国家实验室(ORNL)的Frontier,拥有8,699,904个核心。
- 中国国防科技大学的天河-2,拥有4,981,760个核心。
- 国家能源研究科学计算中心(NERSC)的Perlmutter,拥有761,856个核心。
在系统规模大几个数量级的情况下,Slurm的运行已经通过仿真得到了验证。在这样的规模下获得最佳性能确实需要一些调整。
性能
以下是执行一个打印“Hello world”并退出的MPI程序的时间,包括处理输出的时间。由于硬件、软件和配置的差异,你的性能可能会有所不同。
- 在122,880个计算节点的BlueGene/Q上执行1,966,080个任务:322秒
- 在15,000个计算节点的Linux集群上执行30,000个任务:30秒
系统配置
一些系统配置参数可能需要修改,以支持大量打开的文件和有大量信息突发的TCP连接。可以使用/etc/rc.d/rc.local
或/etc/sysctl.conf
脚本进行修改,这样在重启后能够保留修改。
- **/proc/sys/fs/file-max:**同时打开的文件的最大数量,我们推荐的限制是至少32832个。
- **/proc/sys/net/ipv4/tcp_max_syn_backlog:**保留在内存中的SYN请求的最大数量,我们还没有从3路握手中获得第三个数据包。对于内存超过128Mb的系统,默认值为1024,对于低内存机器,默认值为128。如果服务器出现过载,可以尝试增加这个数字。
- **/proc/sys/net/ipv4/tcp_syncookies:**当内核为特定套接字的同步积压队列溢出时,用于向主机发送syncookies。默认值是0,它禁用了这个功能。将该值设置为1。
- **/proc/sys/net/ipv4/tcp_synack_retries:**对一个SYN请求重发多少次SYN,ACK回复。换句话说,这告诉系统要尝试建立一个由其他主机启动的被动TCP连接多少次。这个变量是一个整数,但在任何情况下都不应该大于255。每次重传大约需要30到40秒。默认值为5,这导致被动TCP连接的超时时间约为180秒,一般来说是令人满意的。
- **/proc/sys/net/core/somaxconn:**socket listen()积压的限制,在用户空间称为SOMAXCONN。默认值为128。这个值应该被大幅提高,以支持请求的爆发。例如,为了支持1024个请求的爆发,将somaxconn设置为1024。
- **/proc/sys/net/ipv4/ip_local_port_range:**识别可用的外部端口,这些端口用于许多Slurm通信。这个值可以提高以支持大量的通信。例如,将数值 "32768 65535 "写进ip_local_port_range文件,以使该范围的端口可用。
发送队列长度(txqueuelen)可能也需要用ifconfig命令来修改,对于一个拥有非常大的集群的站点来说,推荐将值设置为4096(例如,ifconfig txqueuelen 409
)。
线程/进程限制
在SLES 12 SP2(用于Cray系统,带有CLE 6.0UP04,预计在2017年中期发布)中新引入了一个限制。SLES 12 SP2中附带的systemd版本包含了对