Show a cover letter.

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

{
    "id": 56780,
    "url": "http://patchwork.dpdk.org/api/covers/56780/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20190719133845.32432-1-olivier.matz@6wind.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": "<20190719133845.32432-1-olivier.matz@6wind.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190719133845.32432-1-olivier.matz@6wind.com",
    "date": "2019-07-19T13:38:41",
    "name": "[RFC,0/4] mempool: avoid objects allocations across pages",
    "submitter": {
        "id": 8,
        "url": "http://patchwork.dpdk.org/api/people/8/?format=api",
        "name": "Olivier Matz",
        "email": "olivier.matz@6wind.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20190719133845.32432-1-olivier.matz@6wind.com/mbox/",
    "series": [
        {
            "id": 5624,
            "url": "http://patchwork.dpdk.org/api/series/5624/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=5624",
            "date": "2019-07-19T13:38:41",
            "name": "mempool: avoid objects allocations across pages",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/5624/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/56780/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 78E3B322C;\n\tFri, 19 Jul 2019 15:39:00 +0200 (CEST)",
            "from proxy.6wind.com (host.76.145.23.62.rev.coltfrance.com\n\t[62.23.145.76]) by dpdk.org (Postfix) with ESMTP id BEF122BA8\n\tfor <dev@dpdk.org>; Fri, 19 Jul 2019 15:38:59 +0200 (CEST)",
            "from glumotte.dev.6wind.com. (unknown [10.16.0.195])\n\tby proxy.6wind.com (Postfix) with ESMTP id 92E712ED324;\n\tFri, 19 Jul 2019 15:38:59 +0200 (CEST)"
        ],
        "From": "Olivier Matz <olivier.matz@6wind.com>",
        "To": "Vamsi Krishna Attunuru <vattunuru@marvell.com>,\n\tdev@dpdk.org",
        "Cc": "Andrew Rybchenko <arybchenko@solarflare.com>,\n\tThomas Monjalon <thomas@monjalon.net>,\n\tAnatoly Burakov <anatoly.burakov@intel.com>,\n\tJerin Jacob Kollanukkaran <jerinj@marvell.com>,\n\tKokkilagadda <kirankumark@marvell.com>,\n\tFerruh Yigit <ferruh.yigit@intel.com>",
        "Date": "Fri, 19 Jul 2019 15:38:41 +0200",
        "Message-Id": "<20190719133845.32432-1-olivier.matz@6wind.com>",
        "X-Mailer": "git-send-email 2.11.0",
        "In-Reply-To": "<CH2PR18MB338160CD8EF16EEB45EED387A6C80@CH2PR18MB3381.namprd18.prod.outlook.com>",
        "References": "<CH2PR18MB338160CD8EF16EEB45EED387A6C80@CH2PR18MB3381.namprd18.prod.outlook.com>",
        "Subject": "[dpdk-dev] [RFC 0/4] mempool: avoid objects allocations across pages",
        "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": "When IOVA mode is VA, a mempool can be created with objects that\nare not physically contiguous, which breaks KNI.\n\nTo solve this, this patchset changes the default behavior of mempool\npopulate function, to prevent objects from being located across pages.\n\nOlivier Matz (4):\n  mempool: clarify default populate function\n  mempool: unalign size when calculating required mem amount\n  mempool: introduce function to get mempool page size\n  mempool: prevent objects from being across pages\n\n lib/librte_mempool/rte_mempool.c             | 106 +++++++++++----------------\n lib/librte_mempool/rte_mempool.h             |   8 +-\n lib/librte_mempool/rte_mempool_ops.c         |   4 +-\n lib/librte_mempool/rte_mempool_ops_default.c |  39 +++++++++-\n 4 files changed, 90 insertions(+), 67 deletions(-)\n\n---\n\nHi,\n\n> @Olivier,\n> Any suggestions..?\n\nI took some time to go a bit deeper. I still think we can change the\ndefault behavior to avoid objects to be located accross pages. But\nit is more complex that I expected.\n\nI made a draft patchset, that, in short:\n- cleans/renames variables\n- removes the optimistic full iova contiguous allocation\n- changes return value of calc_mem_size to return the unaligned size,\n  therefore the allocation is smaller in case of big hugepages\n- changes rte_mempool_op_populate_default() to prevent allocation\n  of objects accross multiple pages\n\nAndrew, Anatoly, did I miss something?\nVamsi, can you check if it solves your issue?\n\nAnyway, even if validate the patchset it and make it work, I'm afraid\nthis is not something that could go in 19.08.\n\nThe only alternative I see is a specific mempool allocation function\nwhen used in iova=va mode + kni, as you proposed previously.\n\nIt can probably be implemented without adding a flag, starting from\nrte_mempool_create(), and replacing rte_mempool_populate_default(mp) by\nsomething else: allocate pages one by one, and call\nrte_mempool_populate_iova() for each of them.\n\nHope it helps. Unfortunately, I may not have too much time to spend on\nit in the coming days.\n\nRegards,\nOlivier"
}