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,10 +138,10 @@ enum intel_descriptor_status {
138 138
  * Minimum value is 8, since the descriptor ring length must be a
139 139
  * multiple of 128.
140 140
  */
141
-#define INTEL_NUM_RX_DESC 8
141
+#define INTEL_NUM_RX_DESC 16
142 142
 
143 143
 /** Receive descriptor ring fill level */
144
-#define INTEL_RX_FILL 4
144
+#define INTEL_RX_FILL 8
145 145
 
146 146
 /** Receive buffer length */
147 147
 #define INTEL_RX_MAX_LEN 2048

Loading…
Cancel
Save