Show a cover letter.

GET /api/covers/88132/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 88132,
    "url": "https://patches.dpdk.org/api/covers/88132/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/20210224111852.11947-1-ciara.loftus@intel.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20210224111852.11947-1-ciara.loftus@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210224111852.11947-1-ciara.loftus@intel.com",
    "date": "2021-02-24T11:18:49",
    "name": "[0/3] AF_XDP Preferred Busy Polling",
    "submitter": {
        "id": 144,
        "url": "https://patches.dpdk.org/api/people/144/?format=api",
        "name": "Loftus, Ciara",
        "email": "ciara.loftus@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/cover/20210224111852.11947-1-ciara.loftus@intel.com/mbox/",
    "series": [
        {
            "id": 15360,
            "url": "https://patches.dpdk.org/api/series/15360/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=15360",
            "date": "2021-02-24T11:18:49",
            "name": "AF_XDP Preferred Busy Polling",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/15360/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/88132/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id E6357A034F;\n\tWed, 24 Feb 2021 12:49:05 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8AB254069B;\n\tWed, 24 Feb 2021 12:49:05 +0100 (CET)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n by mails.dpdk.org (Postfix) with ESMTP id 8FB9840042\n for <dev@dpdk.org>; Wed, 24 Feb 2021 12:49:03 +0100 (CET)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Feb 2021 03:49:02 -0800",
            "from silpixa00399839.ir.intel.com (HELO localhost.localdomain)\n ([10.237.222.142])\n by orsmga004.jf.intel.com with ESMTP; 24 Feb 2021 03:49:01 -0800"
        ],
        "IronPort-SDR": [
            "\n RpzaE05AQFXopFGcIS3T3wdx8x94b8dcGcRdBZVCRR1mnzKDUZkE6RfZhVg7pXwF4tD8AUqhaE\n 788iXBOfvwVA==",
            "\n 7T4oVMf9SNCNmnGdclVMfRTVNJNBEzwsvgJVunYdEBpeELM4wEYKDLtwiNSzeHuo7CJo0NT/1Z\n 4B6sF+vzfAgg=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6000,8403,9904\"; a=\"164359728\"",
            "E=Sophos;i=\"5.81,202,1610438400\"; d=\"scan'208\";a=\"164359728\"",
            "E=Sophos;i=\"5.81,202,1610438400\"; d=\"scan'208\";a=\"515592042\""
        ],
        "X-ExtLoop1": "1",
        "From": "Ciara Loftus <ciara.loftus@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Ciara Loftus <ciara.loftus@intel.com>",
        "Date": "Wed, 24 Feb 2021 11:18:49 +0000",
        "Message-Id": "<20210224111852.11947-1-ciara.loftus@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20210218092307.29575-1-ciara.loftus@intel.com>",
        "References": "<20210218092307.29575-1-ciara.loftus@intel.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"utf-8\"",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH 0/3] AF_XDP Preferred Busy Polling",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Single-core performance of AF_XDP at high loads can be poor because\na heavily loaded NAPI context will never enter or allow for busy-polling.\n\n1C testpmd rxonly (both IRQs and PMD on core 0):\n./dpdk-testpmd -l 0-1 --vdev=net_af_xdp0,iface=eth0 --main-lcore=1 -- \\\n--forward-mode=rxonly\n0.088Mpps\n\nIn order to achieve decent performance at high loads, it is currently\nrecommended ensure the IRQs for the netdev queue and the core running\nthe PMD are different.\n\n2C testpmd rxonly (IRQs on core 0, PMD on core 1):\n./dpdk-testpmd -l 0-1 --vdev=net_af_xdp0,iface=eth0 --main-lcore=0 -- \\\n--forward-mode=rxonly\n19.26Mpps\n\nHowever using an extra core is of course not ideal. The SO_PREFER_BUSY_POLL\nsocket option was introduced in kernel v5.11 to help improve 1C performance.\nSee [1].\n\nThis series sets this socket option on xsks created with DPDK (ie. instances of\nthe AF_XDP PMD) unless explicitly disabled or not supported by the kernel. It\nwas chosen to be enabled by default in order to bring the AF_XDP PMD in line\nwith most other PMDs which execute on a single core.\n\nThe following system and netdev settings are recommended in conjunction with\nbusy polling:\necho 2 | sudo tee /sys/class/net/eth0/napi_defer_hard_irqs\necho 200000 | sudo tee /sys/class/net/eth0/gro_flush_timeout\n\nRe-running the 1C test with busy polling support and the above settings:\n./dpdk-testpmd -l 0-1 --vdev=net_af_xdp0,iface=eth0 --main-lcore=1 -- \\\n--forward-mode=rxonly\n10.45Mpps\n\nA new vdev arg is introduced called 'busy_budget' whose default value is 64.\nbusy_budget is the value supplied to the kernel with the SO_BUSY_POLL_BUDGET\nsocket option and represents the busy-polling NAPI budget ie. the number of\npackets the kernel will attempt to process in the netdev's NAPI context.\n\nTo set the busy budget to 256:\n./dpdk-testpmd --vdev=net_af_xdp0,iface=eth0,busy_budget=256\n14.06Mpps\n\nIf you still wish to run using 2 cores (one for PMD once for IRQs) it is\nrecommended to disable busy polling to achieve optimal 2C performance:\n./dpdk-testpmd --vdev=net_af_xdp0,iface=eth0,busy_budget=0\n19.09Mpps\n\nRFC->v1:\n* Fixed behaviour of busy_budget=0\n* Ensure we bail out if any of the new setsockopts fail\n\n[1] https://lwn.net/Articles/837010/\n\nCiara Loftus (3):\n  net/af_xdp: Increase max batch size to 512\n  net/af_xdp: Use recvfrom() instead of poll()\n  net/af_xdp: preferred busy polling\n\n doc/guides/nics/af_xdp.rst          |  38 ++++++++++-\n drivers/net/af_xdp/compat.h         |  13 ++++\n drivers/net/af_xdp/rte_eth_af_xdp.c | 100 ++++++++++++++++++++++------\n 3 files changed, 129 insertions(+), 22 deletions(-)"
}