RPS/RFS/ GRO】的更多相关文章

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的…
本文快速解析一下RPS/RFS的基本原理. RPS-Receive Packet Steering 下面这个就是RPS的原理:  其实就是一个软件对CPU负载重分发的机制.其使能的作用点在CPU开始处理软中断的开始,即下面的地方: netif_rx_internal netif_receive_skb_internal RFS-Receive Flow Steering RFS在RPS的基础上,充分考虑到同一个五元组flow进程上下文和软中断上下文之间处理CPU的一致性,为此在socket层面也…
网卡优化 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由内核态进入…
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负载均衡的目的. 他只是把软中断做负载均衡,不去改变硬…
Introduction============ This document describes a set of complementary techniques in the Linuxnetworking stack to increase parallelism and improve performance formulti-processor systems. The following technologies are described: RSS: Receive Side Sc…
前沿 在学代码审计,然后最近做Linux协议栈的审计,发现Linux不愧是一个久经考验的系统,本来以为可以找到个DoS的,结果发现其在TCP/IP协议栈的链路层实现,利用了各种技术,用来提高性能与安全性. 工具 在跟踪数据从网卡到TCP/IP协议栈的过程中,使用4.10.0内核,利用understand查看代码,以及flawfinder来配合进行安全性的检查.以intel e1000 驱动为列. 分析 NAPI 首先,为了效率,Linux使用了NAPI机制.所谓NAPI机制,其就是当数据到来时,…
一.上节回顾 前面内容,我们学习了 Linux 网络的基础原理以及性能观测方法.简单回顾一下,Linux网络基于 TCP/IP 模型,构建了其网络协议栈,把繁杂的网络功能划分为应用层.传输层.网络层.网络接口层等四个不同的层次,既解决了网络环境中设备异构的问题,也解耦了网络协议的复杂性. 基于 TCP/IP 模型,我们还梳理了 Linux 网络收发流程和相应的性能指标.在应用程序通过套接字接口发送或者接收网络包时,这些网络包都要经过协议栈的逐层处理.我们通常用带宽.吞吐.延迟.PPS 等来衡量网…
网络模型 为了解决网络互联中异构设备的兼容性问题,并解耦复杂的网络包处理流程,国际标准化组织制定了开放式系统互联通信参考模型(Open System Interconnection Reference Model),简称 OSI 网络模型.OSI 模型把网络互联的框架分为应用层.表示层.会话层.传输层.网络层.数据链路层以及物理层等 七层网络模型,每个层负责不同的功能. 应用层 Application,负责为应用程序提供统一的接口. 表示层 Presentation,负责把数据转换成兼容接收系统…
目录 可编程网络DataPath XDP 的基本架构 XDP 的软件要求 XDP 的硬件要求 XDP 的工作流程及使用 XDP 的工作模式 XDP 的工作流程 Hello World XDP 的应用 参考 进阶参考 可编程网络DataPath 大部分网络数据的最终生产者和消费者都是应用程序,在一个计算机中,网络数据包需要经过网卡 <=> 系统内核 <=> 应用程序,才能完成传输. Linux 有严格的内核和用户空间隔离,网络数据在内核和应用程序之间的传输需要频繁的进行上下文切换,随…
根据一些测试整理出来的一份方案(转自http://www.cnblogs.com/lulu/): 1. Redis 性能 对于redis 的一些简单测试,仅供参考: 测试环境:Redhat6.2 , Xeon E5520(4核)*2/8G,1000M网卡 Redis 版本:2.6.9 客户端机器使用redis-benchmark 简单GET.SET操作: 1. 1单实例测试 1. Value大小:10Byte~1390Byte 处理速度: 7.5 w/s,速度受单线程处理能力限制 2. Valu…
今日,测试公司自行开发的一rpc中间件,期间发现top si的比例很高,且几乎只有一个cpu是繁忙的,其他均基本为0. 经查,si主要是系统软中断,最后确定是网卡导致的系统中断.于是,往上搜了下资料,主流的用法是如果网卡支持多队列的,则启用之. 常用的Intel的82575.82576,I350,Boardcom的57711等网卡都支持多队列.如果是实体机,可通过如下方式判断是否支持多队列: lspci -vvv  #lspci在centos 6.x之后的版本不会默认安装,可yum instal…
转:http://codinginet.com/articles/view/201605-linux_net_parallel?simple=1&from=timeline&isappinstalled=0 Linux网络IO并行化技术概览 By mikewei at 2016-05-21 00:30 阅读(276) 过去的十年中互联网经历了爆发式的增长,这背后有什么技术平台起了最为关键的作用,我认为是Linux,即使在云计算流行的今天,它依然是最重要的一块基石.我们或许经常听到关于什么是…
根据一些测试整理出来的一份方案: 1. Redis 性能 对于redis 的一些简单测试,仅供参考: 测试环境:Redhat6.2 , Xeon E5520(4核)*2/8G,1000M网卡 Redis 版本:2.6.9 客户端机器使用redis-benchmark 简单GET.SET操作: 1. 1单实例测试 1. Value大小:10Byte~1390Byte 处理速度: 7.5 w/s,速度受单线程处理能力限制 2. Value 大小:1400 左右 处理速度突降到5w/s 样子,网卡未能…
工作中涉及到阿里云的应用.在性能测试阶段,压测过程中只要一个CPU未使用满,第二个CPU以至于第三个和第四个CPU完全用不到. 后来和阿里云的同事沟通他们现在用的是单队列的网卡,只能靠RPS/RFS这种伪多队列来均衡CPU的使用情况. 2个CPU:echo '3' >/sys/class/net/eth0/queues/rx-0/rps_cpusecho '32768' >/proc/sys/net/core/rps_sock_flow_entriesecho '32768' >/sys…
1.有一点不正确劲 在改动了那个TUN驱动后,我在想,为何我总是对一些驱动程序进行修修补补而从来不从应用程序找解决方式呢?我改动了那个TUN驱动,可是能保证我的改动对别的应用一样可用吗?难道TUN驱动就OpenVPN一家在用?这绝不可能,既然我想到了这个方法,肯定别人也想到了,仅仅所以网上没有资料,是由于这些牛人不屑于此罢了.       使用原生的没有改动的TUN驱动,怎样?Well,let's go on!       问题在哪里,问题在假设我启动多个OpenVPN进程,那么它们每个的mul…
终极资料 1.<Understanding Linux Network Internals> 2.<TCP/IP Architecture, Design and Implementation in Linux> 以下博客内容可用于导读. 自底向上 链路层质料 1.linux内核网络协议栈架构分析,全流程分析-干货: https://blog.csdn.net/zxorange321/article/details/75676063 2.专栏:Linux内核网络栈源代码分析 htt…
市面上太多kv的缓存,最常用的就属memcache了,但是memcache存在单点问题,不过小日本有复制版本,但是使用的人比较少,redis的出现让kv内存存储的想法成为现实.今天主要内容便是redis主从实现简单的集群,实际上redis的安装配置砸门ttlsa之前就有个文章,废话少说,进入正题吧 Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串). list(链表).set(集合)和zset(有序…
不同存储引擎中关键参数优化 MyISAM存储引擎 MyISAM存储引擎适用于读多写少,对读性能要求比较高的系统 官方文档:http://dev.mysql.com/doc/refman/5.6/en/myisam-storage-engine.html Key_buffer_size,可以设置为内存的30%-40%左右.通过show variables like ‘%key_buffer_size%’; 通过 show global status like ‘%key_blocks_unused…
1.服务器概述 1.硬件服务器(IBM,HP): 主机 集群 2.软件服务器(HTTPserver Django flask): 网络服务器,在后端提供网络功能逻辑处理数据处理的程序或者架构等 3.服务器架构         c/s(客户端client服务器server): b/s架构充分发挥了PC机的性能         b/s(浏览器browser服务器server): 隶属于c/s架构,b/s架构统一了应用的接口 4.服务器追求: 处理速度快,数据更安全,并发量大         硬件:…
扩展Linux网络栈 来自Linux内核文档.之前看过这篇文章,一直好奇,问什么一条网络流会固定在一个CPU上进行处理,本文档可以解决这个疑问.为了更好地理解本文章中的功能,将这篇文章穿插入内. 简介 本文的描述了Linux网络栈中的一组补充技术,用于增加多处理器系统的并行性和提高性能. 描述的结束为: RSS: Receive Side Scaling RPS: Receive Packet Steering RFS: Receive Flow Steering Accelerated Rec…
本文根据Li Qingxin老师在"2021 vivo开发者大会"现场演讲内容整理而成.公众号回复[2021VDC]获取互联网技术分会场议题相关资料. 一.vivo推送平台介绍 1.1 从产品和技术角度了解推送平台 推送平台是做什么的? 有的小伙伴可能了解过,有的可能是第一次接触到.无论您是哪一种情况都希望通过今天的分享,能够让您对我们有新的了解.接下来我将从产品和技术两个不同视角,给大家介绍vivo推送平台. 首先,从产品角度来看,vivo推送平台通过和系统的深度结合,建立稳定可靠.…
1.背景 网卡接收一个数据包的情况下,会经过三个阶段:   - 网卡产生硬件中断通知CPU有包到达 - 通过软中断处理此数据包 - 在用户态程序处理此数据包   在SMP体系下,这三个阶段有可能在3个不同的CPU上处理,如下图所示:   而RFS的目标就是增加CPU缓存的命中率从而提高网络延迟.当使用RFS后,其效果如下: 2.实现原理 当用户程序调用 revmsg() 或者 sendmsg()的时候,RFS会将此用户程序运行的CPU id存入hash表: 而当有关用户程序的数据包到达的时候,R…
offload 现在,越来越多的网卡设备支持 offload 特性,来提升网络收/发性能.offload 是将本来该操作系统进行的一些数据包处理(如分片.重组等)放到网卡硬件中去做,降低系统 CPU 消耗的同时,提高处理的性能. 包括 LSO/LRO.GSO/GRO.TSO/UFO 等. LSO/LRO 分别对应到发送和接收两个方向,是 Large Segment Offload 和 Large Receive Offload. 首先来看 LSO.我们知道计算机网络上传输的数据基本单位是离散的网…
[html代码] <html> <head> <title> 主窗口 </title> </head> <body> <div> <input name="save" type="button" value="Save"> <input name="close" type="button" value=&q…
1. Project.Directory.TestSuit.TestCase.Resource的区别?   Project:项目名称   Directory:对项目进行分层   TestSuit:测试套件   TestCase:测试用例   Resource:可理解为高级语言中的类 2. setting中teardown和返回值的应用   teardown代表测试后需要执行的步骤(你自己可以写一些清理变量或者操作的步骤),由界面来看,清理步骤只能写一步(内置关键字或者用户定义关键字)   返回值…
写这篇文章是为了帮自己理清一下性能测试中最最基本,却总是被人忽略的一些概念. 并发: 什么叫并发?并发不是我们理解的在loadrunner场景中设置并发数,而是正在系统中执行操作或者在系统的队列中排队的用户数,当然在lr的世界里,我们也会粗略的认为二者相等. 响应时间: 严格意义上说是从客户端发送请求开始,到客户端接受到服务器的返回结束.在我们测试环境中,客户端和被测服务器往往在一个机房一个网段甚至同一个交换机, 所以我们通常把响应时间认为是服务器处理请求所耗费的实际 RPS:每秒请求数,这里还…
引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面. ( @齐涛-道长 新浪微博) 下面的内容还没整理好,先发个问题解决机制吧. 如果大家以后有问题可以新浪微博@齐涛-道长  或者发送邮件给我,shotstar@vip.qq.com,请注意在邮件标题带上RFS,因为平时在公司收不了QQ邮箱,不过我设置了规则会自动转发,这样我就能第一时间收到你们的邮件了. 下面是计划的常见问题指引,以后可以直接页面搜索即可,暂时还没放内容哈…
引言:什么是RFS——RobotFramework+Selenium2library,本系列主要介绍web自动化验收测试方面. ( @齐涛-道长 新浪微博) 这一讲我们重点来介绍一下一个常用的关键字evaluate. 我觉得这个关键字在RF里几乎是无所不能,只要你略懂python语法,evaluate能让你直接运行python脚本.这样可以在Library没有给你提供你想要的方法时,直接用python脚本来实现你想要的方法. 下面我们列举一些常用的用法,这只是我演示的例子,实际的用途还有更多,欢…
s 方法一: 第一步,USB设备lan2和台式机网线对插,设置台式机IP 192.168.1.252.子网掩码255.255.255.0第二部,打开设备USB 固有IP页面192.168.1.250 root/root ,进去设置LAN1现有在用局域网网段期望ip(空闲的),在页面里configuration项network项里设置保存,不与别人在用的IP冲突即可.重启设备.第三步,设备Lan2和台式机网线均拔断,使用现有局域网他人电脑ping已设置好的期望IP,能ping通,则点开RFS US…