五分钟看懂抓包神技:DPDK
我是一个网络监控软件,我开发的任务是监控所有进出网络的流量。
一直以来,我的工作都很好,但是伴随着我所监控的网络越来越大,网络中的通信流量越来越多,一开始我就不堪重负,逐渐出现丢包现象,最近这种现象越来越严重。
巨大的交通需求
一天晚上,我的程序员哥哥把我从硬盘里叫了出来。
几点了你怎么还不下班我问我的小弟弟
哎,产品经理说我下个月要支持万兆网络流量的分析我压力很大,没办法,只能加班,说完整理了一下自己稀疏的头发
十万亿10Gbps你在开玩笑吗这是要杀我的节奏
是不是,可急死我了快告诉我,你工作这么久了,有什么不开心或者觉得可以改善的可以告诉我我的小弟弟真诚地看着我
我想了一下说:要说不好听的,那是真的!就是我现在花了太多时间复制包,从内核空间复制包到用户空间以前数据量小,现在网络流量这么大,真是要命
小哥哥叹了口气,哎,这是改不了的通过操作系统的API获取数据包,从网卡读取操作系统我们是在用户空间工作的程序,要复制一次没办法想点别的
我也叹了口气,好吧,还有一个槽收到数据包后,可以直接给我吗不要把它交给系统的协议栈和netfilter框架去处理反正我带了以后还要重新分析,每次都是从他们那里传过去的他们效率低,不拖累我的工作
我小哥皱着眉头眨着眼睛说:大哥,这个我们改不了我水平有限,还没能改造你绕过操作系统让你直接处理网卡不然你怎么不说另一个
好,我不会为难你有一个简单的问题,你要改
有什么问题吗跟我说说
就是我现在在线程切换上花了很多时间,当我再次得到调度执行的时候,经常发现我换了一个CPU核,导致之前的缓存失效,我不得不重新建立缓存。这又是一大浪费!我不能让我的工作线程独占CPU的核心,这样肯定能提高我的工作效率!
小哥想了一下,说:没问题,这个你可以要!可以通过线程关联来完成我给你画几个核心,不要让他们参与系统的线程调度和分配这是给你用的
中断问题
过了几天,程序员哥哥给我升级了,让我的几个工作线程可以独占CPU核,工作效率提高了不少。
但离产品经理要求的万兆流量分析指标还有一段距离。
一天晚上,程序员的小哥哥又找我聊天。
现在分析能力确实提高了,但离目标还很远快告诉我,你有什么改进的建议吗
是有,但我估计你还是会说改不了我翻了翻白眼
先说说吧!
现在这个数据包是以中断的形式读取的我能自己得到它而不被打断吗你不知道,每次中断都要保存上下文,从用户态切换到内核态,那么多流量,代价很大!,我兴奋地说
小哥听后沉默了。
看,我告诉过你你不能改变它!算了,趁早跟产品经理说,这个需求做不了,我们俩都放心。
那不行这个项目对我很重要,我还指望着你升职加薪,走上人生巅峰呢!小哥说的很坚决
如果你做不到,那就多找几台机器,复制几份给我软件不行,就靠硬件把性能堆出来!我冲他眨了眨眼
那还用说,老板不会同意的。
那我就毫无办法了说实话,要处理10万千兆的网络流量,我得绕过操作系统我得自己从网卡上读取数据包你要好好学习想升职加薪怎么会怕困难我给我的小弟弟打气
我小哥点点头,你说的是,我能做到。给我一点时间
数据面开发套件
过了一个多星期,程序员的小哥哥再也没有来找我,我也不知道他的研究怎么样了。
过了几天,他终于又来了。
出来吧!我找到办法了,明天我就开始改造你!
我听了来了兴趣,什么办法你打算怎么改造我
这个新方案可以解决你之前提出的所有问题它允许你直接处理网卡,不需要中断通知你读取数据包,也不需要把数据包交给系统协议栈和netfilter框架处理
你太棒了,你能解决所有这些问题!你是怎么做到这一切的什么原理我好奇地问
小哥哥有点不好意思我怎么会有那本事其实这是别人开发的技术我只是用它
嗯,你弄清楚它的原理了吗那就别坑我了!我有点不安
不要担心这个这项技术被称为DPDK这是英特尔开发的技术
接下来,我的小哥哥,一个程序员,给我介绍了这个叫DPDK的技术原理。
有了DPDK,UIO由操作系统的用户模式驱动,我可以在用户模式下通过轮询读取网卡的数据包,不再中断!
在直接用户模式读取中,不再需要在内核模式空间和用户模式空间中移动数据包看完之后我可以直接分析,不用再去翻系统协议栈和netfilter浪费时间
不止如此!它还支持大页面内存技术,我的小弟弟自豪地说。
大页内存这是什么
默认情况下,系统不管理4KB大小的内存页面这个单元太小了我们的服务器内存将会有很多内存页面为了管理这些页面,会有很多页面条目
听到这里,我突然明白了:我知道了,如果增加这个单元,管理的内存页就少了,页表项也少了,TLB也就不容易失效了,所以地址翻译会更快,对吧。
没错你猜,调整到多大我的小弟弟很神秘
翻倍,8KB看到小哥哥摇头,我又猜了一下,是16KB吗
太保守了,居然能支持2MB和1GB大小!
这么大,牛逼!
闲置问题
第二天,程序员小哥哥开始彻底重构我。
升级后试着运行,发现一个问题:如果包不多或者没有包,我的轮询基本就是浪费时间,一直空转由于我垄断了一个核心,这个核心的占用率始终是100%,其他很多节目都吐槽我,占* *不* *的
于是,我的小哥哥程序员给我升级了,用了中断DPDK模式:没有包处理的时候我就睡觉了,改成中断通知也可以和其他线程共享CPU核,不再独占,但是DPDK线程会有更高的调度优先级一旦包多了,我就重新换成轮询模式,可以灵活切换
我弟弟连续加班两周经过一些优化和升级,我的数据包分析和处理能力有了很大的提高
可惜几轮测试下来,面对10Gbps流量的时候,还是有点不知所措,还是有点捉襟见肘。
弟弟有些气馁我不知道该怎么办了你觉得还有其他可以改进的地方吗
我现在基本上是满负荷工作,应该没有提升的空间了现在,唯一能喘口气的时间就是数据竞赛的时间了当数据被锁定时,线程切换将会暂停
小哥哥想了几秒钟,突然眼睛一亮,高兴地说:我有了!
还没来得及问,就被关机下班了~
程序员的小哥哥要对我做什么。
郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。
责任编辑:笑笑
最新阅读
-
“深交所·创享荟”打造资本市场服务国企改革新典范
9月27日,深交所举办第九期“创享荟”国企专业化整合专场活动。“创享荟”是深交所着力打造的具有深市特色的市场服务品牌,目前已围绕热点主题举办了多期专场活动,影响力和吸引力不断增强。 深交所相关负...
-
微软在GitHub上线开发工具包,助力开发者使用Rust语言编写Wind
,微软Azure首席技术官MarkRussinovich日前在X平台发文,公开微软最近宣布“扩大采用Rust语言的成果”,微软同时还在GitHub中发布了一系列开发工具包,让开发者可以使用Rust语言...
-
擦亮“金融为民”底色光大银行多维发力谱写“人民金融”新篇章
像这样面向听障人士的手语服务模式,光大银行已持续运行了四年。四年来,光大银行通过收集听障客群金融业务需求及沟通痛点,让金融服务更贴近听障人士的日常生活。而这,只是光大银行践行“金融为民”初心,努力提供...
-
云南信托联合多家金融机构进乡村开展金融知识普及教育
近日,为帮助广大农村群众进一步提升金融素养及金融风险防范意识,助力打造诚信、健康、安全、和谐的金融环境,在云南省农村信用社联合社、昆明市农村信用社联合社及昆明市西山区农村信用合作联社的共同协调组织下,...
-
“领头羊”计划走进广州番禺,超59家企业具备上市潜力
南方财经全媒体记者翁榕涛实习生曾日丽广州报道 9月26日下午,广州企业上市“领头羊”行动计划“番禺行动”启动仪式在番禺节能科技园交流中心举行。 据南方财经全媒体记者了解,今年7月以来,广州市地方金...
-
算力牛股中际旭创股价“反攻”800G能否助三季度业绩惯性增长?
21世纪经济报道记者雷晨实习生原婷婷北京报道 近期受国内外AI利好消息驱动,二级市场上,中际旭创股价重新抬头,9月26日、9月27日连续上涨。截至9月27日收盘,公司股价报收于114.07元/股,收...
-
索尼申请外置小型触摸屏专利,可“架在”PS5手柄上远程游玩游戏
,据外媒gamerant报道,索尼近日注册了一项新专利,从文件内容上来看,这项专利主要显示,外加可以使用一个“触摸屏”连接DualSense手柄,来游玩PS5游戏。 图源索尼 索尼于此前正式公布了...
-
14幅图看懂债市潮起潮落
超越城乡居民储蓄存款规模和A股总市值,拥有百万亿以上体量的债券。如同资产配置中的“米面粮油”,在投资中无处不在。相较于股票,您可能是更加委婉地参与其中,大部分人是通过银行理财、债券基金、保险、资管计划...
-
国庆黄金周运输今日启动,长三角铁路预计发送超250万人次
国庆黄金周运输启动。 9月27日,澎湃新闻记者从中国铁路上海局集团有限公司获悉,今天是铁路国庆黄金周运输首日,长三角铁路预计发送旅客逾250万人次,较2019年同期多发送60余万人次,增幅超三成。 ...
-
阿里拟分拆菜鸟在港上市菜鸟子公司已申请上百项物流专利
9月26日,阿里巴巴港交所公告,拟通过以菜鸟股份于香港联交所主板独立上市的方式分拆菜鸟。拟议分拆完成后,阿里巴巴将继续持有菜鸟50%以上的股份,菜鸟将仍为其子公司。 天眼查App显示,菜鸟网络科技有...