From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Michael S. Tsirkin" Subject: [PATCH net-next 0/8] enable/disable zero copy tx dynamically Date: Mon, 29 Oct 2012 17:49:32 +0200 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: Alexander Duyck , Ian Campbell , kvm@vger.kernel.org, "Michael S. Tsirkin" , netdev@vger.kernel.org, linux-kernel@vger.kernel.org, virtualization@lists.linux-foundation.org, Eric Dumazet , Andrew Morton , "David S. Miller" Return-path: Content-Disposition: inline List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: virtualization-bounces@lists.linux-foundation.org Errors-To: virtualization-bounces@lists.linux-foundation.org List-Id: netdev.vger.kernel.org tun supports zero copy transmit since 0690899b4d4501b3505be069b9a687e68ccbe15b, however you can only enable this mode if you know your workload does not trigger heavy guest to host/host to guest traffic - otherwise you get a (minor) performance regression. This patchset addresses this problem by notifying the owner device when callback is invoked because of a data copy. This makes it possible to detect whether zero copy is appropriate dynamically: we start in zero copy mode, when we detect data copied we disable zero copy for a while. With this patch applied, I get the same performance for guest to host and guest to guest both with and without zero copy tx. Michael S. Tsirkin (8): skb: report completion status for zero copy skbs skb: api to report errors for zero copy skbs tun: report orphan frags errors to zero copy callback vhost-net: cleanup macros for DMA status tracking vhost: track zero copy failures using DMA length vhost: move -net specific code out vhost-net: select tx zero copy dynamically vhost-net: reduce vq polling on tx zerocopy drivers/net/tun.c | 1 + drivers/vhost/net.c | 109 +++++++++++++++++++++++++++++++++++++++++++--- drivers/vhost/tcm_vhost.c | 1 + drivers/vhost/vhost.c | 52 +++------------------- drivers/vhost/vhost.h | 11 ++--- include/linux/skbuff.h | 5 ++- net/core/skbuff.c | 23 +++++++++- 7 files changed, 141 insertions(+), 61 deletions(-) -- MST