8

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?

  • When you run ping do all pings come back? That is, does your setupu loose pings or packets? –  Jul 22 '12 at 14:28
  • I have 0% packet loss. It's just slow. Maybe a bad IRQ was assigned to the network card? – Aaron Digulla Jul 23 '12 at 09:34
  • when you are getting high ping times, have you monitored CPU utilization on both sides to validate that you are not somehow very busy and getting scheduler delays? – Mike Pennington Jul 23 '12 at 16:13
  • 2
    You could try to move the computers next to one another, and connect them using a short crossover cable. That should rule out effects due to bad switches, long cables, electric interference along the way, and so on. Yes I know, the other computer works fine over that distance, but that might be a case of it being more tolerant to noisy signals or similar. – MvG Jul 23 '12 at 20:35
  • 1
    In my case it was a faulty router, you can figure it out like in this question. – Alberto Salvia Novella Oct 24 '19 at 22:26

1 Answers1

5

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