openEuler 在大规模计算集群里的那些优化秘籍【华为根技术】

举报
Echo_Wish 发表于 2025/11/23 22:10:22 2025/11/23
【摘要】 openEuler 在大规模计算集群里的那些优化秘籍

openEuler 在大规模计算集群里的那些优化秘籍

——作者:Echo_Wish

兄弟姐妹们,今天咱聊点接地气又实战的:openEuler 在大规模计算集群(HPC / 大数据 / AI训练)里的优化案例。讲干货、讲套路、讲常踩的坑,顺带丢几段脚本/配置,让你回去能直接试。别怕,咱用最直白的话讲技术:要把集群从“能跑”变成“跑得稳、跑得快、跑得省钱”。

我这些年在集群运维里最常看到两类痛点:

  1. 硬件很牛,性能却被系统吞掉;
  2. 多业务争抢资源,调度、IO、网络互相掐架。
    openEuler 本身是个企业级、面向云与边缘的 Linux 发行版——用它做集群,关键在于把内核、调度、网络、存储、容器/作业调度器这几层都打磨到位。

下面分问题→原理→实战→收尾感想走。


一、问题拆解(什么场景最常见?)

常见场景有三类:

  • AI训练/深度学习:GPU/CPU + 分布式通信(NCCL / MPI),网络延迟/带宽、PCIe/CPU 拥塞影响大。
  • HPC:MPI 强依赖低延迟互连(InfiniBand/RDMA),NUMA 节点感知与进程亲和性关键。
  • 大数据/存储密集:大量随机IO、元数据压力、分布式文件系统(Lustre/Ceph)瓶颈明显。

每个场景对操作系统和中间件的要求不一样,但优化思路高度一致:让计算资源亲近任务、减少不必要的抖动、保证网络和存储的可预测性


二、核心原理(为什么这些优化有效?)

归结三条:

  1. 减少干扰(Isolation):CPU/IRQ/NUMA/IO 争用会吞掉性能。把关键任务孤立到特定资源上,能显著降低抖动。
  2. 减少内核开销与context switch:调整调度器、禁用透明大页或合理使用 hugepages、启用 CPU governor 性能模式。
  3. 优化数据路径(网络/存储):启用 RDMA、SR-IOV、调优 TCP/拥塞算法、文件系统参数,减小延迟并提高带宽利用。

接下来把这些原理对应到实际命令和配置。


三、实战代码与配置(落地可执行)

以下是一些常见且高效的优化实践,适用于 openEuler(也是适用于大多数 Linux 的套路),我把它们按启动/系统/网络/存储/容器/调度给你列清楚。

1) 内核启动参数:绑定 CPU,关闭能耗策略

/etc/default/grub(openEuler 类似)追加:

GRUB_CMDLINE_LINUX="$GRUB_CMDLINE_LINUX isolcpus=2-7 nohz_full=2-7 rcu_nocbs=2-7 intel_pstate=disable processor.max_cstate=1 idle=poll"
# 然后更新 grub 并重启
grub2-mkconfig -o /boot/grub2/grub.cfg

说明:isolcpus 把一组 CPU 从普通调度器中隔离出来,配合 cgroup / taskset 绑到关键作业。nohz_fullrcu_nocbs 减少内核计时器干扰;idle=poll 对延迟敏感场景有用(但会耗电)。


2) NUMA与进程亲和:用 numactl / taskset 固定进程

在提交 MPI 或训练任务时,强制亲和到同一 NUMA 节点:

numactl --cpunodebind=0 --membind=0 ./train_binary --config config.yaml

或者在 systemd 服务里固定:

[Service]
CPUAffinity=2 3 4 5
MemoryAffinity=0

3) HugePages 与 Transparent HugePages(THP)

对大内存、JVM、数据库、GPU 训练进程,预分配 hugepages:

# 临时
sysctl -w vm.nr_hugepages=1024

# 禁用 THP(很多场景推荐禁用)
echo never > /sys/kernel/mm/transparent_hugepage/enabled

HugePages 减少 TLB 失效率,但 THP 自动合并可能在某些工作负载上引起延迟抖动,生产上常禁用 THP,采用静态 hugepages。


4) 网络:启用 BBR、调 TCP Buffer、关闭 GRO/TSO(对 RDMA 场景视情况)

# 打开 BBR
sysctl -w net.core.default_qdisc=fq
sysctl -w net.ipv4.tcp_congestion_control=bbr

# 调整 buffer
sysctl -w net.core.rmem_max=268435456
sysctl -w net.core.wmem_max=268435456

对于使用 InfiniBand / RDMA 的集群,应该优先使用 RDMA 通道(NCCL/RDMA),并在 NIC 上启用 SR-IOV 和免中断转发(RSS/Flow director)等。


5) 存储:Lustre / Ceph / Local NVMe 优化

  • 对于大 IO,调整 I/O 调度器为 noopdeadline
echo noop > /sys/block/nvme0n1/queue/scheduler
  • 针对 Ceph,调整 rbd_cacheosd_op_threads 等参数,并保证网络带宽。

  • 对 Lustre,合理配置 MDS/OSS、stripe size、stripe count。


6) 容器与 K8s(如果在 K8s 上跑训练)

  • 使用 CPUManagertopologyManager(Kubelet)来启用 CPU pinning / NUMA 考量:
kubeletExtraArgs:
  feature-gates: "CPUManager=true,TopologyManager=true"
  cpu-manager-policy: static
  • 使用 device-plugin 暴露 GPU,NVIDIA 或 SR-IOV device plugin 暴露网卡直通。

7) 调度层面(Slurm / K8s):资源感知调度

  • 在 Slurm 中启用 SelectType=select/cons_res,配置 Gres(GPU)与 CR_CORE,结合 scontrol 精细调度。
  • 在 Kubernetes 中,使用 nodeAffinitypodTopologySpreadtaints/tolerations 做分区、避免同机GPU互相竞争。

四、案例分享(我在一项目里亲测有效的组合)

场景:某金融 AI 团队在 openEuler 集群上训练大模型,GPU 卡多、跨机通信多、经常发生“训练速度突然掉一半”的问题。我们做了如下步骤,训练速度稳定提升约 20–35%:

  1. 在每台机器上设置 isolcpus,把 2 个核给系统管理,剩下给训练进程专用。
  2. 给训练容器做 NUMA 亲和和 CPU pinning(Kubelet TopologyManager + device-plugin)。
  3. 在网络层启用 SR-IOV,并把 NCCL 强制使用 RDMA 通信(NCCL_IB_DISABLE=0NCCL_SOCKET_IFNAME 设置为 RDMA 接口)。
  4. 关闭 THP,调整 hugepages 为 2G 大页,显著降低了内存抖动。
  5. 在作业调度层面,限制每节点并行作业数量,避免 IO 与 PCIe 总线过载。
  6. 引入 Prometheus + node-exporter + NVIDIA DCGM 监控,并用 Grafana 建立自动告警(网络带宽、PCIe, GPU SM 利用率、memory bandwidth)。快速定位瓶颈和频繁的系统中断。

结果:训练作业的 P99 latency 更低、稳定性更高,平均吞吐提升 20% 以上。不是靠单点加速,而是把系统“噪声”降下来、让硬件的峰值能力被真实利用。


五、Echo_Wish 式收尾感想(技术与工程的平衡)

优化集群不是“打补丁”,也不是只追单点数据。它是一项系统工程:内核参数、NUMA 策略、网络协议、存储布局与调度策略都要合力工作。openEuler 给了我们一个企业级、可定制的操作系统平台,但关键还是工程方法论:

  • 先观测,再假设,再验证:不要盲目套参数,先用 perf、mpstat、iostat、nvidia-smi、ibstat、ethtool、tcptrack 收集数据。
  • 最小可变更:一次改一类参数,评估影响,避免一堆改动混淆原因。
  • 自动化与可回溯:把优化配置写成 Ansible / Helm / Terraform,配置就是代码,能回滚。
  • 以业务为导向:不同任务对延迟、带宽、IO 的敏感度不同,针对性优化要比全局微调更划算。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。