Browse Source

[intel] Increase receive ring fill level

As of commit d28bb51 ("[tcp] Defer sending ACKs until all received
packets have been processed"), increasing the RX ring size will
increase the number of received packets per transmitted ACK (since
each poll will process up to one complete receive ring).  Under KVM,
this can make a substantial (up to ~200%) difference to the overall
download speed, since transmissions are very expensive.

Increase the ring fill level from four to eight packets: this
increases the download speed by around 50% at a cost of around 8kB of
heap space.  Further speedups are possible by increasing the ring size
further, but it would be preferable to find alternative methods which
do not use noticeable amounts of heap space.

Tested-by: Robin Smidsrød <robin@smidsrod.no>
Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 10 years ago
parent
commit
4e4fc678c2
1 changed files with 2 additions and 2 deletions
  1. 2
    2
      src/drivers/net/intel.h

+ 2
- 2
src/drivers/net/intel.h View File

138
  * Minimum value is 8, since the descriptor ring length must be a
138
  * Minimum value is 8, since the descriptor ring length must be a
139
  * multiple of 128.
139
  * multiple of 128.
140
  */
140
  */
141
-#define INTEL_NUM_RX_DESC 8
141
+#define INTEL_NUM_RX_DESC 16
142
 
142
 
143
 /** Receive descriptor ring fill level */
143
 /** Receive descriptor ring fill level */
144
-#define INTEL_RX_FILL 4
144
+#define INTEL_RX_FILL 8
145
 
145
 
146
 /** Receive buffer length */
146
 /** Receive buffer length */
147
 #define INTEL_RX_MAX_LEN 2048
147
 #define INTEL_RX_MAX_LEN 2048

Loading…
Cancel
Save