From patchwork Mon Apr 9 12:55:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Shreyansh Jain X-Patchwork-Id: 37657 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 96A881B807; Mon, 9 Apr 2018 14:40:19 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-ve1eur01on0054.outbound.protection.outlook.com [104.47.1.54]) by dpdk.org (Postfix) with ESMTP id BEADD1B7F5 for ; Mon, 9 Apr 2018 14:40:18 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=RtwL0aSmsu69p++qk4cYDsmGTioHrDdCzRgk1UjAyUA=; b=UOtSKWOQZXnBXVVH7HEoO7XAUZcpdL6lo299t8o2ar/AMSSke1qvQwlKInWHLIsNSZANFqEPnIhr/Vao5a8bC98ZCygcn/ip8EpIw6IFYgF6l9ewIJtCqIdVMyJ1jtPcTiKad4RsrcVp9frEKggwv7cPt3kzSEScu59KJSV1GTs= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=shreyansh.jain@nxp.com; Received: from [10.232.14.39] (14.142.187.166) by VI1PR0402MB2783.eurprd04.prod.outlook.com (2603:10a6:800:ad::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.653.12; Mon, 9 Apr 2018 12:40:12 +0000 To: Remy Horton , dev@dpdk.org Cc: John McNamara , Wenzhuo Lu , Jingjing Wu , Qi Zhang , Beilei Xing , Thomas Monjalon References: <20180406145002.27480-1-remy.horton@intel.com> <20180406145002.27480-5-remy.horton@intel.com> From: Shreyansh Jain Message-ID: Date: Mon, 9 Apr 2018 18:25:15 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.7.0 MIME-Version: 1.0 In-Reply-To: <20180406145002.27480-5-remy.horton@intel.com> Content-Language: en-US X-Originating-IP: [14.142.187.166] X-ClientProxiedBy: OSBPR01CA0011.jpnprd01.prod.outlook.com (2603:1096:603::23) To VI1PR0402MB2783.eurprd04.prod.outlook.com (2603:10a6:800:ad::13) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: b134d817-08db-4122-786a-08d59e170c16 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(48565401081)(5600026)(4604075)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0402MB2783; X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB2783; 3:dC3L7V6nGzM5uujMbbtedU962LXdzEIsFHdfQTvumBdjRAjVR+KictDBXrqWDQfWLRKEcFPSwsGSibKALcu/e9x5SzAOnqFkq8sZKHe6/Gkz4tVbLEaKfIhykHLT296NQhSvlk2WSF/tpehbBKEdieWRz7RgvTM7fDf0B/+0/ni/Fr/SV83twV/LnwQZCrn9SAyQI/h/tQvF4grl05bqx8mlqvnFg54mSdNJxviu4Nz51GqZkP43KSO+5imSJDKJ; 25:jeNOoRLNdbLTopnTtp9tgpcwRAN9JjxB7/Yp6sE3f2PvuNXfEfPPPMyQ98VJGSQPppMHcwhunr6rBipqHE63GjY7L0PVs+YwNYiOQaPmgS/ogsGBHvI4nQbiQTuIf3nWaFX79est9a0KyenrSy4wk2Y7W8lGPc6sJaWl9VrBeJ5XzCaNBuV7rcT5GaSbn1M9Rw5bhWxAAq51xbFcAHbAMxTATv28Jhve6ZSlADCfM9HyHDbPPZuUmdLTIUqoVnWDKHjYa+Us3DhI6ZqMlBfN/PHhXNsEo9Bop1BzJhwsFnLECAwJ7BqxzvSC53WfCuy/16V6iwZOxVuPgkBuv+ZkLw==; 31:JrkAdzMOqJTp3utmZIfoGwO5arhS/EuGIAgOKf5xhQXWffND6LqaZLEo0KvCcH4y5ZUllxJLRhMEC8niZ+8W5K+yPWC0CHzXXzpmbO6+oO0aPh/ob954h+AoQ62Xmwwn1ukbT7duGU9Edjqxgy62c9UXfkPya1+dzdrnb9mWD3ooRddUBHocpLgJBXW0+rD6kCH/SblITUge4xTmrJHbElT6vgsyait2PEBsZ85g/D0= X-MS-TrafficTypeDiagnostic: VI1PR0402MB2783: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB2783; 20:3/UFTIQdzb1FZ1GGgZWqcZ4gEq/BZp8MP6V1It8iseAAf/Cklj8vexQ8NPFDWcSyaDjGdw7WObQFEsj+aEJdgRL4cdnuKGve2gfQa4ruOnjkXh44f4QWfd/S7b81Jp9zx3YUZk2gD4ldnkvyJ2ijal1mlUyfWVmypFQa1C9Znq7hkt8J8l2W3ICeBe0cL0H4SaOnimX5zDFNnF8ZwjOJtIUVikr2hdQsO48iB8Ru0h1YPour/0j2CisiK2fLjPB4iwG4n/Ykp0y1DEfF9SlwjPhPcr4fM3wC3VYtFoihG7joSxa/vJGOUIQFCnRuREtJne1eb52T1Tvzk13igByaQVmc8I7YcKZ3+wohiri+vh6Po0ROroP7VI15QhwXvk2mYzJM0zA5pO7Dq4qELIvTDmc4eIDNAVU7A4zaDeImjEZg8geisD66WeQbU2LJapie/XHxEgwN8QsO/SlF6nQq7j8J1gavnvn/pKLNR2GQJxZ6bzpcOi+ZILBeqOk1peeT; 4:/OvIjjVdedCdQHidCXQ+lni8fyPutzCvtWPNBtL9TdNOKKuyxOJBZmt7wmEAVzy1P4ZGjtM8hYhBQ+VLfuKCGUQBstVh3O+Nw8HbP9tMc8Q37y1LjG3tmuBjQFS/LCZouuuEx/qEjYt+vaNYooKl4a4dyfaNik/4k8mZnS+H3s9DxLgwgqKPuuffOVQGlTtBae5bT6Zt3fUezwg/Pv9YQEgCtAXgEqJ9xpBXa2lUBL9rd5VJauiGAcJGmHLq4tmCsgjFEWHQV9yx6oXFtZ1asL9TX07eWhX0kcqvKzhzX/XpNTuSRXIMmiwqpdahmPMs X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(10201501046)(3002001)(3231221)(944501327)(52105095)(93006095)(93001095)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123558120)(20161123564045)(20161123560045)(6072148)(201708071742011); SRVR:VI1PR0402MB2783; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0402MB2783; X-Forefront-PRVS: 0637FCE711 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6029001)(6049001)(376002)(39380400002)(39860400002)(396003)(346002)(366004)(199004)(189003)(386003)(4326008)(6116002)(3846002)(6246003)(6486002)(64126003)(5009440100003)(230700001)(2906002)(229853002)(53936002)(67846002)(25786009)(58126008)(16576012)(956004)(2616005)(316002)(476003)(26005)(8936002)(486006)(8676002)(11346002)(81156014)(81166006)(16526019)(54906003)(36756003)(77096007)(186003)(446003)(2486003)(52146003)(23676004)(52116002)(76176011)(97736004)(68736007)(66066001)(65956001)(86362001)(575784001)(65806001)(31696002)(31686004)(55236004)(478600001)(105586002)(59450400001)(47776003)(7736002)(50466002)(106356001)(5660300001)(305945005)(65826007)(110426004); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0402MB2783; H:[10.232.14.39]; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1; Received-SPF: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BVI1PR0402MB2783=3B23=3ANe?= =?utf-8?q?J6Dyv6+ArXOf5K7SUl9K2BxxbOLDxtrXtukMa0UcxXsC0ozYt1crGzaP?= =?utf-8?q?IaqvXwZpapTFqB95BcI3VCt0oNDzm1z8IeHOTVj7QtKbWubZtiL+clnN?= =?utf-8?q?eru8Y2IA/Qd89V2KKLU7jawimOAyKs03xn0mhRKir3LU6HQPMsqH+zv0?= =?utf-8?q?gjydNmJylQFtLJ7ChtWoqDuNrWDpK6O3Vsp4VkBAjxZSMeykjk88SowR?= =?utf-8?q?iPuZT+9gI5ocTPyGq0GCppRu8yyCArkR/+JzIssIx2+qamInbT/HPIk3?= =?utf-8?q?1QBcoHmZ2KZfBvtPmUk8QL89V0nnjW2Owac/mTf5bUuVLOJfP86BWqED?= =?utf-8?q?0NrVlmB1/X5rblP6PvAzLr9rZH4wyqztX7/3YHakbPKAZiIrTkXo5Qup?= =?utf-8?q?aK4VC4l8dLUwx0H5dh46PoFDFXkKsad170QgCYdz1WStHX4ScOSEh2ZO?= =?utf-8?q?xPPzeWT5IndaG1IMm6cJvK3/xQ+uRZAJQXeo3MSTxFngj7BORTXc4bco?= =?utf-8?q?0Ci8BP+TbnsqMC/KcTkOsDSaqvGMN5QLMBRPBuKjXjk6NwHW8mTvNNi2?= =?utf-8?q?wkAlI2ljV6Ztr9Q4o5g73gnv+YnhK1QA0VUlptYv2cWv/8dxdIG+5ahI?= =?utf-8?q?kmVlrs9GR8n6h3A30fXJQM6j3rYjdQqsmpYCuGvDVvVhtH9d1hUTPYaY?= =?utf-8?q?lr3/48COf8/KgnnlzDRbRKDojGUWxduqvoF4s29Yk0xw5EPyj3rh1tyS?= =?utf-8?q?qiXbpp6IDKtYPBOt5+AHdDSJEN1JtmnImVWfjt87KoAxFISC21agl+QD?= =?utf-8?q?Ca4xe8iSFhdgn6IKv/qtWoliriZlm593HCnjh2quYanbRplLnobRtVUV?= =?utf-8?q?uzQ9+5BWY+flCITNyDahWfF6Aaw7cyC9v7ExUjSvBINpeJ6u5OYLEHAP?= =?utf-8?q?uw9/CsDTQSw9ZZaFlOZAn6aHczng374DW4apvRVm199YzhBPGh+1ruBb?= =?utf-8?q?SsiRLH7liof5Bt6v+cj/iuwgkkVa0bJ3JaH2wdLSkl7YpzIKedmBCAM0?= =?utf-8?q?u2L+/8FfvZgSfQHKG+eh0aTPA4v9LfUJz1rhOlgSiuYmiJrUgDKVHsEH?= =?utf-8?q?TLwRMI+mj8d3yCP8t+3iEU7GtCGoEQtfS4rBCvj6gIdT4rmSRaaSBY1x?= =?utf-8?q?5Pp/LlAQg8Z/T9cNDy84d5VyPKuPW3IJImtJi9r+p5hIau+HZT553XbZ?= =?utf-8?q?24PvlyUyR/cASeOu/wP/GmayhE7ZidE57qAmy96VmRprys5sTk4ZPyKt?= =?utf-8?q?OcDR5thBRhJWW+c4CVK0krt2yjZXIrKEgiu0VT+tyt4M3kbg8uDgQ/XD?= =?utf-8?q?zUgUwVvMOKtJU+zxjS0ohB4BgAAhspZgKBiDT08PVMujlALxpwnshl7N?= =?utf-8?q?Q5KJqKX4jJPTqe6MyQyDFSjniqu2pIYQVvIuyP2gKk+bHCclTnycIGzW?= =?utf-8?q?OkREI2XwqOI8C9noMOn7iO6VNWO2Y1W7r3qNPtpkwAojchJyaXvKvXIx?= =?utf-8?q?J5wA28l1vYv+zw9WI7/a9jFNGP/i1frzhPqZN0fkkB2cE4SKNTQsKqnT?= =?utf-8?q?I8egg0S0cejUVdToiLLa4D9NC3Wmx7mpP4KQSGEhFnSQ=3D=3D?= X-Microsoft-Antispam-Message-Info: DxHfEAFOKvwmF320a/5vaHqbdakfc0nzjytJOJs4NmL+mMsbXvVlgEiZOPP6KKY5wxs3CRPdOJBojQklyrm772i6b5UJF01t3b2qRfE1eRwNNAF1VmFZYLfIa8+83AvQg8Jo1BY/GIBb7DzsPqlie17WFTp1Df7NGy3WSwzVH9RDRo6xs5BbKksVHoVlQp3M X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB2783; 6:cAXfngaoLlEb5E07qJnaGbuCI322JszW2wDApwy2jZVMvgJapaUn2T9lDnkTUzND7A2UYJPR5T32jPbTMteyfqr2kYzEXjWRb64TT90I2iwiFWFPNJ6stRvrViR6qOf3OJGaY9jeHcBF2W4Zl33gb27ej5UmC4wJuOwkqIqkVjz18o4f57Y2wBzXdGfY1wK7oijyLsgzOvjJEIdGpVZUsqt6Bvd+bhchN9Q/MNRmRTjFWuB7M6J2htUDMopEmmP3gccst9EKyhF9RCQjvzvBJ+mJd3BQo4UvlVYNG/jvZJ+tVjsiMvjsBL0841J5zLyH4vd99WPs0QgA+oqK41vAeztBwZghDdQ7EMObGDDO1TW7Pp4FtJ1lT1hB6fMZZSAttOKoDFMhWse6QtO8ALiLQgVN1Gp0fhTyHq1/oHRz6S5KdjihsK0ZbSauZPP8rPZkfW+gRF2BydSCUA6oyRiw+w==; 5:J9SAWQ0K+V0b4Kl2wq5+/w2SYwmb2x6BO6Q9Pqlr4VNFterUcbcTTLXRDC48XHV37DeWFjIbremlZy1U3kxKxbs1fmKokSme/5ZidK4nxTLGXSxX4kLSD5TBmka8CCoT8ZbmGFOxskL0AQMt8jQ8gYW+t7WX3gDMyFcHozwEEtk=; 24:iuoiMjI0kvOikDYIZBVIGA9ZUt65ogexkJZ55BrdHF0oTOp1dqYXp3Yvl1zg/C82yPZ5SwuzqLddXTKW/Iiyitvn2EHdqnzb+YJLwmgbiRY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; VI1PR0402MB2783; 7:j2G60PSLE2vcnUFLvdr3BIdoTqiPSA28lLJKmXaCD3Lfg84WMthU4MiVwpfWWvX8zfxj/aHC9hfe7Hsk/MHaqNdMJkey2QNiDFHphP8sEE26chuM3Uke0zYoC2rek2RDRNFmG5yOqFyM4X4oCzDgVD+lugg4Iy8VUBKEt4xfWSTZ2Hi+iPrbCNmqAwl3psxb9qJj6UBcX8GBz1r+y3G0OgS0L0fbr8rI3dNEu3sIl6onKCahxM20n37cVx2oU9r4 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Apr 2018 12:40:12.3122 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b134d817-08db-4122-786a-08d59e170c16 X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0402MB2783 Subject: Re: [dpdk-dev] [PATCH v5 4/4] testpmd: make use of per-PMD TxRx parameters X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Friday 06 April 2018 08:20 PM, Remy Horton wrote: > The optimal values of several transmission & reception related > parameters, such as burst sizes, descriptor ring sizes, and number > of queues, varies between different network interface devices. This > patch allows testpmd to make use of per-PMD tuned parameter values. > > Signed-off-by: Remy Horton > --- > app/test-pmd/cmdline.c | 31 ++++++++++++++++++++++++++++--- > app/test-pmd/parameters.c | 38 +++++++++++++++++++++++++++++++++----- > app/test-pmd/testpmd.c | 5 +++-- > 3 files changed, 64 insertions(+), 10 deletions(-) > > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c > index 40b31ad..0914425 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -2599,6 +2599,8 @@ cmd_config_burst_parsed(void *parsed_result, > __attribute__((unused)) void *data) > { > struct cmd_config_burst *res = parsed_result; > + struct rte_eth_dev_info dev_info; > + uint16_t rec_nb_pkts; > > if (!all_ports_stopped()) { > printf("Please stop all ports first\n"); > @@ -2606,11 +2608,34 @@ cmd_config_burst_parsed(void *parsed_result, > } > > if (!strcmp(res->name, "burst")) { > - if (res->value < 1 || res->value > MAX_PKT_BURST) { > + if (res->value == 0) { Documentation for burst mode changes to testpmd would need an update. I guess, only when the user explicitly sets 'set burst 0' would the driver defaults be picked up - isn't it? Maybe something like this: --->8--- In the above, I think the existing documented default value needs to be changed. It is set to '#define DEF_PKT_BURST 32' If you add that, please use my ack for next revision. (For patch 1/4, I had already given my Ack in v2) > + /* If user gives a value of zero, query the PMD for > + * its recommended Rx burst size. Testpmd uses a single > + * size for all ports, so assume all ports are the same > + * NIC model and use the values from Port 0. > + */ > + rte_eth_dev_info_get(0, &dev_info); > + rec_nb_pkts = dev_info.default_rxportconf.burst_size; > + > + if (rec_nb_pkts == 0) { > + printf("PMD does not recommend a burst size.\n" > + "User provided value must be between" > + " 1 and %d\n", MAX_PKT_BURST); > + return; > + } else if (rec_nb_pkts > MAX_PKT_BURST) { > + printf("PMD recommended burst size of %d" > + " exceeds maximum value of %d\n", > + rec_nb_pkts, MAX_PKT_BURST); > + return; > + } > + printf("Using PMD-provided burst value of %d\n", > + rec_nb_pkts); > + nb_pkt_per_burst = rec_nb_pkts; > + } else if (res->value > MAX_PKT_BURST) { > printf("burst must be >= 1 && <= %d\n", MAX_PKT_BURST); > return; > - } > - nb_pkt_per_burst = res->value; > + } else > + nb_pkt_per_burst = res->value; > } else { > printf("Unknown parameter\n"); > return; > diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c > index 2192bdc..cb6a229 100644 > --- a/app/test-pmd/parameters.c > +++ b/app/test-pmd/parameters.c > @@ -544,6 +544,8 @@ launch_args_parse(int argc, char** argv) > /* Default offloads for all ports. */ > uint64_t rx_offloads = rx_mode.offloads; > uint64_t tx_offloads = tx_mode.offloads; > + struct rte_eth_dev_info dev_info; > + uint16_t rec_nb_pkts; > > static struct option lgopts[] = { > { "help", 0, 0, 0 }, > @@ -947,12 +949,38 @@ launch_args_parse(int argc, char** argv) > } > if (!strcmp(lgopts[opt_idx].name, "burst")) { > n = atoi(optarg); > - if ((n >= 1) && (n <= MAX_PKT_BURST)) > - nb_pkt_per_burst = (uint16_t) n; > - else > + if (n == 0) { > + /* A burst size of zero means that the > + * PMD should be queried for > + * recommended Rx burst size. Since > + * testpmd uses a single size for all > + * ports, port 0 is queried for the > + * value, on the assumption that all > + * ports are of the same NIC model. > + */ > + rte_eth_dev_info_get(0, &dev_info); > + rec_nb_pkts = dev_info > + .default_rxportconf.burst_size; > + > + if (rec_nb_pkts == 0) > + rte_exit(EXIT_FAILURE, > + "PMD does not recommend a burst size. " > + "Provided value must be between " > + "1 and %d\n", MAX_PKT_BURST); > + else if (rec_nb_pkts > MAX_PKT_BURST) > + rte_exit(EXIT_FAILURE, > + "PMD recommended burst size of %d" > + " exceeds maximum value of %d\n", > + rec_nb_pkts, MAX_PKT_BURST); > + printf("Using PMD-provided burst value of %d\n", > + rec_nb_pkts); > + nb_pkt_per_burst = rec_nb_pkts; > + } else if (n > MAX_PKT_BURST) > rte_exit(EXIT_FAILURE, > - "burst must >= 1 and <= %d]", > - MAX_PKT_BURST); > + "burst must be between1 and %d\n", > + MAX_PKT_BURST); > + else > + nb_pkt_per_burst = (uint16_t) n; > } > if (!strcmp(lgopts[opt_idx].name, "mbcache")) { > n = atoi(optarg); > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c > index 4c0e258..82eb197 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -210,9 +210,10 @@ queueid_t nb_txq = 1; /**< Number of TX queues per port. */ > > /* > * Configurable number of RX/TX ring descriptors. > + * Defaults are supplied by drivers via ethdev. > */ > -#define RTE_TEST_RX_DESC_DEFAULT 1024 > -#define RTE_TEST_TX_DESC_DEFAULT 1024 > +#define RTE_TEST_RX_DESC_DEFAULT 0 > +#define RTE_TEST_TX_DESC_DEFAULT 0 > uint16_t nb_rxd = RTE_TEST_RX_DESC_DEFAULT; /**< Number of RX descriptors. */ > uint16_t nb_txd = RTE_TEST_TX_DESC_DEFAULT; /**< Number of TX descriptors. */ > > --- a/doc/guides/testpmd_app_ug/run_app.rst +++ b/doc/guides/testpmd_app_ug/run_app.rst @@ -372,7 +372,9 @@ The commandline options are: * ``--burst=N`` Set the number of packets per burst to N, where 1 <= N <= 512. - The default value is 16. + The default value is 32. + If set to 0, driver default is used if defined. Else, if driver default + is not defined, default of 32 is used. * ``--mbcache=N`` --->8---