From 4e4fc678c27fc8020e8ebab3a2bcf6570a75155c Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Fri, 16 May 2014 13:07:36 +0100 Subject: [PATCH] [intel] Increase receive ring fill level MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Michael Brown --- src/drivers/net/intel.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/drivers/net/intel.h b/src/drivers/net/intel.h index 8ce9ea97..e200e2ae 100644 --- a/src/drivers/net/intel.h +++ b/src/drivers/net/intel.h @@ -138,10 +138,10 @@ enum intel_descriptor_status { * Minimum value is 8, since the descriptor ring length must be a * multiple of 128. */ -#define INTEL_NUM_RX_DESC 8 +#define INTEL_NUM_RX_DESC 16 /** Receive descriptor ring fill level */ -#define INTEL_RX_FILL 4 +#define INTEL_RX_FILL 8 /** Receive buffer length */ #define INTEL_RX_MAX_LEN 2048