目录

服务器性能调优

misaraty 更新 | 2024-02-29
前言
  • 课题组服务器node01-node04计算节点配置:英特尔® 至强® Gold 6240 处理器 x 2,内核数 18 x 2,处理器基本频率 2.60 GHz,最大睿频频率 3.90 GHz,缓存 24.75 MB,UPI链接数 3,最大内存通道数 6,内存16 Gb x 8(24插槽)。

  • node05-node06计算节点配置:英特尔® 至强® Gold 6242R 处理器 x 2,内核数 20 x 2,处理器基本频率 3.10 GHz,最大睿频频率 4.10 GHz,缓存 35.75 MB,UPI链接数 2,最大内存通道数 6,内存64 Gb x 4(24插槽)。

问题

有些VASP任务,在6242R节点运行比6240慢,但前者纸面参数更高。

调优分析

复现问题

使用sysbench工具测试cpu多核性能,类似的还有Phoronix Test Suite

  • 进入管理节点,下载sysbench
1
2
3
4
5
6
yum reinstall --downloadonly --downloaddir=./ sysbench

# # install
# yum install epel-release
# yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
# yum install sysbench
  • 查看sysbench依赖,
1
repoquery --requires --resolve sysbench
  • 下载sysbench依赖,
1
yumdownloader libaio ck libgcc coreutils postgresql-libs mariadb-libs zlib glibc luajit openssl-libs
  • sysbench及依赖转移到计算节点的新建目录并安装,
1
yum localinstall libaio*.rpm ck*.rpm libgcc*.rpm coreutils*.rpm postgresql-libs*.rpm mariadb-libs*.rpm zlib*.rpm glibc*.rpm luajit*.rpm openssl-libs*.rpm sysbench-1.0.17-2.el7.x86_64.rpm 
  • 在计算节点node01和node05上测试
1
sysbench --threads=$(nproc) cpu --cpu-max-prime=1000000 run

其中,$(nproc) 会被替换成系统上可用的处理器核心数。cpu指定了要运行的测试类型。--cpu-max-prime=1000000 设置了计算素数的上限。

6242R的cpu性能比6240高些。

1
sysbench memory run

6242R的内存性能也比6240高些。

那会是什么原因导致某些第一性原理计算任务变慢呢?猜测可能是cpu或者内存的问题。

cpu检查

lshw -class cpu显示空载时6242R的size是1200 MHz,而6240为2600 MHz。前者的动态调频引起了我的关注。

之后,使用lscpu观察sysbench调用时,时钟频率的变化,发现6242R满载时,会跑到最大睿频。是否动态调频会拖慢多核计算性能存疑。

此外,对比参数发现6240的UPI链接数为3,而6242R仅为2。低了50%的UPI会拖慢6242R双路cpu之间的通信。

内存检查

lshw -class memory显示6240和6242R的最大内存通道数都为6,DELL 740机架式服务器主板最大内存插槽为24,则每个通道对应4个插槽。6240计算节点是使用了16 Gb x 8,而6242R计算节点是使用了64 Gb x 4,后者因为没有完全占用内存通道而限制了内存带宽。计算化学公社帖子《用于vasp的集群配置中的内存问题》也说明了类似的问题。

dmidecode -t memory可以查看是否为ECC内存,若是显示如下,

1
2
3
Error Information Handle: Not Provided
Total Width: 72 bits
Data Width: 64 bits

则可判断为ECC内存。因为Total Width通常比Data Width大8位,额外的8位用于错误检测和校正代码。

初步结论

由于6242R的UPI链接数较低,加之内存通道没有完全占用,限制了VASP任务的运行效率。

可行性方案

  • 6242R节点增加内存,提升内存带宽。

  • 之后升级服务器时,关注cpu的UPI链接数,并提前做更完善的第一性原理测试。