Gigabit Ethernet with free drivers
Sometime last week my family got gigabit internet and some of the computers are going up to 750mb/s download (windows and proprietary drivers), however on my x200 I can't scratch the surface of 200mb/s down. I did "sudo lshw -class network" to see that my ethernet port is a intel gigabit.
*-network
description: Ethernet interface
product: 82567LM Gigabit Network Connection
vendor: Intel Corporation
physical id: 19
bus info: pci@0000:00:19.0
logical name: enp0s25
version: 03
serial: 00:1f:16:2a:63:0b
size: 1Gbit/s
capacity: 1Gbit/s
width: 32 bits
clock: 33MHz
capabilities: pm msi bus_master cap_list ethernet physical tp 10bt 10bt-fd 100bt 100bt-fd 1000bt-fd autonegotiation
configuration: autonegotiation=on broadcast=yes driver=e1000e driverversion=3.2.6-k duplex=full firmware=1.8-3 latency=0 link=yes multicast=yes port=twisted pair speed=1Gbit/s
resources: irq:30 memory:e1600000-e161ffff memory:e1624000-e1624fff ioport:3000(size=32)
Is this due to libre drivers, or am I missing something?
Please advise!
You're probably bottlenecked by the SATA interface. Test it with a RAM Disk if you can.
Thanks!
I have not set up any ram disk whatsoever. Are you talking about the same as the one mentioned in this article I found?
https://www.techrepublic.com/article/how-to-use-a-ramdisk-on-linux/
Well, I looked up the GM45 Chipset and it supports 3Gbps over SATA and even gen 1 SATA is 1.5Gbps.
Though it could be a bus speed issue, a RAM Disk might be a good test of that, but before you try doing a RAM Disk, you should try it on another computer for reference. Even if you have a Gigabit line (like I do) you won't always get gigabit speeds.
I did, with my brother's windows computer. It got 750mb/s down with ethernet. My iPhone is getting 480 mb/s on wifi. x200 getting 200mb/s with ethernet 150mb/s with wifi.
EDIT: I would honestly be happy with 480 down on my x200 with ethernet, I don't care too much about wifi.
There could be multiple factors, I would test an x200 that doesn't have libreboot on windows and then Ubuntu and if you get gigabit on Ubuntu, then Trisquel.
Because if you get gigabit on Trisquel without libreboot, it's a libreboot problem. If you can get gigabit on Ubuntu, it's a re-implemented firmware problem, if you can get gigabit on Windows, it's a free driver problem, but if you can't get gigabit on Windows on the Lenovo Bios, it's just the hardware isn't fast enough.
If it is a libreboot problem, Coreboot might run better even if you compile with the freedom respecting compile switches because Coreboot is more up to date.
The only reason why Coreboot isn't FSF endorsed is because of the default settings. It really doesn't matter as long as you only run freedom respecting software. So if you're compiling your own bios, it's a lot easier to make sure that's pure than say if you install Ubuntu and look for every bit of non-free software in the repos and remove it. It's just a couple compile flags and you remove non-free firmware.
I talked to a guy that uses Coreboot on his T60 and he only trusts free software and compiled it without the non-free firmware.
Unfortunately I did not libreboot this machine myself and would not know how to even try to use a regular bios. Also even though I know how to install windows, I honestly don't want to install it to just try fast internet out...
Thanks for the comments, I will be trying out the methods you stated and see if I can find other potential bottlenecks. x200 is a very mainstream laptop especially among the libre community, maybe someone else has run into this same problem.
No Problem.
Well, I don't have an x200, but I have the Gigabyte board, so I have no experiences with Libre/Coreboot, but as soon as I can get like $300 to finish my libre build, I'm testing it with Windows, Parabola and Gentoo with just free software enabled and I'm flashing it.
I'm curious of how well things perform from Windows to a free rolling release to a source based rolling release with just free software enabled. I'm kinda curious about the results.
I have used many Intel GbE on various ThinkPads (running deblobbed Debian), all of which support 1 Gb/s (~110 MB/s) transfer speed. The HDD might be a bottleneck, but if you have enough RAM (say, 8 GiB or more) used as buffer, this shouldn't be a big problem.
One example is my 15-years-old ThinkPad X40, which has Intel GbE. The maximum possible RAM is 1.5 GiB (with 512 MiB on-board RAM) and the default main HDD is rather slow 1.8-inch, 4200-rpm HDD with writing speed lower than 20 MB/s. With said default configuration, a GbE is no better than 100 Mb/s ethernet NIC. But when I replaced the HDD with a CF card (via a converter card) with 80~100 MB/s writing speed (SanDisk Extreme series), it did make a difference.
To sum up, either SSD or large RAM (or both) solves the performance problem.
I have 8gb RAM and 120gb SSD, I am getting around 200mbps so I believe that the NIC is definitely not the bottleneck. However I am still stumped..
To best of my knowledge, almost all (wired) ethernet NICs don't require non-free firmware (to the contrary of WLAN NICs). Intel GbE NICs commonly used on ThinkPads are no exceptions.
Occasionally, when I install deblobbed Debian on certain low-end ThinkPad Edge series with non-Intel ethernet NICs (e.g. Realtek), the Debian Installer suggested me load firmware. However, this is proven to be false positive. Such ethernet NICs (mainly from Realtek) works without any firmware.
So it seems that your problem is not very relevant to driver of firmware.
I have noticed during a speedtest that CPU usage spikes up to 100%. I never associated CPU usage with internet speeds but perhaps this might be bottlenecking speeds?
100%? Your CPU could be the bottleneck.
Were you using the Javascript on Speedtest.net?
If so, you can call the Speedtest.net API using this free software under Apache License 2.0.
https://www.shellhacks.com/test-internet-speed-linux-command-line/
There are more reasons not to trust Javascript than most of it being black-box non-free software there's also Wirth's law where just because we have access to all this futuristic hardware compared to yesteryear, nobody cares about optimization, so if you notice a lot of non-free internet connected applications like Discord, Skype, Spotify and Steam just run their own instance of Chrome. Not to say high level languages are just resource hogs for no reason, they're more flexible. Tensorflow uses Python because to do something complicated like AI, you need a very abstract language.
Anyway, try speedtest-cli.
Wow. I didn't know. 620Mbit/s (x4 speedtest.net speeds) according to the cli test!
Thanks so much! I didn't realize how inefficient javascript actually was, and very relieved that I'm not paying more for nothing!
Nah, thank you, you made me feel useful! Though a lot of my ideas were me talking out of my rear.
JavaScript is indeed inefficient. This is why modern dynamic webpages are extremely resource consuming, rendering light-weight browser less meaningful. Just a decade before, there were so-called "netbooks" based on mainly Intel Atom processors. They were designed for just webpage browsing, but not other resource-intensive computing tasks. By then, webpages were rather "light-weight". One decade after, I tried one of such "netbooks", and found that their performance is definitely insufficient for webpage browsing (but barely enough for routine works other than browsing such as document editing).
BTW, I correct my previous post about GbE NIC performance. My X40 is based on PCI bus, not PCIe. So the actual maximum transfer speed is ~60 MB/s, due to the bandwidth limitation of the PCI bus. Then a CF card (serves as the main hard drive) with writing speed of 60~80 MB/s is appropriate. The maximum hard drive transfer speed is ~100 MB/s (ATA100 or UDMA 5 mode, as X40 doesn't have SATA). On any PCIe based system (starting Intel 915 series chipset), the GbE NIC should work at 1 Gb/s or ~110 MB/s.
Those Netbooks were so under powered, they increased the lifespan of Windows XP, but as you said, they were good enough to use the internet back then because Vista was so resource intensive. You added a Broadcom Crystal HD and you could play HD video.
Today it's not the OS you need to worry about because a desktop using the same resources as Windows Vista 13 years latter isn't that big of a deal, the problem is Javascript. It almost makes be want to go back to Flash and we would use a libre Flash player with running libre Flash applications. At least in the late days of Flash, Mozilla and Chrome contained it as another thread so if Flash crashed, your whole browser wouldn't crash.
Do you think that javascript will ever die like flash did? Before disabling javascript I had no idea how many different things used it. Everyone uses it as a silver bullet, even on a site with just a text article you can't read it without javascript.
Flash only died because it was the rich web content standard and that was replaced by Javascript. So, if the common folk ever gets tired of Javascript because it's too slow, well it will be replaced by something initially less bloated and it will just become more and more of a resource hog. I think "Web Assembly" is starting to gain traction. Java had the Java Programming language and it was compiled to a binary format that the Java Runtime would run, it's pretty much an Emulator for a CPU that never existed. Flash did the same, but with Actionscript. Web Assembly is pretty much going back to that, but using C/C++ and a web browser that supports Web Assembly would run it. It's a cool idea on paper, but it will be mostly be non-free software your browser would be running and even if it was all free software, it looks like it could be a security hole. The web is just way too feature rich these days.
I guess a good alternative would be finding a site's RSS and atom feeds and using a feed reader. What blogs do you look at that needs Javascript?
No specific blog in mind, just while troubleshooting various things and ducking to find answers I come across various sites that don't work/load text without javascript. I just hit the back button and forget about them haha.. so can't remember which ones exactly.