Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760644Ab3IDUr3 (ORCPT ); Wed, 4 Sep 2013 16:47:29 -0400 Received: from smtp02.citrix.com ([66.165.176.63]:52475 "EHLO SMTP02.CITRIX.COM" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755066Ab3IDUr2 (ORCPT ); Wed, 4 Sep 2013 16:47:28 -0400 X-IronPort-AV: E=Sophos;i="4.89,1023,1367971200"; d="scan'208";a="48222205" From: Zoltan Kiss To: Konrad Rzeszutek Wilk , "David S. Miller" , Eric Dumazet , Neil Horman , Li Zefan , Eliezer Tamir , , , , , CC: Zoltan Kiss Subject: [PATCH] net/core: Order-3 frag allocator causes SWIOTLB bouncing under Xen Date: Wed, 4 Sep 2013 21:47:18 +0100 Message-ID: <1378327638-23956-1-git-send-email-zoltan.kiss@citrix.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.80.2.133] X-DLP: MIA1 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1697 Lines: 39 THIS PATCH IS NOT INTENDED TO BE UPSTREAMED, IT HAS ONLY INFORMING PURPOSES! I've noticed a performance regression with upstream kernels when used as Dom0 under Xen. The classic kernel can utilize the whole bandwidth of a 10G NIC (ca. 9.3 Gbps), but upstream can reach only ca. 7 Gbps. I found that it happens because SWIOTLB has to do double buffering. The per task frag allocator introduced in 5640f7 creates 32 kb frags, which are not contiguous in mfn space. This patch provides a workaround by going back to the old way. The possible ideas came up to solve this: * make sure Dom0 memory is contiguous: it sounds trivial, but doesn't work with driver domains, and there are lots of situations where this is not possible. * use PVH Dom0: so we will have IOMMU. In the future sometime. * use IOMMU with PV Dom0: this seems to happen earlier. Signed-off-by: Zoltan Kiss --- net/core/sock.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/sock.c b/net/core/sock.c index 2c097c5..854a0ea 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -1812,7 +1812,7 @@ struct sk_buff *sock_alloc_send_skb(struct sock *sk, unsigned long size, EXPORT_SYMBOL(sock_alloc_send_skb); /* On 32bit arches, an skb frag is limited to 2^15 */ -#define SKB_FRAG_PAGE_ORDER get_order(32768) +#define SKB_FRAG_PAGE_ORDER get_order(4096) bool sk_page_frag_refill(struct sock *sk, struct page_frag *pfrag) { -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/