我的设置:
服务器在地窖+GBit交换机。长电缆到屋顶。千兆位开关。我在屋顶有三台电脑。其中一台只有 100MBit 以太网,一台有 GBit 的笔记本电脑和一台新电脑。
来自旧 100MBit 计算机的 Ping 时间:平均 0.5 毫秒 来自笔记本电脑的 Ping 时间:平均 0.4 毫秒 来自我的新计算机的 Ping 时间:平均 5 毫秒或 30 毫秒或 200 毫秒,但我经常看到 Ping 时间高达 980 毫秒。一般来说,吞吐量很不稳定。
我更换了屋顶的开关。不用找了。我更换了将新计算机连接到屋顶开关的电缆。不用找了。我安装了带有 Intel GBit 芯片 (82541PI) 的 PCI 网卡,并使用它代替内置的 Realtek RTL8111/8168B。不用找了。是的,我确信我已将电缆插入正确的端口,因为我现在从 DHCP 服务器获得了不同的 IP 地址。
同样的网卡在我使用相同操作系统 (openSUSE 12.1) 的旧计算机上完美运行。
ifconfig
说:
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:15679 errors:0 dropped:0 overruns:0 frame:0
TX packets:13077 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 Sendewarteschlangenlänge:1000
ethtool
说:
Speed: 1000Mb/s
Duplex: Full
Port: Twisted Pair
什么可能导致这种行为?
[编辑]我发现了一些有趣的事情:
# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3 CPU4 CPU5 CPU6 CPU7
0: 178 0 0 0 0 0 0 0 IR-IO-APIC-edge timer
1: 6 0 0 0 0 0 0 0 IR-IO-APIC-edge i8042
8: 1 0 0 0 0 0 0 0 IR-IO-APIC-edge rtc0
9: 0 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi acpi
12: 10 0 0 0 0 0 0 0 IR-IO-APIC-edge i8042
16: 3302428 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb1, nvidia, mei, eth1
17: 184 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi snd_hda_intel
23: 16721 0 0 0 0 0 0 0 IR-IO-APIC-fasteoi ehci_hcd:usb2
如您所见,中断 16 服务于一个 USB 端口、显卡、“mei”(?)和eth1
。
我想这可以解释为什么它很慢。 2012年如何分配中断?
答案1
我的主板是华硕 P8Z77-M。 BIOS 版本是 0802。这个 BIOS 有一个 bug:它将相同的 IRQ (16) 分配给所有高吞吐量设备,这可能会导致各种问题(例如将文件复制到 USB 设备时冻结桌面)。
升级到版本 1206 改善了这种情况。网卡现在获得了自己的 IRQ,并且 ping 时间现在处于应有的位置:
64 bytes from ds.digulla (192.168.0.3): icmp_seq=1 ttl=64 time=0.197 ms
64 bytes from ds.digulla (192.168.0.3): icmp_seq=2 ttl=64 time=0.252 ms
64 bytes from ds.digulla (192.168.0.3): icmp_seq=3 ttl=64 time=0.200 ms
64 bytes from ds.digulla (192.168.0.3): icmp_seq=4 ttl=64 time=0.239 ms
64 bytes from ds.digulla (192.168.0.3): icmp_seq=5 ttl=64 time=0.215 ms
64 bytes from ds.digulla (192.168.0.3): icmp_seq=6 ttl=64 time=0.204 ms
64 bytes from ds.digulla (192.168.0.3): icmp_seq=7 ttl=64 time=0.244 ms
64 bytes from ds.digulla (192.168.0.3): icmp_seq=8 ttl=64 time=0.190 ms
^C
--- ds.digulla ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7001ms
rtt min/avg/max/mdev = 0.190/0.217/0.252/0.027 ms