纠纷奇闻作文社交美文家庭
聚热点
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

浅浅聊一下网卡多队列

6月22日 不将就投稿
  1。前言
  一般来说,我们一个网卡只有一个队列(queue),如果在单队列网卡的网卡的情况下,所有收到的包从这个队列入,内核从这个队列里取数据处理。该队列其实是ringbuffer(环形队列),内核如果取数据不及时,则会存在丢包的情况。一个CPU处理一个队列的数据,这个叫中断。在单队列多核架构的虚拟机当中,默认是0号CPU在处理,这样的话,如果流量特别大,这个CPU负载很高,性能存在瓶颈。因此就有了多队列网卡的这个情况。即一个网卡有多个队列,收到的包根据TCP四元组信息hash后放入其中一个队列,后面该链接的所有包都放入该队列。每个队列对应不同的中断,使用irqbalance将不同的中断绑定到不同的核。充分利用了多核并行处理特性。提高了效率。
  2。启用多队列网卡并不是所有的网卡都支持多队列的,如果你的网卡不支持多队列,那你输入以下命令会得到如下提示〔rootccs〕ethtoolleth0
  Channelparametersforeth0:
  Cannotgetdevicechannelparameters
  :Operationnotsupported
  这是因为网卡驱动并没有实现ethtool的getchannels方法。可能的原因包括:该网卡不支持调整RXqueue数量,不支持RSSmultiqueue,或者驱动没有更新来支持此功能。
  正常的返回结果应该如下,我的服务器配置是4C8G,如果返回信息中,两个Combined字段取值相同,则表示弹性网卡已开启支持多队列。〔rootccs〕ethtoolleth0
  Channelparametersforeth0:
  Presetmaximums:
  RX:0
  TX:0
  Other:0
  Combined:4表示最多支持设置4个队列
  Currenthardwaresettings:
  RX:0
  TX:0
  Other:0
  Combined:4表示当前生效的是4个队列
  OK,那么这里开始就表示你的网卡支持多队列啦,如果你的生效队列小于支持队列,那么你可以使用以下命令来开启多队列:ethtoolLeth0combinedN
  strongtoutiaoorigincode这里的eth0是网卡名称,N代表的事你想让网卡生效几个队列strong
  3。多队列网卡实现图示(这里使用双队列举例)普通单队列
  queue
  packetpacketCPU0
  开启多网卡队列
  queue
  packetpacketCPU0
  CPU1
  CPU2
  queue
  packetpacketCPU3
  4。中断与CPU的关系
  第一列是中断号,后面两列是对应CPU处理该中断的次数,virtioinput和virtiooutput为网卡队列的中断,我的服务器由于是云服务器,购买的时候就要求云厂商提供多队列网卡,所以云厂商的操作系统镜像是经过调试的,可以看到网卡的中断是均分给各个CPU的,如果你是刚刚开启的多队列网卡,那么你大部分的中断应该是被CPU0处理了。〔rootccs〕catprocinterruptsegrepCPUvirtio。(inputoutput)
  CPU0CPU1CPU2CPU3
  31:1500117PCIMSIedgevirtio0input。0
  32:1000PCIMSIedgevirtio0output。0
  33:1101250PCIMSIedgevirtio0input。1
  34:1000PCIMSIedgevirtio0output。1
  35:1513500PCIMSIedgevirtio0input。2
  36:1000PCIMSIedgevirtio0output。2
  37:151000PCIMSIedgevirtio0input。3
  38:1000PCIMSIedgevirtio0output。3
  这个均分你也可以自己设置的,这个就涉及到中断跟CPU的亲和性了,下面就是你的服务器的中断〔rootccs〕lsprocirq
  0110111213141522425262728293303132333435363738456789defaultsmpaffinity
  如果你要设置亲和性,以0号中断举例〔rootccs〕catprocirq0smpaffinitylist
  03
  这样表示0号中断是绑定到了前4个CPU(CPU03)上面),你可以将其修改为专属于某个CPU的方式,直接修改值即可
  这里遍历几个我的中断当示例展示〔rootccs〕foriin{24。。30};doechonInterruptiisallowedonCPUs;done
  Interrupt24isallowedonCPUs1
  Interrupt25isallowedonCPUs2
  Interrupt26isallowedonCPUs03
  Interrupt27isallowedonCPUs03
  Interrupt28isallowedonCPUs3
  Interrupt29isallowedonCPUs0
  Interrupt30isallowedonCPUs0
  5。软中断负载
  top进入交互式界面后,按1显示所有cpu的负载。si是软中断的CPU使用率。如果高比如50,说明该CPU忙于处理中断,通常就是收发网络IOtop10:23:54up24min,1user,loadaverage:1。45,0。84,1。06
  Tasks:401total,1running,400sleeping,0stopped,0zombie
  Cpu0:11。8us,7。7sy,0。0ni,79。1id,0。0wa,0。0hi,1。3si,0。0st
  Cpu1:10。7us,6。7sy,0。0ni,81。2id,0。0wa,0。0hi,1。3si,0。0st
  Cpu2:11。1us,7。4sy,0。0ni,80。2id,0。0wa,0。0hi,1。3si,0。0st
  Cpu3:12。1us,6。4sy,0。0ni,80。2id,0。0wa,0。0hi,1。3si,0。0st
  KiBMem:8008632total,393060free,4095716used,3519856buffcache
  KiBSwap:0total,0free,0used。3457996availMem
  6。拓展:RSS,RPS,RFS和XPS
  RSS(receivesidescaling):网卡多队列
  RPS(receivepacketSteering):RSS的软件实现
  RFS(receiveflwoSteering):基于flow的RPS
  AcceleratedRFS:RFS的硬件实现
  XPS(transmitpacketSteering):应用在发送方向
  6。1RSS
  现在网卡都有多队列功能,在MSIX中断模式下,每个队列都可以使用单独的中断。在多核系统下,将每个队列绑定到单独的core上,即让单独的core处理队列的中断,可通过下面的命令实现绑定,意思为让core1处理中断27,值得注意的是,cpu列表最好和网卡在同一个numa上。echo0x1procirq27smpaffinity
  在单队列模式下,网卡收到的包都会让queue0处理,那多队列模式下,数据包如何分发呢?
  网卡内部有Redirectiontable(表大小不同网卡有不同的实现),表中每项包含一个队列id,当网卡收到包后,会先解析报文出五元组等信息,然后根据这些信息(可以设置基于ip,tcp,udp等)计算出hash值(hash算法是固定的,但是使用的key可以在初始化时指定),然后根据hash低7位取模tablesize,得到表的一项,取出此项包含的队列id,此id即是数据包发往的队列。
  a。Parsedreceivepacket解析数据包,获取五元组等信息
  b。RSShash根据五元组的某些信息计算hash值
  c。PacketDescriptor将hash值保存到接收描述符中,最终会保存到skbhash中,后续可以直接使用hash值,比如RPS查找cpu时使用这个hash值
  d。7LSbits使用hash值低7位索引redirectiontable的一项,每项包含四位(所以最多支持16个队列)
  e。RSSoutputindextable的指定项就是接收队列。
  那redirectiontable中每一项中的队列id是如何设置的呢?在驱动初始化时,根据使能的队列个数,依次填充到每一项,达到队列最大值后,从0开始循环填充。比如使能了4个队列,则table的0127项依次为:0,1,2,3,0,1,2,3。。。
  看下ixgbe中使用到的和redirectiontable相关的寄存器,使用32个IXGBERETA寄存器,每个寄存器的0:3、11:8、19:16和27:24分别表示一个table的entry,而且是4位,所以使能RSS时最多支持16个队列。
  6。2RPS
  在单队列网卡,多核系统上,或者多队列网卡,但是核数比队列多的情况下,可以使用RPS功能,将数据包分发到多个核上,使多核在软中断中处理数据包。这相当于是RSS的软件实现。
  使能RPS也很简单,如下,将cpu列表写入队列对应的rpscpus即可。
  配置文件为sysclassnetethqueuesrxrpscpus。默认为0,表示不启动RPS如果要让该队列被CPU0、1处理,则设置echo3sysclassnetethqueuesrxrpscpus,3代表十六进制表示11,即指CPU0和CPU1在开启多网卡队列RSS时,已经起到了均衡的作用。RPS则可以在队列数小于CPU数时,进一步提升性能。因为进一步利用所有CPU
  6。3RFS
  从RPS选择cpu方法可知,就是使用skb的hash随机选择一个cpu,没有考虑到应用层运行在哪个cpu上,如果执行软中断的cpu和运行应用层的cpu不是同一个cpu,势必会降低cpucache命中率,降低性能。
  所以就有了RFS,原理是将运行应用的cpu(为了高性能,一般都会将应用和cpu绑定起来),保存到一个表中,在getrpscpu时,从这个表中获取cpu,即可保证执行软中断的cpu和运行应用层的cpu是同一个cpu。
  这个表是procsysnetcorerpssockflowentries。检查当前RPS,RFS开启情况:strongtoutiaooriginstrongclasshighlighttextforstrongistrongtoutiaooriginstrongclasshighlighttextinstrong(ls1sysclassnetethqueuesrxrps);strongtoutiaooriginstrongclasshighlighttextdostrongechon{i}:;cat{i};strongtoutiaooriginstrongclasshighlighttextdonestrong
  sysclassneteth0queuesrx0rpscpus:3
  sysclassneteth0queuesrx0rpsflowcnt:4096
  sysclassneteth0queuesrx1rpscpus:3
  sysclassneteth0queuesrx1rpsflowcnt:4096
  catprocsysnetcorerpssockflowentries
  8192hr6。4XPS
  前面三个都是接收方向的,而XPS是针对发送方向的。网卡发送出去时,如果有多个发送队列,选择使用哪个队列。
  可通过如下命令设置,此命令表示运行在f指定的cpu上的应用调用socket发送的数据会从网卡的txn队列发送出去。echofsysclassnetdevqueuestxnxpscpus
  虽然设置的是设备的txqueue对应的cpu列表,但是转换到代码中保存的是每个cpu可使用的queue列表。因为查找xpscpus时,肯定是已知cpuid,寻找从哪个txqueue发送。
  选择txqueue时,优先选择xpscpu指定的queue,如果没有指定就使用skbhash计算出来一个。当然也不是每个报文都得经过这个过程,只有socket的第一个报文需要,选择出queue后,将此queue设置到sksktxqueuemapping,后续报文直接获取sktxqueuemapping即可。
投诉 评论 转载

在崇明这个民宿群里,遇见花花世界在崇明新河镇,有一个民宿群,名曰花宿,自然且美好、现代与艺术兼备,让人在花花世界里,遇见生活的小确幸。沿着一条小溪缓缓走来,驻足在一座石板桥上,民宿大门映入眼帘,主理人介……浅浅聊一下网卡多队列1。前言一般来说,我们一个网卡只有一个队列(queue),如果在单队列网卡的网卡的情况下,所有收到的包从这个队列入,内核从这个队列里取数据处理。该队列其实是ringbuf……做人切记无营生在人生的旅途上,每个人的遭遇各不相同。有的人历尽坎坷几经磨难,潦倒终生,有的人屡逄良机一帆风顺,功成名就,有的人先苦后甜结局美满,有的先甜后苦抱恨终身。只要你留心周围的人便常看……一边吃饭一边喝水,让人在不知不觉中长胖很多人习惯一边吃饭,一边喝点水,尤其当食物比较干涩时,喝点水有利于吞咽。事实上,这个习惯不仅影响消化,还容易使人发胖。5类人尤其要注意对一般人来说,平日吃饭喝水适量……和美女车主们的一次露营随着dmi车型的火爆,湖北武汉吾汉王朝车友会二群迅速壮大,随之而来的是组织活动的呼声越来越高。终究,在9。17这天,车友会20台车40人浩浩荡荡从武汉出发来到大冶龙角山1……斗鱼宣布联合创始人张文明卸任联席首席执行官职务雷递网乐天12月7日报道斗鱼今日宣布董事会和管理层的变动,斗鱼联合创始人张文明因个人原因自愿辞去本公司董事兼联席首席执行官一职,自2021年12月7日起生效。斗鱼的……热血传奇有些极品装备是锦上添花,而有的极品装备实属鸡肋传奇玩家对于极品装备的追求是非常高的,毕竟在小数值的复古版本极品加点的那点属性对于玩家的提升也是非常高的,所以极品装备在复古版本是经久不衰的存在,甚至于有些能从复古版本用到合击……8。31丨新能源医疗半导体以及白酒等板块操作分享半导体:目前跌0。2左右。今天波动不大,不过也算是企稳的第三天,继续等反弹就OK了。新能源:目前跌3。4左右。今天资金主要受到了巴菲特减持影响,出现了了结。这……穆帅打下的基础?热刺10轮7胜要争冠,孔蒂有望2次摘他留下的本轮英超,热刺在主场迎战埃弗顿,结果他们20完胜对手。本轮过后,热刺本赛季前10轮比赛,已经拿到7场胜利,目前在积分上暂时追平了曼城(本轮比赛还没踢),连瓜帅都表示,热刺也能成……完美谢幕!执教52年,中国篮坛不老传奇谁说老帅不在乎冠军,那不是心里话。蒋兴权,蒋指导,执教生涯52年,拿过全国甲A联赛冠军,拿过亚锦赛、亚运会冠军,多次参加奥运会,唯独没有CBA冠军。这也许是他内心的一个小小的遗……寰宇卫星和德二号G星闵行少年星发射北京时间2022年8月4日11时08分,我国在太原卫星发射中心使用长征四号乙遥四十运载火箭,将陆地生态系统碳监测卫星、和德二号G星和闵行少年星顺利送入预定轨道,发射任务获得圆满……不买贵的只选对的,我私藏的5个宝藏小众国货品牌包包晚上好啊好久没写包了,今天来推荐一期百元到千元级的包包,主要都是国货品牌。这几年国货包包越来越受欢迎了,在明星的街拍、杂志大片和电视剧里经常出现,我们之前写包包推荐……
自己动手制作CHATGPT套壳客户端一python代码为什么说扎克伯格的元宇宙会成为人类的威胁?脸书Facebook最晚周三开启裁员被湖人无情交易,25岁终于证明自己!末节16分,科比果然没看安切洛蒂把好球员放在替补席并不容易,阿扎尔确实回来了外地人来湖南,点哪些菜不尴尬?推荐六道经典湘菜它们很好吃雷东多儿子我一直都是皇马的球迷,去那里踢球是我的一个梦想北京冬奥会中国夺金点分析短道速滑优势明显,雪上项目有望突破蔡斌王宝泉到底争啥?一场球见高低2名将双重身份或已无心恋战新能源汽车补贴结束,新车涨价会是2023年的主旋律?用cc霜还用bb霜吗?用cc霜之前需要用bb吗?保罗评NBA历史最佳阵容,老詹库里无缘,球迷这阵容可直接颁奖
丁俊晖首次回应假球事件!常冰玉VS希金斯,那是金马奖的差距各种脸型与发型的搭配教你走尽韩式风综艺屋檐之下62岁刘雪华独自生活引热议小孩鼻炎会影响身高吗郬杨镇的屈宗稷四十五中篇小说家用简易灭火器原理3位短发女神,有人陷入婚外恋,有人54岁仍单身,如今怎样了被人懂是幸运有人懂是幸福热文聚热点网 高考选择心理学专业的同学需要知道哪些面对“预签约”泛滥,这几点被拆迁人应当熟记于心尴尬了!利物浦9万周薪签下美洲杯金靴,仍敌不过曼联爆炸新闻曲蔓地歌词曲蔓地歌曲简介

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形