`
fishermen
  • 浏览: 379951 次
社区版块
存档分类
最新评论

对Linux 网卡软中断做负载均衡

 
阅读更多

        测试中发现服务器整体负载较低,但有cpu负载特别高,其中一个cpu几乎一半是软中断si,特别忙,而还有的cpu特别空闲。

top - 16:12:08 up 31 days,  3:52,  1 user,  load average: 0.11, 0.11, 0.06
Tasks: 242 total,   4 running, 238 sleeping,   0 stopped,   0 zombie
Cpu0  : 12.3%us, 14.6%sy,  0.0%ni, 70.2%id,  0.0%wa,  0.0%hi,  3.0%si,  0.0%st
Cpu1  : 21.6%us, 22.9%sy,  0.0%ni,  7.3%id,  0.0%wa,  0.0%hi, 48.2%si,  0.0%st
Cpu2  : 16.5%us, 19.1%sy,  0.0%ni, 43.9%id,  0.0%wa,  0.0%hi, 20.5%si,  0.0%st
Cpu3  :  2.3%us,  2.6%sy,  0.0%ni, 94.1%id,  0.0%wa,  0.0%hi,  1.0%si,  0.0%st
Cpu4  :  0.3%us,  0.3%sy,  0.0%ni, 99.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

       先用mpstat -I SUM -P ALL 5 来看一下每个cpu的终端情况,发现cpu1和cpu2处理的中断确实很多,是什么dd在使用这两个cpu做中断呢?

# mpstat -I SUM -P ALL 5
Linux 2.6.32-220.13.1.el6.x86_64 (talus186) 	12/26/2013 	_x86_64_	(12 CPU)

04:15:18 PM  CPU    intr/s
04:15:23 PM  all  62422.60
04:15:23 PM    0      0.00
04:15:23 PM    1  21566.20
04:15:23 PM    2  12123.00
04:15:23 PM    3      0.00
04:15:23 PM    4      1.00

      使用 cat /proc/interrupts 查看中断情况,间隔几秒后再次cat /proc/interrupts,然后比较对应值的变化,发现eth0-1、eth0-2等使用cpu1、cpu2做中断,这两个对应的中断号分别是95,96...

 

 95:         33  325897741          0   30997484         72          0   93968731          0          0          0        426        864  IR-PCI-MSI-edge      eth0-1
  96:         50        206   66609822        117          0          0          0          0          0          0          0   24437509  IR-PCI-MSI-edge      eth0-2
     注:网卡(包括磁盘等外设)需要cpu服务时,都会抛出一个中断,中断告诉cpu发生了什么事情,cpu就要停止目前的工作来处理这个中断。比如当网卡收到包时,假如cpu正在执行某个应用进程处理程序,此刻就会被网卡中断所打断执行中断处理程序。每个外设对应的中断处理程序自然是不同的,因此为了进行区分,防止多个设备发出相同的中断请求,系统中的每个设备都被分配了一个独一无二的IRQ(Interupt Request),上面95、96就是所谓的IRQ,如果网卡有多队列,每个队列可以对应一个IRQ(参考net)。

      在使用 cat /proc/irq/95/smp_affinity cat /proc/irq/smp_affinity 等看出网卡的队列都在使用cpu1 和cpu2

cat /proc/irq/95/smp_affinity
00000002
cat /proc/irq/96/smp_affinity
00000004

      好了,把空闲的cpu用上来分摊网卡中断

echo 08 > /proc/irq/97/ smp_affinity
echo 10 > /proc/irq/98/ smp_affinity
...

      再进行测试,发现cpu消耗整体还不够均衡,TOP下使用f,然后再加j,发现应用进程使用的cpu与网卡中断使用的cpu重合,再把单线程应用进程绑定到其他CPU,终于均衡下来。

      最后,网卡软中断绑定cpu需要满足几个条件:1 linux内核版本必须在2.4+; 2 网卡对应的中断控制器必须是IO-APIC芯片,且需启用IO-APIC;3 部分CPU可能不支持。

分享到:
评论

相关推荐

    linux 系统性能相关1.rar

    网卡软中断不能分发到CPU多核 问题的说明; Linux的实时性能测试.pdf  多核处理器上,怎样将软中断,内核线程绑定在指定的core上; LINUX上中断在各个CPU之间的负载平衡问题; 网卡中断在多核cpu上的负载均衡; ...

    Linux多核环境网卡驱动优化研究.pdf

    - **中断分发(Interrupt Distribution)**:根据负载均衡策略,将中断分配到不同的CPU核心,充分利用多核资源。 - **中断禁用(Interrupt Disablement)**:在数据处理过程中,暂时关闭中断,减少中断上下文切换...

    Keepalived+LVS+Nginx热双互备负载均衡

    LVS(Linux Virtual Server)是基于IP层的负载均衡技术,它可以将来自客户端的请求智能地分发到后端的多台服务器,实现负载均衡。在DR(Direct Routing)模式下,客户端的请求直接发送到实际服务器,LVS仅负责路由...

    IBM X3650 网卡聚合

    通过该技术,用户能够将服务器上的两个或多个物理网卡绑定为一个逻辑网卡,以实现负载均衡和网络冗余。 #### 二、Teaming定义及作用 **定义:** Teaming是一种将多张物理网卡绑定成一个逻辑网卡的技术,对外表现为...

    双网卡双ip实现双线路共用的实际应用(图文)

    通过配置两块网卡分别连接不同的网络服务提供商(ISP),可以实现负载均衡和故障切换,从而确保业务连续性。 标题中的“双网卡双IP”是指在同一台计算机上安装并配置两块网卡,每块网卡分配一个独立的IP地址,分别...

    Linux转发性能评估与优化-转发瓶颈分析与解决方案 (2).docx

    Linux内核中的软中断负载均衡技术,如Receive Packet Steering (RPS),可以优化小包处理,但并不完全适用于数据包转发场景。作者提出针对RPS的改进patch以提升转发效率。 Linux内核协议栈在转发性能上的瓶颈主要...

    OpenEuler系统内核版本4.19

    例如,改进的CPU负载均衡算法可以更有效地分配工作负载,减少资源浪费,提升多核处理器的效率。 3. **文件系统**:内核4.19支持多种文件系统,如EXT4、XFS、Btrfs等。这些文件系统各有优劣,适用于不同的应用场景。...

    华为云计算HCNAH13-511 最新题库

    - **云计算关键技术**:涵盖云计算中的关键技术,如虚拟化技术、分布式计算、负载均衡等。 - **华为云计算软硬件架构**:详细介绍华为云计算解决方案的软硬件架构,包括但不限于FusionCloud、FusionCompute等核心...

    性能测试总结

    - 绑定软中断: [http://huoding.com/2013/10/30/296](http://huoding.com/2013/10/30/296) ##### 物理CPU、核数、线程数的判断 在Linux系统中,可以通过以下命令获取相关信息: - **逻辑CPU个数**:`cat /proc/...

Global site tag (gtag.js) - Google Analytics