xinghuo456 发表于 2015-01-23 13:20

ksoftirqd在多核环境下,满负荷情况下是否会被调度

我这边在做路由器性能测试
发现4核环境下,满负荷时,所有softirq几乎都由某一个核处理。
top下看,sirq占25%,idle占75%,只有那个核的ksoftirqd在工作

请问内核不会自己调度么?还是与关闭了内核抢占有关?

humjb_1983 发表于 2015-01-23 13:59

软中断执行的核由硬中断决定,只有一个核处理软中断,应说明网卡只有单队列,只有一个中断。

xinghuo456 发表于 2015-01-23 14:08

回复 2# humjb_1983


    但是我是两个网卡双向打流。怎么也会有两个中断把

xinghuo456 发表于 2015-01-23 14:15

humjb_1983 发表于 2015-01-23 13:59 static/image/common/back.gif
软中断执行的核由硬中断决定,只有一个核处理软中断,应说明网卡只有单队列,只有一个中断。

如果进入轮询状态,没有中断产生,那么软中断就只会在一个核上?

humjb_1983 发表于 2015-01-23 14:23

xinghuo456 发表于 2015-01-23 14:08 static/image/common/back.gif
回复 2# humjb_1983



确认两个网口都有流量?
cat /proc/interrupts看看呢?

xinghuo456 发表于 2015-01-23 14:33

回复 5# humjb_1983


    都有。我用smartbits打的流量

47:      13250      12973      13249      13241   PCI-MSI-edge      eth0
48:       5348       5077       5339       5340   PCI-MSI-edge      eth1
49:          4         11          5          7   PCI-MSI-edge      eth2
50:          8          9          2          8   PCI-MSI-edge      eth3
51:          7          7          8          5   PCI-MSI-edge      eth4
52:          1         14          9          3   PCI-MSI-edge      eth5


eth0和eth1 对打


top的信息:
Mem: 58484K used, 842756K free, 0K shrd, 13692K buff, 14076K cached
CPU:1.8% usr1.2% sys0.0% nic 71.9% idle0.0% io0.0% irq 25.0% sirq
Load average: 1.13 0.48 0.18 2/83 9705
PIDPPID USER   STAT   VSZ %VSZ CPU %CPU COMMAND
   13   2 root   RW       00.0   2 24.3

xinghuo456 发表于 2015-01-23 14:34

/ # cat /proc/softirqs
                  CPU0       CPU1       CPU2       CPU3      
          HI:          0          0          0          0
       TIMER:      11516       8043      15666       6553
      NET_TX:         33          9          6          1
      NET_RX:      22257      28621      34282      23626
       BLOCK:      222       5209         73       1741
BLOCK_IOPOLL:          0          0          0          0
   TASKLET:          0          1          0          0
       SCHED:       8726       3320       2551       3277
   HRTIMER:          0          1          2          0
         RCU:      13151       5565       8885       4495
/ #
/ #
/ # cat /proc/softirqs
                  CPU0       CPU1       CPU2       CPU3      
          HI:          0          0          0          0
       TIMER:      11666       8182      16167       6637
      NET_TX:         34          9          6          1
      NET_RX:      22268      28625      35607      23629
       BLOCK:      222       5209         73       1741
BLOCK_IOPOLL:          0          0          0          0
   TASKLET:          0          1          0          0
       SCHED:       8828       3404       2590       3333
   HRTIMER:          0          1          2          0
         RCU:      13239       5644       8977       4550

只有cpu2的softirq变化大,其余的基本都是个位数的变化

humjb_1983 发表于 2015-01-23 14:39

top命令执行后,按1,看看每个cpu的占用情况。

xinghuo456 发表于 2015-01-23 14:43

回复 8# humjb_1983


    我这是串口连的,按1无效,不知为何-。-

humjb_1983 发表于 2015-01-23 14:48

xinghuo456 发表于 2015-01-23 14:43 static/image/common/back.gif
回复 8# humjb_1983



# mpstat -P ALL 2

这个试试呢。
页: [1] 2
查看完整版本: ksoftirqd在多核环境下,满负荷情况下是否会被调度