我的服务器装有 ubuntu 服务器操作系统,上面有一些与网络相关的应用程序。随着网络流量的增加,CPU 上下文切换和中断也以每秒 40 - 60 k 的速度增加。我必须修复内核优化、NIC 优化还是其他什么?
更新
首先感谢您的回答。我有 8 个 CPU。我的 cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 6938741 6966303 6934714 6881839 6895772 6883046 6952545 6909960 IO-APIC-edge timer
1: 0 0 1 0 0 1 1 1 IO-APIC-edge i8042
8: 0 1 0 0 0 0 0 0 IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi acpi
12: 0 1 0 0 1 1 2 1 IO-APIC-edge i8042
16: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb1, uhci_hcd:usb2
17: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb3
18: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb4
19: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi uhci_hcd:usb5
21: 21 23 22 21 23 21 23 21 IO-APIC-fasteoi ipmi_si
22: 3 5 6 6 2 5 3 6 IO-APIC-fasteoi uhci_hcd:usb6, hpilo
23: 0 0 0 0 0 0 0 0 IO-APIC-fasteoi radeon
41: 275729 555 587 549 275294 563 583 600 PCI-MSI-edge cciss0
42: 2 0 2 1 1 1 2 1 PCI-MSI-edge cciss1
46: 31600723 31636789 31668261 31721092 31643480 31719981 31650284 31692948 PCI-MSI-edge eth0
NMI: 0 0 0 0 0 0 0 0 Non-maskable interrupts
LOC: 42250721 42318004 19164905 20751945 32012455 25335850 15889990 15935085 Local timer interrupts
SPU: 0 0 0 0 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 0 0 0 0 Performance monitoring interrupts
IWI: 0 0 0 0 0 0 0 0 IRQ work interrupts
RES: 104005816 96594384 40149041 34906154 77175689 55787936 28455228 25633969 Rescheduling interrupts
CAL: 204860 543304 1318717 1176681 431344 876239 1046465 1257472 Function call interrupts
TLB: 308034 229917 230598 299353 362103 478994 256456 212019 TLB shootdowns
TRM: 0 0 0 0 0 0 0 0 Thermal event interrupts
THR: 0 0 0 0 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 0 0 0 0 Machine check exceptions
MCP: 1263 1263 1263 1263 1263 1263 1263 1263 Machine check polls
ERR: 0
MIS: 0
我有很大:
RES: 104150407 96747853 40291367 35052019 77327041 55940217 28595113 25775538 Rescheduling
这取决于什么?
我的网卡:bnx2:Broadcom NetXtreme II 千兆以太网驱动程序 bnx2 v2.1.6(2011 年 3 月 7 日)
更新2
我做了:ethtool -k eth0
并参见:large-receive-offload: off
我该如何做呢?
谢谢。
答案1
答案2
硬件中断是计算机操作的正常部分。您的 NIC 会发出“嘿!嘿!嘿!嘿!”的声音,告诉您的 CPU 它需要注意。
过多的硬件中断通常是由不良驱动程序引起的。因此,我首先要检查的是您的 NIC 驱动程序。
答案3
这确实是大量的中断。不过,这通常是 APIC 问题。
猫/ proc /中断
应该会告诉你。如果你只看到中断到达 CPU0,请尝试
回显“ 2”> / proc / irq /“ somenumber” / smp_affinity
这应该将进程“somenumber”的中断请求推送到 CPU2 上。