Show a cover letter.

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

{
    "id": 58609,
    "url": "http://patchwork.dpdk.org/api/covers/58609/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20190905161421.55981-1-yong.liu@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20190905161421.55981-1-yong.liu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190905161421.55981-1-yong.liu@intel.com",
    "date": "2019-09-05T16:14:07",
    "name": "[v1,00/14] vhost packed ring performance optimization",
    "submitter": {
        "id": 17,
        "url": "http://patchwork.dpdk.org/api/people/17/?format=api",
        "name": "Marvin Liu",
        "email": "yong.liu@intel.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20190905161421.55981-1-yong.liu@intel.com/mbox/",
    "series": [
        {
            "id": 6248,
            "url": "http://patchwork.dpdk.org/api/series/6248/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=6248",
            "date": "2019-09-05T16:14:07",
            "name": "vhost packed ring performance optimization",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/6248/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/58609/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 8D1241ED83;\n\tThu,  5 Sep 2019 10:34:34 +0200 (CEST)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby dpdk.org (Postfix) with ESMTP id 3FAF51ED83\n\tfor <dev@dpdk.org>; Thu,  5 Sep 2019 10:34:33 +0200 (CEST)",
            "from fmsmga006.fm.intel.com ([10.253.24.20])\n\tby orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t05 Sep 2019 01:34:31 -0700",
            "from npg-dpdk-virtual-marvin-dev.sh.intel.com ([10.67.119.142])\n\tby fmsmga006.fm.intel.com with ESMTP; 05 Sep 2019 01:34:30 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.64,470,1559545200\"; d=\"scan'208\";a=\"383781484\"",
        "From": "Marvin Liu <yong.liu@intel.com>",
        "To": "tiwei.bie@intel.com,\n\tmaxime.coquelin@redhat.com,\n\tdev@dpdk.org",
        "Cc": "Marvin Liu <yong.liu@intel.com>",
        "Date": "Fri,  6 Sep 2019 00:14:07 +0800",
        "Message-Id": "<20190905161421.55981-1-yong.liu@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "Subject": "[dpdk-dev] [PATCH v1 00/14] vhost packed ring performance\n\toptimization",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Packed ring has more compact ring format and thus can significantly\nreduce the number of cache miss. It can lead to better performance.\nThis has been approved in virtio user driver, on normal E5 Xeon cpu\nsingle core performance can raise 12%.\n\nhttp://mails.dpdk.org/archives/dev/2018-April/095470.html\n\nHowever vhost performance with packed ring performance was decreased.\nThrough analysis, mostly extra cost was from the calculating of each\ndescriptor flag which depended on ring wrap counter. Moreover, both\nfrontend and backend need to write same descriptors which will cause\ncache contention. Especially when doing vhost enqueue function, virtio\nrefill packed ring function may write same cache line when vhost doing\nenqueue function. This kind of extra cache cost will reduce the benefit\nof reducing cache misses. \n\nFor optimizing vhost packed ring performance, vhost enqueue and dequeue\nfunction will be splitted into fast and normal path.\n\nSeveral methods will be taken in fast path:\n  Uroll burst loop function into more pieces.\n  Handle descriptors in one cache line simultaneously.\n  Prerequisite check that whether I/O space can copy directly into mbuf\n    space and vice versa. \n  Prerequisite check that whether descriptor mapping is successful.\n  Distinguish vhost descriptor update function by enqueue and dequeue\n    function.\n  Buffer dequeue used descriptors as many as possible.\n  Update enqueue used descriptors by cache line.\n  Cache memory region structure for fast conversion.\n  Disable sofware prefetch is hardware can do better.\n\nAfter all these methods done, single core vhost PvP performance with 64B\npacket on Xeon 8180 can boost 40%.\n\nMarvin Liu (14):\n  vhost: add single packet enqueue function\n  vhost: add burst enqueue function for packed ring\n  vhost: add single packet dequeue function\n  vhost: add burst dequeue function\n  vhost: rename flush shadow used ring functions\n  vhost: flush vhost enqueue shadow ring by burst\n  vhost: add flush function for burst enqueue\n  vhost: buffer vhost dequeue shadow ring\n  vhost: split enqueue and dequeue flush functions\n  vhost: optimize Rx function of packed ring\n  vhost: add burst and single zero dequeue functions\n  vhost: optimize Tx function of packed ring\n  vhost: cache address translation result\n  vhost: check whether disable software pre-fetch\n\n lib/librte_vhost/Makefile     |    6 +\n lib/librte_vhost/rte_vhost.h  |   27 +\n lib/librte_vhost/vhost.h      |   13 +\n lib/librte_vhost/virtio_net.c | 1094 +++++++++++++++++++++++++++------\n 4 files changed, 944 insertions(+), 196 deletions(-)"
}