DPDK学习——cache相关知识④

本文介绍了DPDK中与性能密切相关的几个概念:TLB缓存如何加速地址转换,大页如何减少TLB不命中,DDIO如何提升数据传输效率以降低延迟,以及NUMA架构对DPDK的影响和处理策略。

6. TLB和大页

6.1 TLB

如前所说,TLB也是一种cache,用于存放页表项的cache,方便快速完成逻辑地址到物理地址的转换。

6.2 大页

但是一个常规页4k,假设一个程序用了512页,总共2MB,这就需要TLB里至少方下512个页表项才能保证每次都能命中,但TLB大小有限。所以为了减少TLB不命中的情况,可以使用大页,以1G为单位进行分页。

7. DDIO

7.1 提出DDIO的背景/原因

①随着大数据和云计算的爆炸式增长,宽带的普及以及个人终端网络数据的日益提高,对电信服务节点和数据中心的数据交换能力&网络带宽提出了更高的要求;

②数据中心本身对虚拟化功能的需求也增加了网络带宽需求,需要对内部服务器资源进行升级。

7.2 DDIO的目的

①让服务器能更快处理网络接口的数据;

②提高系统整体的吞吐率,降低延迟;

③减少能源的消耗。

7.3 DDIO改进

没有DDIO的情况下,处理一个报文,CPU和网卡需要多次访问内存,而内存又很慢,造成CPU长时间等待内存。

DDIO让外部网卡和cpu通过LLC Cache交换数据,绕过内存。但是报文要存在LLC Cache中,增加了对LLC Cache的容量需求。(*LLC = Last Level Cache)

7.4网卡读写数据数据

发送报文,网卡读数据,从CPU到网卡经过:

CPU ——> cache ——>内存 ——> PCI ——> NIC

CPU把报文写到内存的时候,会触发一次cache不命中,先把内存放到cache中。当CPU写完后,要通知网卡来读内存,但是网卡读的这个内存,刚刚在cache中被修改过,这个对内存的读请求很有可能还要到cache中,让cache把新数据写到内存中,才能被网卡读到。

当有了DDIO之后,cpu要写内存的时候,就已经把对应内存预取到cache中了,cpu可以直接操作cache。而且cache可以直接送到PCI总线上,被网卡读到。

接收报文,网卡写数据:

NIC ——> PCI ——> 内存 ——> cache ——> CPU

NIC要写内存的时候,如果这段内存在cache中,需要等待回写,也就是说当后面CPU要读报文内容的时候,只能从内存里读,因为NIC写内存的时候势必会把内存地址从cache中拿回到内存里。

引入DDIO之后,网卡可以直接把报文写入cache,如果要写入的内存不再cache中,会在写入后把这段内存放到cache中。这样,CPU取数据的时候,就可以直接从cache中拿到了。

8. NUMA

8.1 SMP和NUMA

SMP:

SMP的缺点是:①所有处理器连在一根总线上,负担重,系统总线成为效率瓶颈;②处理器与内存之间通信延迟大。

NUMA:

NUMA的优点:本地内存带宽更大,延迟更小;

缺点是访问远程内存效率低下。

8.2 DPDK与NUMA

为了适应NUMA,DPDK代码里做了这些处理:

Pre-corememory。每个核都有属于自己的内存,经常访问的数据结构有自己的备份。这样既满足了本地内存的需要,又可以避免cache一致性问题。

本地设备本地处理。如果一个PCI设备在node0上,那这个设备就由Node0处理。比如:

q = rte_zmalloc_socked\t(“fm10k”,sizeof(*q), RTE_CACHE_LINE_SIZE, socket_id);


小结

本文介绍了大页机制,DDIO技术,和NUMA架构。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值