为什么ping这么慢?

Aar*_*lla 9 performance networking

我的设置:

地窖中的服务器 + GBit 开关。到屋顶的长电缆。GBit 开关。我在屋顶有三台电脑。一个只有 100MBit 以太网,一台带有 GBit 的笔记本电脑和一台新电脑。

旧 100MBit 计算机的 Ping 时间:平均 0.5ms 笔记本电脑的 Ping 时间:我的新计算机的 Ping 时间平均 0.4ms:平均 5ms 或 30ms 或 200ms 但我经常看到 ping 时间高达 980ms。一般来说,吞吐量非常不稳定。

我更换了屋顶上的开关。没变。我更换了将新计算机连接到车顶开关的电缆。没变。我安装了一个带有 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 
Run Code Online (Sandbox Code Playgroud)

ethtool 说:

    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair
Run Code Online (Sandbox Code Playgroud)

什么可能导致这种行为?

[编辑]我发现了一些有趣的事情:

# 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
Run Code Online (Sandbox Code Playgroud)

如您所见,中断 16 服务于一个 USB 端口、图形卡、“mei”(?)和eth1.

我想这可以解释为什么它很慢。如何在 2012 中分配中断?

Aar*_*lla 5

我的主板是华硕 P8Z77-M。BIOS 版本是 0802。这个 bios 有一个错误:它为所有高吞吐量设备分配相同的 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
Run Code Online (Sandbox Code Playgroud)