我有服务器与Ubuntu的服务器操作系统,我有一些应用程序在networking上工作。 随着networkingstream量的增加,CPU上下文切换和中断也增加了40 – 60 k每秒。 我必须修复内核优化,NIC优化可能还是什么?
UPDATE
首先感谢你的答案。 我有8个CPU。 我的猫/ proc /中断
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
并看到:大接收卸载:closures
我怎样才能做到这一点?
谢谢。
我假设这些是由于networking负载的合法中断,而不是硬件/驱动程序问题的结果。 所以:
如果您处理TCPstream量,您可以投资于TCP卸载网卡(TOE)。 它在网卡芯片中对TCP / IP进行一些处理,并引发更less的中断(和上下文切换)。 检查你的内核/操作系统/应用程序/stream量是否支持它。
另外,看看大接收卸载 (LRO),这是一个轻量级的方法。
硬件中断是计算机操作的正常部分。 你的网卡是“嘿!嘿!嘿!嘿!” 告诉你的CPU它需要注意。
过多的硬件中断通常是由坏的驱动程序引起的。 所以我首先要看的是你的网卡驱动程序。
这确实是一个大量的中断。 虽然这通常是一个APIC问题。
猫/ proc /中断
应该告诉。 如果你只看到你的中断命中CPU0尝试
echo“2”> / proc / irq /“somenumber”/ smp_affinity
哪个应该在CPU2上推动进程“somenumber”的irqs。