For research purposes I am trying to improve the resume latency of a Linux machine, and specifically I need to speed up its network responsiveness when it wakes up from suspend-to-RAM. I have managed to get a latency of about 3s for now and I am looking for clues to further shorten this delay.
My setup includes an Intel 82579LM Gigabit NIC, which is controlled by the e1000e driver in the Linux kernel (the computer runs ArchLinux). For now it is only linked to my laptop so I have full control over the network characteristics.
On this setup, DHCP is disabled, as well as auto-negotiation; link speed and duplex mode are forced to 100Mbps full duplex. These (somewhat unrecommended) settings allow for a response time of about 3s on resume. This time is obtained by querying a very light HTML page via an Apache server running on the target machine.
So now I need to find other ways to shorten the delay. According to dmesg, the driver itself only takes about 50ms to wake up, and it is the restoration of the link that takes up a lot of time. Essentially, I need some ideas to quicken the process to restore the Ethernet link.
What is important here is that the NIC is waking up from suspend-to-RAM (and WoL enabled of course) so it might be interesting to avoid some steps when setting it up again because it is safe to assume the network hasn't changed during the sleep period. In the ideal case I would like a way to either keep the link up when the NIC goes to sleep (it stays almost awake because of the wake-on-LAN after all) or to have the link immediately available on resume.
So here I am asking for your help. If you have any hints about how these suggestions could be achieved, or any other idea about this, please answer And thank you!
Thank you for contacting Intel.
In order to facilitate investigation, please reply with the details below:
1. Linux distribution and kernel version:
2. Adapter model and driver version:
We look forward to your reply.
Thank you Sandy, here are the answers:
1. ArchLinux (rolling release distro, mine is up to date), but for my tests I use kernel 4.4.6
2. Adapter 82579LM, driver e1000e version from the kernel so 3.2.6-k
If that matters, here are the characteristics for the laptop on the other end of the cable:
1. ArchLinux, up to date, kernel 4.5.1
2. Adapter I217-LM, driver e1000e version from the kernel so also 3.2.6-k
An update here: I switched to version 3.3.3 (from here: https://sourceforge.net/projects/e1000/files/e1000e%20stable/3.3.3/ Intel Ethernet Drivers and Utilities - Browse /e1000e stable/3.3.3 at SourceForge.net). It is somehow a bit faster, 0.2s. I haven't taken a look into the patch notes to understand why though.
Mmh thank you but what exactly am I supposed to find on this page? Any link in the menu bar doesn't work, and clicking the main "Intel Business Link" link on the left makes my browser say "The connection was reset" (the queried page seems to be a 404 Error anyway according to the URL).
I'm sorry to hear that you were having trouble accessing the website. It must be incompatible with your browser.
The link will bring you to the https://kaveri.intel.com/ibl/help/support.htm Intel Business Link Support where you can request for developer's tools such as the "LANConf" tool. However, you may not need this tool anymore since the wake-up time has improved greatly after driver update.
In case you would like request for the tool, you may send your request to mailto:email@example.com firstname.lastname@example.org.
Hope this clarifies your concerns.
I sent a request anyway because despite this "improvement", it still takes about 2s to get the link back up which is too long for the application (web services).
I thank you again anyway for pointing out this email address, I just want to inform you, for such future requests, that after my message I received an automatic answer explaining that the new valid email address for this kind of request was mailto:email@example.com firstname.lastname@example.org .