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

总结

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

相关文章

  • CentOS 7下YUM 本地仓库的搭建详细步骤

    CentOS 7下YUM 本地仓库的搭建详细步骤

    这篇文章主要介绍了CentOS 7下YUM 本地仓库的搭建详细步骤的相关资料,希望通过本文能帮助到大家实现这样的功能,需要的朋友可以参考下
    2017-09-09
  • 详解k8s ConfigMap 中 subPath 字段和 items 字段

    详解k8s ConfigMap 中 subPath 字段和 items

    volumeMounts.subPath 属性可用于指定所引用的卷内的子路径,而不是其根路径,这篇文章主要介绍了详解k8s ConfigMap 中 subPath 字段和 items 字段,需要的朋友可以参考下
    2023-03-03
  • Kubernetes Worker Node组件使用及说明

    Kubernetes Worker Node组件使用及说明

    这篇文章主要介绍了Kubernetes Worker Node组件使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-01-01
  • 自定义资源CRD使用介绍

    自定义资源CRD使用介绍

    这篇文章主要为大家介绍了自定义资源CRD的使用示例介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • k8s的架构组成操作代码

    k8s的架构组成操作代码

    k8s是一个轻便的和可扩展的开源平台,用于管理容器化应用和服务,通过k8s能够进行应用的自动化部署和扩缩容,这篇文章主要介绍了k8s的架构组成,需要的朋友可以参考下
    2024-05-05
  • k8s中topologyKey的作用及说明

    k8s中topologyKey的作用及说明

    topologyKey定义拓扑域,用于Pod亲和/反亲和性规则,调度器根据其分组节点,当前配置仅强制节点标签匹配,未限制副本数量,建议补充podAntiAffinity实现隔离
    2025-08-08
  • K8S prometheus operator监控工作原理介绍

    K8S prometheus operator监控工作原理介绍

    这篇文章主要为大家介绍了K8S prometheus operator监控工作原理介绍,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • K8S 中 kubectl 命令详解

    K8S 中 kubectl 命令详解

    这篇文章主要介绍了K8S 中 kubectl 命令,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • K8S中五种控制器的介绍以及使用

    K8S中五种控制器的介绍以及使用

    这篇文章主要给大家介绍了关于K8S中五种控制器及使用的相关资料,控制器 又称之为工作负载,本文通过图文以及实例代码介绍的非常详细,需要的朋友可以参考下
    2021-12-12
  • Kubernetes 1.28.2集群安装过程中的关键步骤详解(最新推荐)

    Kubernetes 1.28.2集群安装过程中的关键步骤详解(最新推荐)

    Kubernetes K8s是Google开源的容器编排平台,最初由Borg项目发展而来,K8s 1.28版本引入了非正常节点关闭恢复、内置Sidecar容器支持、Job优化、Proxy改进和调度框架优化等功能,本文介绍Kubernetes 1.28.2集群安装过程中的关键步骤,感兴趣的朋友一起看看吧
    2025-03-03

最新评论