Showing posts with label Realtek. Show all posts
Showing posts with label Realtek. Show all posts

Saturday, 18 December 2010

Realtek gigabit network performance in Linux sucks

Recently I have been doing a lot of network file transfers between a few PCs but the very slow transfer speed of a 100Mbps connection has been making things too time consuming.

This equates to a maximum theoretical speed of 12.5 MB/s.

How did I work that out?

Since there are 8 bits in 1 byte, 100 Megabits / 8 = 12.5 Megabytes

Any modern system should easily achieve up to 12 MB/s.

So I decided to get a gigabit switch and upgrade my home network for as cheap as possible :-)

A gigabit connection is 10 times the speed of 100Mbps and therefore has  a maximum theoretical speed of 125MB/s.

All my systems feature gigabit NICs, so no additional expense required on that part at least for now. As for the switch, you do have to be careful when buying a cheap gigabit switch, many claim to be gigabit but suffer from poor performance.

A quick look on www.ebuyer.com revealed a Tenda 8 port Gigabit switch for £24.99 which looked promising, customer feedback on Ebuyer was positive.

The switch itself has a very solid feel and construction with a quality finish, made in China of course.



The instruction manual was also very encouraging.




How did it perform?

Many people are often under the impression that with a gigabit connection you will automatically be able to send or receive at near gigabit speeds, this is not quite the case.

Other hardware components in your PC will have an effect on the transfer speeds and your gigabit network transfer rate will be reduced by the slowest influential component in your PC.

For example if your hard drive can only read at 70MB/s then it would be impossible for this PC to send data at a faster speed than it is physically capable of.

Lets build on this example, if the PC receiving the data has a hard drive with a write speed of 40MB/s, this further bottleneck will limit the transfer speed even more.

Overall the speed of every network file transfer transaction is determined by the PCs taking part in the transaction.

With a 100Mbps (aka 12.5MB/s) network connection it is easy to over look how other hardware components can impact performance since most systems are able to handle data at speeds well beyond 12.5MB/s.

The test setup

System A

AMD Athlon II X2 250
ASUS M4A785TD-V EVO
4GB Patriot Gamer Series 1600Mhz DDR3 7-7-7-20
500GB Samsung SpinPoint F3 Hard Drive
Realtek RTL8112L Gigabit LAN controller
Windows 7 HP x64 / Ubuntu 10.04 x64

System B

AMD Athlon II X2 240
ASUS M3A78-T
4GB G.Skill PQ Series PC2-8000 5-5-5-15
500GB Samsung SpinPoint F3 Hard Drive
Marvell 88E8056 Gigabit LAN controller
Ubuntu 10.04 x64 / Windows 7 HP x64

Notes
Both systems have a 500GB Samsung SpinPoint F3 hard drive which is capable of read/write speeds of about 125MB/s - 140MB/s
System A was also tested with Fedora 14, openSUSE 11.3 and Ubuntu 10.10
Cat5e UTP Cable, 8 meters and 12 meters

Results 

1. System A (Windows 7 x64) / System B (Ubuntu 10.04 x64)

Copying a 17GB compressed file from System B to System A produced speeds of 109MB/s to 110MB/s
Copying the same file back from System A to System B produced identical speeds.

Not bad given a 1000Mbps is theoretically possible of delivering 125MB/s.

2. System A (Windows 7 x64) / System B (Windows 7 x64)

Same speeds as test 1.

3. System A (Ubuntu 10.04 x64) / System B (Ubuntu 10.04 x64)

Copying a 17GB compressed file from System B to System A produced speeds of  37MB/s to 40MB/s
Copying the same file back from System A to System B also produced speeds of 37MB/s to 40MB/s.

Very disappointing.

4. System A (Ubuntu 10.04 x64) / System B (Windows 7 x64)

Same speeds as test 3

Conclusion

System A was able to deliver good speeds only with Windows 7.
System B was able to deliver good speeds with Windows 7 and Linux.

System A suffered from a performance hit when using a Linux operating system.

Clearly Linux does not suffer from poor gigabit network performance, if this were true System B would have displayed similar results to System A, i.e. poor performance in Linux.
 
Why does System A perform poor with Linux?

The answer lies with the pathetic Linux drivers (r8169.ko) Realtek have provided for the Realtek RTL8112L Gigabit LAN controller featured in System A.

Even using drivers from Realtek's slow loading website (r8168.ko) resulted in the same miserable performance.

Does this apply to all Realtek Gigabit controllers that rely on the r8169 kernel driver or is it only the Realtek RTL8112L Gigabit LAN controller that is affected?

Searching on Google implies its a widespread issue with Realtek Gigabit controllers that use the r8169.ko.

But wait there's more..

I am also experiencing another issue with the Realtek network controller on System A.

Restarting Windows then booting into Linux causes the Realtek network controller to cease working.

The solution to get the Realtek back up and running is to power the system completely off including the mains or PSU switch, wait for a few minutes then boot directly into Linux.

In future I will try to avoid purchasing motherboards with Realtek Gigabit network controllers or alternatively purchase a Network card such as the Intel Gigabit PRO/ 1000CT PCIe adapter.

Realtek = POS