鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

解决UCX使用SP670网卡报错

问题现象描述

在cephadm shell启动的容器中,执行ucx_info -d扫描设备时,出现如下报错。

问题原因

报错是因为UCX默认Rx队列深度为4096,而SP670最大深度支持为4095,因此需要调整UCX Rx队列的默认深度值。

解决方法

  1. 为了解决该问题,需要在章节5.1基础上,再修改一行代码。参考下方的代码完成修改。
    1
    2
    3
    cd /root/rpmbuild/SOURCES/
    tar -zxvf ucx-1.14.1.tar.gz
    vim ucx-1.14.1/src/uct/ib/base/ib_iface.c
    

    修改RX_QUEUE_LEN默认值,从4096修改为4095。

    对该文件进行打包。

    1
    2
    rm -rf ucx-1.14.1.tar.gz
    tar zcvf ucx-1.14.1.tar.gz ucx-1.14.1
    
  2. 编译并构建RPM包。在RPM编译路径下,编译并构建ucx.spec文件,生成RPM包。
    1
    2
    cd /root/rpmbuild/SPECS
    rpmbuild -bb ucx.spec
    

    编译完成后在“/root/rpmbuild/RPMS/aarch64”目录会生成如下图所示的8个RPM包。

  3. 使用本地镜像启动一个临时容器。
    podman run --name server1 --hostname ceph_server1 --privileged --net=host --ipc=host -dti [IP]:5000/ceph/ceph_release:v17.2.7 /usr/sbin/init
  4. 将步骤2生成的rpm包从编译容器中拷贝到新启动的容器中。
    podman cp openeuler2203sp3_build:/root/rpmbuild/RPMS/aarch64 ./
    podman cp aarch64 server1:/home
  5. 进入新启动的容器中重新安装ucx。
    podman exec -it server1 bash
    cd /home
    rpm -ivh aarch64/ucx-* --force
  6. 退出容器,将容器制作成新的ceph部署容器。
    exit
    podman commit server1
    podman tag [IMAGE ID] [IP]:5000/ceph/ceph_release:v17.2.7
    podman push [IP]:5000/ceph/ceph_release:v17.2.7 [IP]:5000/ceph/ceph_release:v17.2.7

    [IMAGE ID]为commit生成的镜像ID,[IP]为本地IP地址,请根据实际情况替换本地IP地址。