欢迎来到 DPDK交流社区 ,有什么问题可以尽管在这里提问,您将会收到社区其他成员的回答;也可以将您的总结写在这里,为社区其他成员提供帮助。 QQ交流2群:635461501

dpdk 如何保证共享物理内存在不同进程内部对应的虚拟地址是一样的

0 投票
最新提问 11月 13, 2019 分类:DPDK高级应用 | 用户: 云仙君 (160 分)

1个回答

0 投票
可以看一下rte_eal_init()初始化函数里的内存初始化那部分。

次进程在attach内存的时候,做了二次映射,保证了映射地址与主进程的一致。
最新回答 11月 13, 2019 用户: sysight (13,060 分)
次进程在attach内存的时候,也是使用mmap函数,但是如何保证mmap返回地址是一样的  或者来说dpdk多进程的时,如何保证mmap映射到.rte_config地址是一样的
最近刚好在看,如果错漏请指正
1. mmap 第一个参数可以指定线性地址,次进程不能 mmap 到相同的地址会返回出错,次进程如何知道这个地址的呢?共享内存(同第2点);
2. rte_config 在共享内存里面,默认 /var/run/dpdk/rte 目录,次进程从共享内存读就可以了;
所以要跑 secondary 进程,就不能指定 --no-shconf / --in-memory 这些参数
如果有纰漏请指正:
1.使用mmap函数返回的虚拟地址是从高到底分配的。
2.找到一个比较低的虚拟地址,dpdk主从进程使用mmap映射这个地址就可以了,这样就保证多进程内存共享时,使用同一个虚拟地址了。
冀ICP备15005332号
...