知识卡片

Mbuf为何绑定元数据与帧数据

专业/工作 · 1109.d

内容

存放网络帧有两种设计:元数据和帧内容分开存放,帧大小可以任意、缓存可按需申请释放,但数据不一定落在同一Cache Line,容易miss;元数据和帧内容存在同一段固定大小缓存里,大小不一的帧要用填0凑齐固定长度、浪费内存,但申请和释放都只需一个指令、访问效率高。DPDK的Mbuf选择了后者——用可预期的内存浪费换取确定的高效访问,比”按需分配但访问零散”更划算,这再次印证了DPDK一贯的取舍偏好:宁可多花内存,也要少一次不确定的访存。

参考来源

《深入浅出DPDK》第6章《PCIe与包处理I/O》