[{"id":1763718,"web_url":"http://patchwork.ozlabs.org/comment/1763718/","msgid":"<20170905155127.0bd08fb0@xeon-e3>","list_archive_url":null,"date":"2017-09-05T22:51:27","subject":"Re: [PATCH net-next RFC 1/2] tun: enable NAPI for TUN/TAP driver","submitter":{"id":21389,"url":"http://patchwork.ozlabs.org/api/people/21389/","name":"Stephen Hemminger","email":"stephen@networkplumber.org"},"content":"On Tue,  5 Sep 2017 15:35:50 -0700\nPetar Penkov <ppenkov@google.com> wrote:\n\n> Changes TUN driver to use napi_gro_receive() upon receiving packets\n> rather than netif_rx_ni(). Adds flag CONFIG_TUN_NAPI that enables\n> these changes and operation is not affected if the flag is disabled.\n> SKBs are constructed upon packet arrival and are queued to be\n> processed later.\n> \n> The new path was evaluated with a benchmark with the following setup:\n> Open two tap devices and a receiver thread that reads in a loop for\n> each device. Start one sender thread and pin all threads to different\n> CPUs. Send 1M minimum UDP packets to each device and measure sending\n> time for each of the sending methods:\n> \tnapi_gro_receive(): \t4.90s\n> \tnetif_rx_ni(): \t\t4.90s\n> \tnetif_receive_skb(): \t7.20s\n> \n> Signed-off-by: Petar Penkov <ppenkov@google.com>\n> Cc: Eric Dumazet <edumazet@google.com>\n> Cc: Mahesh Bandewar <maheshb@google.com>\n> Cc: Willem de Bruijn <willemb@google.com>\n> Cc: davem@davemloft.net\n> Cc: ppenkov@stanford.edu\n\nWhy is this optional? It adds two code paths both of which need\nto be tested.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=networkplumber-org.20150623.gappssmtp.com\n\theader.i=@networkplumber-org.20150623.gappssmtp.com\n\theader.b=\"YFxtRBTK\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xn25X3xcKz9sRm\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed,  6 Sep 2017 08:51:44 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1753168AbdIEWvi (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tTue, 5 Sep 2017 18:51:38 -0400","from mail-pg0-f45.google.com ([74.125.83.45]:33639 \"EHLO\n\tmail-pg0-f45.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752962AbdIEWvf (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Tue, 5 Sep 2017 18:51:35 -0400","by mail-pg0-f45.google.com with SMTP id t3so12027344pgt.0\n\tfor <netdev@vger.kernel.org>; Tue, 05 Sep 2017 15:51:35 -0700 (PDT)","from xeon-e3 (76-14-207-240.or.wavecable.com. [76.14.207.240])\n\tby smtp.gmail.com with ESMTPSA id r9sm22058pgp.83.2017.09.05.15.51.34\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tTue, 05 Sep 2017 15:51:34 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=networkplumber-org.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:in-reply-to:references\n\t:mime-version:content-transfer-encoding;\n\tbh=VOcxqgmZYHyuIKjIobeXvj8xILb2SoPwm5E39kt8sck=;\n\tb=YFxtRBTKm7sZH/TgojR4OaW3QLGiUVM4btXIpedzLEML422BRxrEqCAQJlS9JWM2cF\n\t2cSmm5fpYLjLPkKD7C74W+GRktsJwExo1M4OClS+l6uMfQ2pJfCf0z3jiVJil+vf0H3P\n\tUVrdoTYdshL3mhNkwadjZG7L4fBNzBqB2biBKAbuqeDwOIMZCQPodp1Yp3chCcVBxC3M\n\tIPc1dsSU+/8x74YPQbVDCZUmRB1tez7lET/tpyoO5HLG87s1aWuL0zw+aTIG0QrtAdHT\n\tDrCp7lj2gHZj+9PzJcCNSRsBTbBFkwO5n+U+YP0RrLCykx6XxjobF76N2GCVtG9ndogf\n\thewA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to\n\t:references:mime-version:content-transfer-encoding;\n\tbh=VOcxqgmZYHyuIKjIobeXvj8xILb2SoPwm5E39kt8sck=;\n\tb=dXiRLz6pZIPaUUT7E1B0Bg6mas90cyICcytujcEP7fLqumZHCkfKH+XHno9L6SVKHh\n\tWos0ojMQwqok5r09fhWBxxiknTu3QLXvEiHTOhmceWyvEYWJBtzGnBL8xz4tpyg00Y+O\n\tElPc3ylcTR449pHWLiCR9y8HE9djuHB2/I17o/1nsRDw0yM2ECqsSuwRnf5PYD9AUN3e\n\twY3hitIwRALXt9eZvhjYbkTePQaIXjw6Emhdu82kkE5kuD9jqlRKquGR7RtwkPyssCw4\n\tBaPeaBLpBZ51cBXuqjJd1VqGiFkihEKHiRnIU3Gs0W8m5nVEDJ+wNtHkEvyCuSsDbboN\n\tYaMA==","X-Gm-Message-State":"AHPjjUhp/LVDXqAow1V5svAAiGpREjM6gj53YnY6xoobccFi/KamFa+S\n\tRjKBGN3UVXww0itl","X-Google-Smtp-Source":"ADKCNb50/cSppqygkHi9P+sQ1VDpvJJCjwpndhObLqy8Dqmbm9VjT1msok0OrBB8yH2BOMFFLArfgg==","X-Received":"by 10.98.86.135 with SMTP id h7mr5265672pfj.216.1504651895021;\n\tTue, 05 Sep 2017 15:51:35 -0700 (PDT)","Date":"Tue, 5 Sep 2017 15:51:27 -0700","From":"Stephen Hemminger <stephen@networkplumber.org>","To":"Petar Penkov <ppenkov@google.com>","Cc":"netdev@vger.kernel.org, Eric Dumazet <edumazet@google.com>,\n\tMahesh Bandewar <maheshb@google.com>,\n\tWillem de Bruijn <willemb@google.com>, davem@davemloft.net,\n\tppenkov@stanford.edu","Subject":"Re: [PATCH net-next RFC 1/2] tun: enable NAPI for TUN/TAP driver","Message-ID":"<20170905155127.0bd08fb0@xeon-e3>","In-Reply-To":"<20170905223551.27925-2-ppenkov@google.com>","References":"<20170905223551.27925-1-ppenkov@google.com>\n\t<20170905223551.27925-2-ppenkov@google.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=US-ASCII","Content-Transfer-Encoding":"7bit","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}},{"id":1763946,"web_url":"http://patchwork.ozlabs.org/comment/1763946/","msgid":"<CAF=yD-JTTmzf_r9uKQkjXNMwLrZx7NSWU3sBG3Kk=8B2ztU0zQ@mail.gmail.com>","list_archive_url":null,"date":"2017-09-06T09:18:58","subject":"Re: [PATCH net-next RFC 1/2] tun: enable NAPI for TUN/TAP driver","submitter":{"id":67615,"url":"http://patchwork.ozlabs.org/api/people/67615/","name":"Willem de Bruijn","email":"willemdebruijn.kernel@gmail.com"},"content":"On Wed, Sep 6, 2017 at 12:51 AM, Stephen Hemminger\n<stephen@networkplumber.org> wrote:\n> On Tue,  5 Sep 2017 15:35:50 -0700\n> Petar Penkov <ppenkov@google.com> wrote:\n>\n>> Changes TUN driver to use napi_gro_receive() upon receiving packets\n>> rather than netif_rx_ni(). Adds flag CONFIG_TUN_NAPI that enables\n>> these changes and operation is not affected if the flag is disabled.\n>> SKBs are constructed upon packet arrival and are queued to be\n>> processed later.\n>>\n>> The new path was evaluated with a benchmark with the following setup:\n>> Open two tap devices and a receiver thread that reads in a loop for\n>> each device. Start one sender thread and pin all threads to different\n>> CPUs. Send 1M minimum UDP packets to each device and measure sending\n>> time for each of the sending methods:\n>>       napi_gro_receive():     4.90s\n>>       netif_rx_ni():          4.90s\n>>       netif_receive_skb():    7.20s\n>>\n>> Signed-off-by: Petar Penkov <ppenkov@google.com>\n>> Cc: Eric Dumazet <edumazet@google.com>\n>> Cc: Mahesh Bandewar <maheshb@google.com>\n>> Cc: Willem de Bruijn <willemb@google.com>\n>> Cc: davem@davemloft.net\n>> Cc: ppenkov@stanford.edu\n>\n> Why is this optional? It adds two code paths both of which need\n> to be tested.\n\nIf the napi_gro_receive path is no more expensive than netif_receive_skb,\nas the evaluation indicates, then it is a good candidate to replace that.\n\nThe napi_gro_frags path is purely for code coverage. There is no benefit\nto applications to treat data copied from userspace as if it consists of raw\npages of data.","headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"K60n9Pk+\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xnJ2700MWz9sRV\n\tfor <patchwork-incoming@ozlabs.org>;\n\tWed,  6 Sep 2017 19:19:42 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752437AbdIFJTk (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tWed, 6 Sep 2017 05:19:40 -0400","from mail-oi0-f42.google.com ([209.85.218.42]:33180 \"EHLO\n\tmail-oi0-f42.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752406AbdIFJTj (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Wed, 6 Sep 2017 05:19:39 -0400","by mail-oi0-f42.google.com with SMTP id r20so9508856oie.0\n\tfor <netdev@vger.kernel.org>; Wed, 06 Sep 2017 02:19:39 -0700 (PDT)","by 10.168.52.10 with HTTP; Wed, 6 Sep 2017 02:18:58 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=mime-version:in-reply-to:references:from:date:message-id:subject:to\n\t:cc; bh=FpZHGRw4g1cQQ87V9YF8eyY83TNPqxktEekStwgJ3V0=;\n\tb=K60n9Pk+iyOqEyBlU3Z5Z7vIyg2U4O8u1vxkvY0TtdpLdxdmWRiCVLy+hPFi73SDgN\n\tqpynj3P+LY+RZSqgnzqV2w77iQ6s+2SahpTjgdzBfxqxwJ7+cSUdhQbgZGvB1BK4AVZR\n\tR3K8Ni8s7Zxo3jCo5bY4UsxXkpdic90fu2qubmiK8qoPmIhnPdbU7L/E3vvCdVGUIE7O\n\t4WrFktxChxAZgwNCZDXdAb6J/fkslTdFUtqh86cs3JVoR1z8HsTrd3cA9k03UdxHvvHN\n\tG9LXOGnzOiuP8s91dIwzov0yHCDlMGqIgg1RX9yu9wDfvs5S1IxaOXcHfVjwzEOZ42P9\n\twhWA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:in-reply-to:references:from:date\n\t:message-id:subject:to:cc;\n\tbh=FpZHGRw4g1cQQ87V9YF8eyY83TNPqxktEekStwgJ3V0=;\n\tb=FrN2csHBa1DeI4YFnf2oKc9pfaqedaO+emCkMIbFMLmeiDI3aNjO39UoQJm/nvmiHC\n\tS3W9D+NJ+t4FbkRlUz2oGNTdTJ+EghkSGDrFmWmOHSgHGQyHLl+uxabKGnqlDQTDvpKx\n\tgBqTn1FURcLO/u/lEgZ+wO39ZDmQ+DEalnWI7iV74UK7RNL6MMCKKgxUUB/BbXwZehFP\n\tNxL7q7Xbj9lo3aZvsogI74WF7tRzCPWb+mN7YIShyO0Z2pV5gyifhRp95+Rhmp1aELeB\n\ttMbbrRSoQuoKfrXY2mJPMiJvCngxcLAB72JYdIXG8BHeLEoBrbHd0Oiho4+Ae7b9ZrvO\n\tJTQQ==","X-Gm-Message-State":"AHPjjUjeH1LIEuGDXgBbxqo6Li+OUBwchmhsISVRGDWsyONdN+0bACyN\n\tCLCgFgLRE9AoSmnwzopV9sE9ZZrVCw==","X-Google-Smtp-Source":"ADKCNb65auJuchvIeNm04Rxtndt4Uoz3hbLlVrB27ABzQKobQAyJ+ZrHeFTJUyGLkXn7QySAvsKRqERXixxBjx/RFXE=","X-Received":"by 10.202.196.142 with SMTP id\n\tu136mr2169024oif.148.1504689578827; \n\tWed, 06 Sep 2017 02:19:38 -0700 (PDT)","MIME-Version":"1.0","In-Reply-To":"<20170905155127.0bd08fb0@xeon-e3>","References":"<20170905223551.27925-1-ppenkov@google.com>\n\t<20170905223551.27925-2-ppenkov@google.com>\n\t<20170905155127.0bd08fb0@xeon-e3>","From":"Willem de Bruijn <willemdebruijn.kernel@gmail.com>","Date":"Wed, 6 Sep 2017 11:18:58 +0200","Message-ID":"<CAF=yD-JTTmzf_r9uKQkjXNMwLrZx7NSWU3sBG3Kk=8B2ztU0zQ@mail.gmail.com>","Subject":"Re: [PATCH net-next RFC 1/2] tun: enable NAPI for TUN/TAP driver","To":"Stephen Hemminger <stephen@networkplumber.org>","Cc":"Petar Penkov <ppenkov@google.com>,\n\tNetwork Development <netdev@vger.kernel.org>,\n\tEric Dumazet <edumazet@google.com>, Mahesh Bandewar <maheshb@google.com>,\n\tWillem de Bruijn <willemb@google.com>,\n\tDavid Miller <davem@davemloft.net>, ppenkov@stanford.edu","Content-Type":"text/plain; charset=\"UTF-8\"","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"}}]