繁忙的网络服务器在CPU,NET, MEM和磁盘IO几个方面可能出现瓶颈。
对于多核的CPU,经常会出现一个核的利用率是100%,而其他的核则相对较为空闲。通过查看中断处理情况,可以发现该核处理的中断数目过多导致。
查询命令:
cat /proc/interrupts
26: 351416232 351355635 351336252 351305610 PCI-MSI-edge eth0-rx-0
27: 351250206 351238311 351234535 351130881 PCI-MSI-edge eth0-rx-1
28: 351250839 351250042 351182688 351158601 PCI-MSI-edge eth0-rx-2
29: 351454966 351450761 351397059 351368182 PCI-MSI-edge eth0-rx-3
30: 535007495 534975534 535051601 535087653 PCI-MSI-edge eth0-tx-0
31: 361820072 361967157 361904351 362020265 PCI-MSI-edge eth0-tx-1
32: 362179786 362203268 362236464 362344390 PCI-MSI-edge eth0-tx-2
33: 161226 154862 160390 161990 PCI-MSI-edge eth0-tx-3
34: 0 0 0 0 PCI-MSI-edge eth1
35: 352786187 352729535 352721926 352637399 PCI-MSI-edge eth1-rx-0
36: 351357885 351307837 351299212 351254904 PCI-MSI-edge eth1-rx-1
37: 351211645 351155684 351143427 351088299 PCI-MSI-edge eth1-rx-2
38: 351553588 351516810 351483963 351409808 PCI-MSI-edge eth1-rx-3
39: 534859862 534890288 534955263 535005753 PCI-MSI-edge eth1-tx-0
40: 361646757 361727336 361781378 361851064 PCI-MSI-edge eth1-tx-1
41: 361970615 362011459 362039639 362102781 PCI-MSI-edge eth1-tx-2
42: 162578 154875 161585 162035 PCI-MSI-edge eth1-tx-3
26: 351416232 351355635 351336252 351305610 PCI-MSI-edge eth0-rx-0
27: 351250206 351238311 351234535 351130881 PCI-MSI-edge eth0-rx-1
28: 351250839 351250042 351182688 351158601 PCI-MSI-edge eth0-rx-2
29: 351454966 351450761 351397059 351368182 PCI-MSI-edge eth0-rx-3
30: 535007495 534975534 535051601 535087653 PCI-MSI-edge eth0-tx-0
31: 361820072 361967157 361904351 362020265 PCI-MSI-edge eth0-tx-1
32: 362179786 362203268 362236464 362344390 PCI-MSI-edge eth0-tx-2
33: 161226 154862 160390 161990 PCI-MSI-edge eth0-tx-3
34: 0 0 0 0 PCI-MSI-edge eth1
35: 352786187 352729535 352721926 352637399 PCI-MSI-edge eth1-rx-0
36: 351357885 351307837 351299212 351254904 PCI-MSI-edge eth1-rx-1
37: 351211645 351155684 351143427 351088299 PCI-MSI-edge eth1-rx-2
38: 351553588 351516810 351483963 351409808 PCI-MSI-edge eth1-rx-3
39: 534859862 534890288 534955263 535005753 PCI-MSI-edge eth1-tx-0
40: 361646757 361727336 361781378 361851064 PCI-MSI-edge eth1-tx-1
41: 361970615 362011459 362039639 362102781 PCI-MSI-edge eth1-tx-2
42: 162578 154875 161585 162035 PCI-MSI-edge eth1-tx-3
irqbalance服务是一种解决办法,但实际的系统中经常发现尽管启用了irqbalance服务,但中断分配仍然分配不均,具体的原因目前本人功力尚浅,无法解释。
说明一下可行的解决办法:
强制将中断号同CPU绑定起来。如何操作:
Step 1) 查看网卡的中断号,找出其中关键的若干中断(中断频率最高的)
cat /proc/interrupts
Step 2)如果系统已经启动了irqbalance服务,先停止该服务(否则绑定的结果不会生效)
service irqbalance stop
Step 3) 将中断号与对应的CPU绑定起来
echo "2" > /proc/irq/90/smp_affinity
这里的2指的是将90号中断绑定到1号CPU上。依次类推,如果向绑定到3号CPU上,则是echo "3",同时绑定到0,1,2,3号则echo "f"了
Step 4)再次通过cat /proc/interupts来检查中断是否按照期望的去分配了
另一种查看方法是 mpstat -P ALL 1来检查各CPU的利用率
如果问题还是没有解决,我暂时就帮不了什么忙了
给主人留下些什么吧!~~
评论热议