linux kernel 关于RSS/RPS/RFS/XPS的介绍】的更多相关文章

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…
RSS适合于多队列网卡,把不同的流分散的不同的网卡多列中,至于网卡队列由哪个cpu处理还需要绑定网卡队列中断与cpu RPS:适合于单队列网卡或者虚拟网卡,把该网卡上的数据流让多个cpu处理 RFS:当流量需要传输到用户态处理时,用处理软中断的cpu去处理用户态的逻辑,由于其实现的基础是RPS,因此只能在单队列网卡或者是虚拟网卡中使用,貌似在最新的内核版本中多队列网卡好像也可以使用了 XPS:根据当前处理软中断的cpu选择网卡发包队列,适合于多队列网卡 其中RFS主要是为了避免cpu由内核态进入…
首先介绍一下背景吧,工作三个星期了.复习了一波u-boot,跟了一下事件上报,搞了下平台设备,扣了一个内存检查代码. 想想生活是不是有点无聊.对啊,真的很无聊!!!! 无聊也没有办法啊,所以找点方法去跟上生活的节奏. 第一天,就稍微讲一下linux  kernel 是干吗的吧. 前面介绍的u-boot做的不好我知道,但是慢慢来吧 kernel  是干嘛的,有很多人有这个疑问,在很久以前我也有这个疑问,我在很长一段时间都认为kernel 就是一堆驱动的集合,这个说是正确也是正确,但是不全面. 在现…
本文快速解析一下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层面也…
目录 . 引言 . Linux 中断的概念 . 中断处理流程 . Linux 中断相关的源代码分析 . Linux 硬件中断 . Linux 软中断 . 中断优先级 . CPU在关中断状态下编程要注意的事项 0. 引言 中断是现代计算机体系结构的重要组成部分,我们回顾历史,现代体系结构的基本输入输出方式有三种 . 程序查询: CPU周期性询问外部设备是否准备就绪.该方式的明显的缺点就是浪费CPU资源,效率低下.但是在特定的场景下这种"程序查询"的方式还有有它的用武之地的 例如,在网络驱…
Linux内核作用: The Linux kernel is the heart of the operating system. It is the layer between the user who works with Linux from a shell environment and the hardware that is available in the computer on which the user is working. The kernel is doing so b…
网卡优化 RSS receive side scaling,网卡多队列,需要硬件支持.网卡接收到网络数据包后,要发送一个硬件中断,通知CPU取数据包.默认配置,都是由CPU0去做. RPS receive packet steering,向某个CPU发送一个软中断,来接收数据包,并递交给应用程序. RFS receive flow streering,维护两种hash表,实现将软中断分散到多颗CPU上去处理. 1.选择支持msi-x中断方式的网卡类型 #lspci –v 2.网卡需要支持多队列…
python/python-linux-procfs/python-linux-procfs.git - Python classes to extract information from the Linux kernel /proc files. https://git.kernel.org/pub/scm/libs/python/python-linux-procfs/python-linux-procfs.git/ #! /usr/bin/python # -*- python -*-…
Linux kernel 编译方法大全记录 一.这是一个我自己写的自动make脚本: #!/bin/sh export ARCH=arm export CROSS_COMPILE=arm-linux-gnueabihf- export CHEN_DTB="chenfl.dtb" if [ 1 -eq $# ]; then if [ $1 = "dtb" ]; then make -j2 $CHEN_DTB O=out cp ~/am335x/kernel4.4.12…
我们习惯在SI(Source Insight)中阅读Linux内核,SI会建立符号表数据库,能非常方便地跳转到变量.宏.函数等的定义处.但在处理系统调用的函数时,却会遇到一些麻烦:我们知道系统调用函数名的特点是sys_×××,例如我们想找open函数的内核系统调用代码,在SI提供的符号表中搜索sys_open,能找到函数的声明: asmlinkage long sys_open(const char __user *filename, int flags, umode_t mode); 原本SI…