如何解决DPDK多应用运行时“Cannot create lock on var/run/dpdk/rte/config”错误
解决多个DPDK应用同时运行的报错问题
核心原因
报错Cannot create lock on 'var/run/dpdk/rte/config'是因为默认情况下,所有DPDK应用会共用同一个全局配置锁文件,第二个启动的程序无法获取锁导致启动失败。
具体解决方法
1. 指定独立的配置目录
启动每个DPDK应用时,通过--base-dir参数指定专属目录,让每个应用拥有独立的锁文件和配置文件:
# 启动第一个应用 ./dpdk-app1 --base-dir /var/run/dpdk/app1 -- ... 其他启动参数 # 启动第二个应用 ./dpdk-app2 --base-dir /var/run/dpdk/app2 -- ... 其他启动参数
注意:指定的目录需提前创建,可执行命令mkdir -p /var/run/dpdk/app1完成目录初始化。
2. 使用DPDK多进程模式
如果两个应用属于同一业务集群,可采用主从进程模式共享资源:
- 先启动主进程,独占所需网卡端口和系统资源
- 从进程通过
--proc-type=secondary参数启动,无需重复绑定端口,直接共享主进程资源:
# 启动主进程 ./dpdk-primary-app --proc-type=primary -- ... 其他启动参数 # 启动从进程 ./dpdk-secondary-app --proc-type=secondary -- ... 其他启动参数
该模式下所有进程共用同一配置锁,不会出现锁冲突问题。
3. 分配独立的CPU核心与网卡端口
确保两个应用使用不重叠的CPU核心和网卡端口,从根源避免资源竞争:
# 第一个应用绑定核心0-3、网卡端口0000:01:00.0/0000:01:00.1 ./dpdk-app1 -l 0-3 -a 0000:01:00.0 -a 0000:01:00.1 -- ... 其他启动参数 # 第二个应用绑定核心4-7、网卡端口0000:02:00.0/0000:02:00.1 ./dpdk-app2 -l 4-7 -a 0000:02:00.0 -a 0000:02:00.1 -- ... 其他启动参数
配合--base-dir参数使用,效果会更稳定。
4. 清理残留锁文件
若之前的DPDK应用异常退出,可能残留锁文件导致后续程序无法启动,手动清理即可:
rm -f /var/run/dpdk/rte/config
清理完成后重新启动应用即可。
内容的提问来源于stack exchange,提问作者xuxing chen
相关产品推荐
相关产品推荐

