Not getting gigabit ethernet

I’m not getting gigabit ethernet at home between my Linux box and my iMac. Some previous notes suggested I got 30MB/s, at least once, so maybe this is a new problem?

I tested by running dd if=/dev/zero bs=16k count=10000 | nc -l 9999 on the Linux server and running time nc 192.168.0.65 9999 > /dev/null on the Mac. That took 13.9 seconds for the 164 megabytes, for a throughput of 11.7 megabytes = 93.6 megabits/second of useful data transfer. (MenuMeters measured 11.7MB/s as well; dd claimed 9.8MB/s, but there was a delay in starting the client). Figuring TCP overhead that’s clearly running at 100Mbps, not gigabit.

The server is my Linux box with the onboard Realtek chip (which has some issues). ethtool reports it’s running at 1000Mb/s, full duplex.

The client is my 2011 iMac with some Broadcom chip. WiFi totally turned off. MenuMeters and Network Utility both report Gigabit.

The switch is a Netgear GS116 gigabit switch. It’s unmanaged, so I don’t have much insight into what’s going on. Only one set of blinking lights on the switch indicates gigabit speed, so that’s my problem; either the Mac or the Linux box didn’t negotiate gigabit but is lying about it in the ethernet driver.

Come to think of it, this Mac has been flaky on the ethernet for awhile now, it sometimes takes minutes to come up after resume from sleep. I bet something’s gone wrong with the port or the cable and I’m only capable of 100 megabit now. Wish I had some way to diagnose it.

(the difference between 100mbps and 1000mbps is noticeable when transferring large files. The disk is capable of about 250mbps.)

Update looking at the blinking lights I figured out my Mac really has gigabit at the switch, but the Linux box didn’t. Then I looked closer and realized my Linux box had gigabit too, but only to the small gigabit switch sitting in the closet with it. The upstream link from that small switch to the main big switch was 100 megabit. Weird. Rebooting the small switch fixed it. Confounding issue: I have a 100mbps printer plugged in to the small switch. It doesn’t seem to be disrupting my gigabit right now.