前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络设备硬核技术内幕 路由器篇 19 DPDK(四)

网络设备硬核技术内幕 路由器篇 19 DPDK(四)

作者头像
用户8289326
发布2022-07-27 13:28:20
2690
发布2022-07-27 13:28:20
举报
文章被收录于专栏:帅云霓的技术小屋

在DPDK中,对cache的主要优化,除了利用时间局部性和空间局部性以外,更重要的是,要避免多核对缓存的ping-pong式读写。

昨天提到,如果理发店的tony老师上一次让小姐姐非常满意,那么,下一次小姐姐访问tony老师的概率将大大增加。这就是cache加速指令执行的秘籍。

但是,如果有多个小姐姐同时看上了tony老师,则会导致大家在tony老师身后排队。更加雪上加霜的是,tony老师刚刚为前一个小姐姐做完发型的时候,手是脏的,需要清洗后才可以为下一个小姐姐服务。

是的,我们在说多核同时写入一条高速缓存行的情况。

对于多核同时写入一条高速缓存行的情景,由于缓存一致性的要求,当核A写入高速缓存后,需要确保高速缓存的内容与RAM一致。高速缓存管理单元会将这块RAM在其他处理器核维护的高速缓存行标记为dirty,需要做清洁(flush)才可以让下一个core使用。

这段时间的开销是多少呢?我们知道,cache是用来解决RAM读写延迟和CPU运行速度之间的差异的。对于cache命中的情况,CPU里面的ALU可以立即从cache读取,但未命中则需要从DRAM读取,经历MMU地址转换-DRAM控制器写入行地址-写入列地址-读写的过程。这大约会损失100个CPU指令周期。

为了避免前面提到的小姐姐排队等待tony老师洗手造成的弊端,方法是很好解决的:给每一个小姐姐分配一个喜欢的老师就行了,可以是小P老师,kevin老师,加藤鹰老师,东尼大木老师

因此,我们可以为不同的core分配不同的缓存。

除了在前面提到的,对于计数器等多个核可能并发访问的数据结构,小姐姐们还喜欢争抢的一位老师是,网卡的收发队列。

一般地,每个网卡的MAC芯片至少有8个队列。

但是,我们知道,对于Intel的至强处理器,每颗CPU的核数可能多达28核,以超线程论则可能达到56个线程。2路的服务器会有112个线程。显然,8个tony老师无法满足112个小姐姐的需求。

怎么办呢?

且听下回分解。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 帅云霓的技术小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档