k8s容器放开锁内存限制问题

 更新时间:2025年09月16日 10:08:11   作者:aashuii  
nccl-test容器运行mpirun时因NCCL_BUFFSIZE过大导致OOM,需通过修改docker服务配置文件,将LimitMEMLOCK设为infinity并重启docker,以解除内存锁定限制

参考:https://access.redhat.com/solutions/1257953

问题

nccl-test容器docker.io/library/nccl-tests:24.12中跑mpirun,buff设置为NCCL_BUFFSIZE=503316480

提示out of memory:


pod-1:78:91 [0] include/alloc.h:114 NCCL WARN Cuda failure 'out of memory'

pod-1:78:91 [0] include/alloc.h:119 NCCL WARN Failed to CUDA host alloc -268435456 bytes
pod-1:78:91 [0] NCCL INFO transport/net.cc:517 -> 1
pod-1:78:91 [0] NCCL INFO transport/net.cc:719 -> 1
pod-1:78:93 [0] NCCL INFO transport.cc:193 -> 1
pod-1:78:93 [0] NCCL INFO group.cc:133 -> 1
pod-1:78:93 [0] NCCL INFO group.cc:75 -> 1 [Async thread]

pod-1:78:91 [0] proxy.cc:1620 NCCL WARN [Service thread] Error encountered progressing operation=Connect, res=3, closing connection
pod-1:78:78 [0] NCCL INFO group.cc:426 -> 1
pod-1:78:78 [0] NCCL INFO group.cc:566 -> 1
pod-1:78:78 [0] NCCL INFO group.cc:106 -> 1
pod-1: Test NCCL failure sendrecv.cu:57 'unhandled cuda error (run with NCCL_DEBUG=INFO for details) / '
 .. pod-1 pid 78: Test failure common.cu:383
 .. pod-1 pid 78: Test failure common.cu:592
 .. pod-1 pid 78: Test failure sendrecv.cu:103
 .. pod-1 pid 78: Test failure common.cu:625
 .. pod-1 pid 78: Test failure common.cu:1123
 .. pod-1 pid 78: Test failure common.cu:893
 

问题确认

容器内执行ulimit -a显示max locked memory只有64k

放开容器max locked memory限制

在 /etc/systemd/system/docker.service中增加LimitMEMLOCK=infinity

然后重启docker:

systemctl daemon-reload
systemctl restart docker

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • K8s学习之Pod的定义及详细资源调用案例

    K8s学习之Pod的定义及详细资源调用案例

    Kubernetes将所有内容抽象为资源,通过操作资源管理集群,核心单元是Pod,通过控制器管理Pod,资源管理分为命令式对象管理、命令式对象配置和声明式对象配置,各有适用场景,需要的朋友可以参考下
    2024-09-09
  • k8s集群部署过程

    k8s集群部署过程

    本文详细介绍了如何部署Kubernetes集群,包括安装Docker、配置阿里云YUM软件源、安装kubeadm、kubelet和kubectl,以及部署Kubernetes、安装Pod网络插件和将节点加入集群的过程,感兴趣的朋友一起看看吧
    2025-03-03
  • K8S下http请求在ingress和nginx间无限循环的问题及解决

    K8S下http请求在ingress和nginx间无限循环的问题及解决

    文章描述了UAT环境中因Nginx与IngressController代理循环导致400错误的排查过程,发现proxy_set_header Host配置引发Host头携带Nginx域名,导致请求反复转发,最终X-Forwarded-For头溢出,解决方法是移除该配置
    2025-07-07
  • Rainbond调用Vue React项目的后端接口

    Rainbond调用Vue React项目的后端接口

    这篇文章主要为大家介绍了Rainbond调用Vue React项目的后端接口问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • k8s入门实战deployment使用详解

    k8s入门实战deployment使用详解

    这篇文章主要为大家介绍了k8s入门实战deployment使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • K8S容器OOM killed排查过程

    K8S容器OOM killed排查过程

    这篇文章主要介绍了K8S容器OOM killed排查过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • K8S中某个容器突然出现内存和CPU占用过高的问题及解决方案

    K8S中某个容器突然出现内存和CPU占用过高的问题及解决方案

    当K8S容器出现资源过载时,可通过kubectl监控定位问题,调整资源限制,优化应用代码,拆分多应用容器,利用监控工具排查,实施水平扩展或迁移负载,确保集群稳定运行
    2025-07-07
  • K8S安装及配置教程

    K8S安装及配置教程

    这篇文章主要介绍了K8S安装及配置教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-03-03
  • k8s容器的内存设置的踩坑记录

    k8s容器的内存设置的踩坑记录

    这篇文章主要介绍了k8s容器的内存设置的踩坑记录,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • k8s pod和service网络暴露详解

    k8s pod和service网络暴露详解

    这篇文章主要介绍了借助iptables的路由转发功能,打通k8s集群内的pod和service网络,与外部网络联通,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11

最新评论