Chinaunix首页 | 论坛 | 博客
  • 博客访问: 800785
  • 博文数量: 247
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 501
  • 用 户 组: 普通用户
  • 注册时间: 2013-07-12 21:53
个人简介

系统未建立

文章分类

全部博文(247)

文章存档

2021年(1)

2020年(3)

2019年(5)

2018年(3)

2017年(44)

2016年(75)

2015年(52)

2014年(63)

2013年(1)

我的朋友

分类: LINUX

2019-01-25 10:56:06

查看网络中断绑定在cpu3
cat /proc/interrupts | grep -E 'CPU|44'
           CPU0       CPU1       CPU2       CPU3
 44:          0          0          0       3836       GIC 178 Level     brcm_44
IPI2:         0          0          0          0       CPU stop interrupts

cat /proc/softirqs | grep  -E 'CPU|NET_RX'
                    CPU0       CPU1       CPU2       CPU3
      NET_RX:        653         10          9        193
思索了很久,认为跟ksoftirqd相关
ps | grep ksoftirq
    3  root         0       0  SW   <0>  [ksoftirqd/0]
   12  root         0       0  SW   <1>  [ksoftirqd/1]
   16  root         0       0  SW   <2>  [ksoftirqd/2]
   20  root         0       0  SW   <3>  [ksoftirqd/3]
 2133  root      5596     560  S    <1>  grep ksoftirq

ksoftirqd是一种均衡机制引入的内核线程。在设计机制上,linux依次优先处理中断、软中断、进程。软中断有几个处理时机:1、中断返回;2、软中断重新触发自己执行(如网络子系统)。
在大网络包发生时,可能导致进程饿死。
但如果将自行触发的软中断延迟到下一次软中断中执行,可能导致软中饥饿。
作为改进,当大量软中断产生的时候,内核引入了一组内核线程来处理负载。这些线程的优先级比较低,避免跟重要任务冲突。

ksoftirq会在每个cpu上都有一个实例,这样,即使中断绑定到某单核,也会出现softirq出现在其他cpu上。

阅读(5525) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~