Why is ping so slow

networkingperformance

My setup:

Server in the cellar + GBit switch. Long cable to the roof. GBit switch. I have three computers in the roof. One has only 100MBit ethernet, one laptop with GBit and a new computer.

Ping times from the old 100MBit computer: 0.5ms on average
Ping times from laptop: 0.4ms on average
Ping times from my new computer: 5ms or 30ms or 200ms on average but I often see ping times up to 980ms. In general, the throughput is very unstable.

I replaced the switch in the roof. No change.
I replace the cable which connects the new computer to the roof switch. No change.
I installed a PCI network card with an Intel GBit chip (82541PI) and used that instead of the built in Realtek RTL8111/8168B. No change. Yes, I'm sure that I plugged the cable into the correct port because I now get a different IP address from my DHCP server.

The very same network card worked perfectly find on my old computer using the same operating system (openSUSE 12.1).

ifconfig says:

      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 says:

    Speed: 1000Mb/s
    Duplex: Full
    Port: Twisted Pair

What could be causing this behavior?

[EDIT] I found something interesting:

# 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

As you can see, interrupt 16 serves one USB port, the graphics card, "mei" (?) and eth1.

I guess that would explain why it's slow. How do I assign interrupts in 2012?

Best Answer

My mainboard is an ASUS P8Z77-M. The BIOS version was 0802. This bios has a bug: It assigns the same IRQ (16) to all high-throughput devices which can cause all kinds of problems (like freezing the desktop when you copy files to an USB device).

Upgrading to version 1206 improved the situation. The network card now gets its own IRQ and the ping times are now where they should be:

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
Related Question