SOPHGO SE5-16微服务器内置SDK版本与算法应用交叉编译版本不一致导致Linux service启动算法应用报错
- 问题描述
- 使用过程
- 解决方案
1. 问题描述
SOPHGO SE5-16微服务器系统自带的是2.3.0 sdk版本,算法应用使用的是2.7.0的sdk版本交叉编译,把2.7.0的库拷贝到了指定目录,通过LD_LIBRARY_PATH设置了环境变量,手动运行主程序可以工作,测试功能也都正常;但是把主程序运行的脚本放到linux service中,就会报错:
error:(-224:Unknown error code -224) pci bm_malloc_device_bvte_heap failed in function ‘pciDeviceMalloc’
2. 使用过程
-
开发环境SDK版本: 2.7.0_20220104
-
盒子型号: SE5-16
-
盒子运行时SDK版本:
手动启动的命令:
sh gktLoop.sh
service启动的配置:
主程序运行脚本:gktLoop.sh
报错日志截图:
df -h
命令的输出截图:
df -i
命令的输出截图:
bm-smi
的输出截图:
ION内存情况:
NPU内存使用情况:
Summary:
[0] npu heap size:4210032640 bytes, used:0 bytesusage rate:0%, memory usage peak 0 bytes
VPU内存使用情况:
VPP内存使用情况:
Summary:
[1] vpp heap size:4160749568 bytes, used:3157884928 bytesusage rate:76%, memory usage peak 3183796224 bytes
3. 解决方案
经排查,为打开文件描述符的最大值不够所致,导致ion管理的内存无法分配,程序出错。
当手动启动脚本时,ulimit设置的值足够大,程序可正常运行;对于systemd service的资源限制,设置的值不能生效,可在启动脚本中增加设置命令:ulimit -n 20480。然后再运行程序即可。
————————————————
版权声明:本文遵循CC 4.0 BY-SA版权协议。
原文链接:https://blog.csdn.net/weixin_44087610/article/details/126390067