RPS网卡多队列】的更多相关文章

http://laoar.github.io/blog/2017/05/07/rps/ TL;DR RPS 即receive side steering,利用网卡的多队列特性,将每个核分别跟网卡的一个首发队列绑定,以达到网卡硬中断和软中断均衡的负载在各个CPU上. 他要求网卡必须要支持多队列特性. RPS receive packet steering 他把收到的packet依据一定的hash规则给hash到不同的CPU上去,以达到各个CPU负载均衡的目的. 他只是把软中断做负载均衡,不去改变硬…
网卡多队列技术与RSS功能介绍 2017年02月08日 15:44:37 Murphy_0806 阅读数 10665 标签: rss网卡dpdk 更多 个人分类: DPDK https://blog.csdn.net/baidu_24553027/article/details/54927724 多队列 深队列的技术 AHCI不如NVME的最大的地方 其实网卡里面也有 多队列 已经 DMA网卡.   多队列网卡是一种技术,最初是用来解决网络IO QoS (quality of service)问…
背景 最近在做将基于dpdk-16.11.1开发的程序,转移到基于dpdk-18.11版本下开发.遇到了网卡RSS配置的问题,在这里纪录一下. 问题 dpdk-16.11.1 在dpdk-16.11.1上的程序如下: ] = { 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6D, 0x5A, 0x6…
昨天在查LVS调度均衡性问题时,最终确定是 persistence_timeout 参数会使用IP哈希.目的是为了保证长连接,即一定时间内访问到的是同一台机器.而我们内部系统,由于出口IP相对单一,所以总会被哈希到相同的RealServer. 过去使用LVS,遇到过单核CPU被软中断耗尽的问题,然后知道了网卡驱动与多队列.而后知道了淘宝对LVS的优化,然后对生产环境进行了优化,效果显著. 如今单台LVS带宽吃到近500Mb/s,每秒进出包都过40万.此时发现网卡(4队列)对应CPU的软中断消耗已…
网卡优化 RSS receive side scaling,网卡多队列,需要硬件支持.网卡接收到网络数据包后,要发送一个硬件中断,通知CPU取数据包.默认配置,都是由CPU0去做. RPS receive packet steering,向某个CPU发送一个软中断,来接收数据包,并递交给应用程序. RFS receive flow streering,维护两种hash表,实现将软中断分散到多颗CPU上去处理. 1.选择支持msi-x中断方式的网卡类型 #lspci –v 2.网卡需要支持多队列…
RSS适合于多队列网卡,把不同的流分散的不同的网卡多列中,至于网卡队列由哪个cpu处理还需要绑定网卡队列中断与cpu RPS:适合于单队列网卡或者虚拟网卡,把该网卡上的数据流让多个cpu处理 RFS:当流量需要传输到用户态处理时,用处理软中断的cpu去处理用户态的逻辑,由于其实现的基础是RPS,因此只能在单队列网卡或者是虚拟网卡中使用,貌似在最新的内核版本中多队列网卡好像也可以使用了 XPS:根据当前处理软中断的cpu选择网卡发包队列,适合于多队列网卡 其中RFS主要是为了避免cpu由内核态进入…
两年前我以前提到了多个OpenVPN共享一个tun虚拟网卡,旨在降低管理开销和切换开销,由于我讨厌在外面对一大堆网卡做Bridge或者Bonding,除了初衷不同,其实的关于TUN的进展一直没有偏离我的思路.假设你看一下哪怕是Linux 3.9.6的内核的tun.c就知道我当初的思路并没有错.Linux内核社区相同也是这么做的,无疑,大牛们做的更好. 1.关于网卡多队列 硬件在不断的进步,可是终究会遇到物理瓶颈,而此时再想扩展性能就须要横向优化了,就是说,一个芯片遇到了瓶颈,我就搞多个,这也是非…
http://www.cnhalo.net/2016/09/13/linux-gro/ GRO(Generic receive offload): 在napi poll里把小包封装成大包再递交给协议栈 LRO: GRO的硬件实现(通过网卡的RSC功能) http://lwn.net/Articles/358910/ Why not irqbalance? 我们知道通过设置/proc/irq//smp_affinity, 可以设置中断的亲和性. 在用户态也有irqbalance来根据系统各cpu的…
一.协议栈层次对比 设备无关层到驱动层的体系结构 1).网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据.这一层的存在使得上层协议独立于具体的设备.2).网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器.实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构.3).设备…
    在Linux上做网络应用的性能优化时,一般都会对TCP相关的内核参数进行调节,特别是和缓冲.队列有关的参数.网上搜到的文章会告诉你需要修改哪些参数,但我们经常是知其然而不知其所以然,每次照抄过来后,可能很快就忘记或混淆了它们的含义.本文尝试总结TCP队列缓冲相关的内核参数,从协议栈的角度梳理它们,希望可以更容易的理解和记忆.注意,本文内容均来源于参考文档,没有去读相关的内核源码做验证,不能保证内容严谨正确.作为Java程序员没读过内核源码是硬伤. 下面我以server端为视角,从 连接建…