Show a cover letter.

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

{
    "id": 40986,
    "url": "http://patchwork.dpdk.org/api/covers/40986/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/cover.1528749451.git.anatoly.burakov@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": "<cover.1528749451.git.anatoly.burakov@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/cover.1528749451.git.anatoly.burakov@intel.com",
    "date": "2018-06-11T20:55:33",
    "name": "[0/9] mem: reduce memory fragmentation",
    "submitter": {
        "id": 4,
        "url": "http://patchwork.dpdk.org/api/people/4/?format=api",
        "name": "Anatoly Burakov",
        "email": "anatoly.burakov@intel.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/cover.1528749451.git.anatoly.burakov@intel.com/mbox/",
    "series": [
        {
            "id": 85,
            "url": "http://patchwork.dpdk.org/api/series/85/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=85",
            "date": "2018-06-11T20:55:33",
            "name": "mem: reduce memory fragmentation",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/85/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/40986/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 986291DB65;\n\tMon, 11 Jun 2018 22:55:47 +0200 (CEST)",
            "from mga12.intel.com (mga12.intel.com [192.55.52.136])\n\tby dpdk.org (Postfix) with ESMTP id 401D71D940\n\tfor <dev@dpdk.org>; Mon, 11 Jun 2018 22:55:45 +0200 (CEST)",
            "from orsmga002.jf.intel.com ([10.7.209.21])\n\tby fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t11 Jun 2018 13:55:44 -0700",
            "from irvmail001.ir.intel.com ([163.33.26.43])\n\tby orsmga002.jf.intel.com with ESMTP; 11 Jun 2018 13:55:43 -0700",
            "from sivswdev01.ir.intel.com (sivswdev01.ir.intel.com\n\t[10.237.217.45])\n\tby irvmail001.ir.intel.com (8.14.3/8.13.6/MailSET/Hub) with ESMTP id\n\tw5BKtgke026365 for <dev@dpdk.org>; Mon, 11 Jun 2018 21:55:42 +0100",
            "from sivswdev01.ir.intel.com (localhost [127.0.0.1])\n\tby sivswdev01.ir.intel.com with ESMTP id w5BKtgkv021555\n\tfor <dev@dpdk.org>; Mon, 11 Jun 2018 21:55:42 +0100",
            "(from aburakov@localhost)\n\tby sivswdev01.ir.intel.com with LOCAL id w5BKtgRs021548\n\tfor dev@dpdk.org; Mon, 11 Jun 2018 21:55:42 +0100"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.51,211,1526367600\"; d=\"scan'208\";a=\"66165832\"",
        "From": "Anatoly Burakov <anatoly.burakov@intel.com>",
        "To": "dev@dpdk.org",
        "Date": "Mon, 11 Jun 2018 21:55:33 +0100",
        "Message-Id": "<cover.1528749451.git.anatoly.burakov@intel.com>",
        "X-Mailer": "git-send-email 1.7.0.7",
        "Subject": "[dpdk-dev] [PATCH 0/9] mem: reduce memory fragmentation",
        "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://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patchset is mostly dealing with changes fbarray, but it is\nactually about reducing fragmentation in Linuxapp memalloc.\n\nWe allocate hugepages from lower VA to higher VA. However, our\nmalloc heap allocates addresses from higher VA to lower VA. This\nresults in a situation where, whenever new page is allocated,\nmalloc starts to allocate memory from the top, leaving fragmented\nspace between new allocation's leftover and previous leftover.\n\nOver time, this leads to lots of free elements sitting at page\nboundaries, small enough to be useful but large enough to have an\nimpact on memory fragmentation in certain circumstances.\n\nTo fix this, we need to allocate memory from higher VA first.\nHowever, in order to do that, we need the ability to search fbarray\nin reverse, which is currently not supported. Adding this support is\nwhat most of this patchset is about.\n\nFirst 4 patches fix some issues in existing fbarray implementation\nand remove some code duplication, preparing for adding of new\nfunctionality.\n\nNext 3 patches add new functionality - reverse search of used/free\nslots, mirroring already existing functionality in semantics and\ncapable of returning identical results but in reverse order.\n\nPatch 8 adds unit tests for fbarray, testing both existing and new\nfunctionality.\n\nFinally, patch 9 changes memalloc to look up free slots in memseg\nlist in reverse order. No other changes is necessary, as all other\ncode can handle segments, wherever they are allocated.\n\nAnatoly Burakov (9):\n  fbarray: fix errno values returned from functions\n  fbarray: reduce duplication in find_contig code\n  fbarray: reduce duplication in find_next_n code\n  fbarray: reduce duplication in find_next code\n  fbarray: add reverse find_free/used\n  fbarray: add reverse find n used/free\n  fbarray: add reverse find contig used/free\n  test: add fbarray autotests\n  memalloc: allocate memory in reverse\n\n lib/librte_eal/common/eal_common_fbarray.c  | 493 ++++++++++++++---\n lib/librte_eal/common/include/rte_fbarray.h | 114 ++++\n lib/librte_eal/linuxapp/eal/eal_memalloc.c  |   3 +-\n lib/librte_eal/rte_eal_version.map          |   6 +\n test/test/Makefile                          |   1 +\n test/test/test_fbarray.c                    | 576 ++++++++++++++++++++\n 6 files changed, 1119 insertions(+), 74 deletions(-)\n create mode 100644 test/test/test_fbarray.c"
}