首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DPDK如何在mbuf中预取数据?

问DPDK如何在mbuf中预取数据?
EN

Stack Overflow用户
提问于 2022-07-13 02:45:08
回答 1查看 178关注 0票数 0

​

​

包的有效数据放置在图中mbuf的红色部分。当CPU想要读取数据包中的数据时,它将访问图中mbuf的红色部分。因此,我想知道DPDK如何预取mbuf,它将预取整个mbuf以缓存或只预取数据部分(图中的红色部分)。

此外,如果您能够详细介绍DPDK的预取机制(预取mbuf或RX描述符)的代码,将会更好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-30 15:35:10

DPDK使用特定于体系结构的预取指令将数据预取到缓存层次结构中.为了方便编程,它还提供了一个统一的接口(例如rte_prefetch0)。

您可以在特定于arch的目录中找到预取函数的定义:

通用接口定义:https://elixir.bootlin.com/dpdk/latest/source/lib/eal/include/generic/rte_prefetch.h

预取函数只接受一个参数:预取数据的内存地址。注意,预取指令的效果也是特定于体系结构的。在x86 (我更熟悉)中,预取指令只是提示,硬件可能会忽略它们。预取的数据量也是不确定的,但在我的经验中,它通常是一条基线(64字节)。

在实践中,DPDK (和DPDK应用程序)很少预取整个mbuf或整个数据部分。它们只预取实际访问的单身汉,通常是包含最常用字段的rte_mbuf结构的第一条记录线,以及有效数据的第一条缓存行,后者通常包含网络数据包的报头。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72960358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档