网卡中断绑定CPU脚本

#!/bin/bash
set_affinity()
{
if [ $VEC -ge 32 ]
then
MASK_FILL=""
MASK_ZERO="00000000"
let "IDX = $VEC / 32"
for ((i=1; i<=$IDX;i++))
do
MASK_FILL="${MASK_FILL},${MASK_ZERO}"
done

    let "VEC -= 32 * $IDX"
    MASK_TMP=$((1<<$VEC))
    MASK=$(printf "%X%s" $MASK_TMP $MASK_FILL)
else
    MASK_TMP=$((1<<$VEC))
    MASK=$(printf "%X" $MASK_TMP)
fi

printf "%s" $MASK > /proc/irq/$IRQ/smp_affinity
printf "%s %d %s -> /proc/irq/$IRQ/smp_affinity\n" $DEV $VEC $MASK ;

}
network_irq(){

if [ "$1" = "" ] ; then
       ARG="$(ifconfig  | grep ‘^[[:alpha:]]‘ | awk ‘$1!~/^(lo|bond|br|docker|virbr)/{print $1}‘)"
else
    ARG="$*"
fi

IRQBALANCE_ON=`ps ax | grep -v grep | grep -q irqbalance; echo $?`
if [ "$IRQBALANCE_ON" == "0" ] ; then
    service  irqbalance stop
fi
CPU=$(( $((`cat /proc/cpuinfo |grep processor|wc -l`)) - 1 ));
VEC=$CPU;
for DEV in $ARG
do
  for IRQ in `cat /proc/interrupts |grep ${DEV}| cut  -d:  -f1| sed "s/ //g"`;
  do
    DIR=`cat /proc/interrupts | egrep -i -e "^$IRQ|^\s+$IRQ"| awk ‘{print $NF}‘`;
    if [ -n  "$IRQ" ]; then
          set_affinity;
          VEC=$(($VEC - 1));
          if [ "$VEC" -lt 0 ]; then
              VEC=$CPU;
          fi
    else
           echo -e "["`date "+%F %T"`"]\tget $DIR IRQ Failed.";
    fi
  done

done
echo -e "["`date "+%F %T"`"]\tSet down over." ;

}

network_irq

原文地址:http://blog.51cto.com/buguoruci/2125602

时间: 2024-11-13 14:09:53

网卡中断绑定CPU脚本的相关文章

查看网卡中断绑定情况的脚本

#!/usr/bin/ruby cpunum = ` cat /proc/cpuinfo |grep processor|wc -l`.to_i  before = {} while true   file = File.readlines('/proc/interrupts')   puts "ifname        cpu0       cpu1     cpu2    cpu3    cpu4    cpu5    cpu6    cpu7    cpu8    cpu9    cpu

网卡可以绑定cpu提高吞吐量

请看大神帖子:https://blog.csdn.net/nawenqiang/article/details/82854929 需要做什么呢? 首先,确认你是否运行irqbalance,这个是nice守护进程它会自动在cpu间扩展中断.在繁忙的系统中很重要,尤其是两块网卡,因为默认cpu0 将处理所有中断,系统很容易过载.irqbalance扩散这些中断用以降低负载.为了性能最大化,你可以手动平衡这些中断将套接字和超线程共享内核分 散,但是通常没必要这么麻烦. 原文地址:https://www

网卡中断及多队列

网卡中断及多队列 作者:cb9e58ff5a37链接:https://www.jianshu.com/p/e64d8750ab1c ============================= 1.判断当前系统环境是否支持多队列网卡,执行命令: lspci -vvv 如果在Ethernet项中.含有MSI-X: Enable+ Count=9 Masked-语句,则说明当前系统环境是支持多队列网卡的,否则不支持. 2.ethtool -l eth0命令可以看到eth0网卡是否支持多队列,最多支持多

密集负载下的网卡中断负载均衡smp affinity及单队列RPS

原文 http://rfyiamcool.blog.51cto.com/1030776/1335700     简单的说就是,每个硬件设备(如:硬盘.网卡等)都需要和 CPU 有某种形式的通信以便 CPU 及时知道发生了什么事情,这样 CPU 可能就会放下手中的事情去处理应急事件,硬件设备主动打扰 CPU 的现象就是硬件中断. 关于SMP IRQ affinity? 新的内核, Linux改进了分配特定中断到指定的处理器(或处理器组)的功能. 这被称为SMP IRQ affinity, 它可以控

SylixOS Zynq平台私有中断绑定

1. 概述 本篇主要介绍在Zynq平台编写中断相关的驱动程序时,涉及CPU私有中断的相关绑定办法. 2. 私有中断简介 私有中断是多核CPU上特有的中断,私有中断只能被其所有者核心获取和响应,不会被其他核发现.常见的私有中断有全局定时器,私有看门狗定时器,私有定时器等,Zynq平台上还有来自PL的FIQ\IRQ. 3. 私有中断的绑定方法 3.1      常规共享中断绑定 Zynq平台使用的是GIC通用中断框架,常规的共享中断绑定和普通的中断绑定没有区别,在SylixOS上直接调用API_In

RHEL6.4下用udev做网卡名称绑定

无论你是系统工程师,还是运维工程师,亦或是数据库工程师等等,均有可能会遇到需要网卡特殊命名的时候,本文基于RHEL6.4系统为例介绍如何做网卡名称绑定,仅供参考! 环境:rhel6.4操作系统 要求:将网卡eth0 改名为 public0 步骤介绍:     1. 查看当前eth0网卡的信息     2. 写Udev规则指定网卡名称     3. 网卡文件修改以及网卡信息查看     4. 重启验证     5. 网卡跳号解决方案 查看当前eth0网卡的信息 # udevadm  info  -

NGINX源码剖析 之 CPU绑定(CPU亲和性)

作者:邹祁峰 邮箱:[email protected] 博客:http://blog.csdn.net/qifengzou 日期:2014.06.12 18:44 转载请注明来自"祁峰"的CSDN博客 1 引言   非统一内存访问(NUMA)是一种用于多处理器的电脑记忆体设计,内存访问时间取决于处理器的内存位置. 在NUMA下,处理器访问它自己的本地存储器的速度比非本地存储器(存储器的地方到另一个处理器之间共享的处理器或存储器)快一些. 针对NUMA架构系统的特点,可以通过将进程/线程

Ubuntu系统进程绑定CPU核

Ubuntu系统进程绑定CPU核 作者:chszs,版权所有,未经同意,不得转载.博主主页:http://blog.csdn.net/chszs 本文讲述如何在Ubuntu系统中,把指定的进程绑定到指定的CPU核运行.而通常是由操作系统负责管理进程和线程的调度,但是这种情况下是不清楚由哪个CPU核运行你的进程,因为操作系统的调度是基于资源的可用性进行判断的. 可以这样,把指定的CPU核绑定到你的进程. taskset -cp <CPU ID | CPU IDs> <Process ID&

网卡中断负载篇~

网卡中断条件一般为:网卡型号为82576或者其他型号.作用:做网卡中断以优化服务器性能.1.检查命令:lspci |grep Eth2.cat /proc/interrupts |grep eth2以下图片是已做过优化的网卡 中断配置:根据图二查看到的0-7的对应网卡数值进行配置echo "1" >/proc/irq/91/smp_affinityecho "2" >/proc/irq/92/smp_affinityecho "4"