From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1DC2342D54; Mon, 26 Jun 2023 07:41:44 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E9A934067B; Mon, 26 Jun 2023 07:41:43 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id A08F240223 for ; Mon, 26 Jun 2023 07:41:42 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 35PLToP7024244; Sun, 25 Jun 2023 22:41:41 -0700 Received: from nam10-bn7-obe.outbound.protection.outlook.com (mail-bn7nam10lp2108.outbound.protection.outlook.com [104.47.70.108]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3rdwunmf1w-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Sun, 25 Jun 2023 22:41:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OB9eiQfbzfJSRBGUSCG8c3DdvPjEMXCAcsIQjLMnKqTrcc0URXMHSui/sz49eeScOp97EfbCTvhLzwYXbozy4kxKrA1zGeARwC+QcGC1TEu3IgqlsDQTO/v2CtogCUwLJ+l7P+UtCfYcWKdG8oNfKyR2FwZF1xmbYyfoLP5Mg4hTlBQNhCYy1CP1zYHJFoB+XU9BKcRuvehvl91tN53Hl/MgYk0KCAcYDWqz23C3ZDqS7k4Cxj9l9BfduHN5SkL7f3YCYpaXFTGTmgv/75aIveknKhjbDQeSNv4A6r+06ZS+RvVDpm1xCo3hHDM8x9oCbEL1D6eV50otFs2R/Zo36g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=3OuWKZJpWj9EndP7AXFda6UQPf9KecsZ12CELS7NNWU=; b=TeqvIJ7D5RspYP1qlXQoOWOCLw0ZEXfFt+46sCK3rF5IrBjA/+p+5UPiwnDncxtCvTNitawHkAIhIDhaejOdYKxbUjHHtZ2wfCy9Va/hZjRZZAPv7juA9zYwhMcVnppydkeEhhbWk0HrMFEBPC18gqh5yu+U0P1BtHJg+JSDmfIDPao+nRL7RQ4sYD15xafmXmOvMG9V9+c2xSkYcRTgR7ZU7Kc1ZJxI6bmrAM2iRe51cxA4BdpA/S1h9vp0Fps86+1xmZ+Rzob38PmOzzKdMotY33LrzCwPmNsG0/PKF9bDeScEKiK2Zjlh9ZG5kr+yxLnAioDP3A8KBr0ID3DQoQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3OuWKZJpWj9EndP7AXFda6UQPf9KecsZ12CELS7NNWU=; b=dvV9kFUbnDJtghnySmPe5jRLKjYv/678+Nu76BXrsamGk+1eZre59OY+LBIUZXYOm6bxBmLh+4Opgzk9Kdv0elY8O0d6w2cX72P47OFnQuWJCQEg++AvxxhlxnvHE0D7m5q/3OCvTApcqwyqf5vM84gwLXqJ2OfkryHgE5aXGsA= Received: from PH0PR18MB4672.namprd18.prod.outlook.com (2603:10b6:510:c9::16) by MN2PR18MB3477.namprd18.prod.outlook.com (2603:10b6:208:262::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6521.24; Mon, 26 Jun 2023 05:41:38 +0000 Received: from PH0PR18MB4672.namprd18.prod.outlook.com ([fe80::d578:1759:9d2c:9dfa]) by PH0PR18MB4672.namprd18.prod.outlook.com ([fe80::d578:1759:9d2c:9dfa%4]) with mapi id 15.20.6521.024; Mon, 26 Jun 2023 05:41:38 +0000 From: Anoob Joseph To: "Jiang, Cheng1" , "thomas@monjalon.net" , "Richardson, Bruce" , "mb@smartsharesystems.com" , "Xia, Chenbo" , Amit Prakash Shukla , "huangdengdui@huawei.com" , "Laatz, Kevin" , "fengchengwen@huawei.com" , Jerin Jacob Kollanukkaran CC: "dev@dpdk.org" , "Hu, Jiayu" , "Ding, Xuan" , "Ma, WenwuX" , "Wang, YuanX" , "He, Xingguang" , "Ling, WeiX" Subject: RE: [EXT] [PATCH v8] app/dma-perf: introduce dma-perf application Thread-Topic: [EXT] [PATCH v8] app/dma-perf: introduce dma-perf application Thread-Index: AQHZo0kK9e4mg8WiCkmsK29LgzaaEq+Tz2ewgAYOwACAArsjsA== Date: Mon, 26 Jun 2023 05:41:38 +0000 Message-ID: References: <20230420072215.19069-1-cheng1.jiang@intel.com> <20230620065330.9999-1-cheng1.jiang@intel.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-dg-rorf: true x-dg-ref: =?iso-8859-1?Q?PG1ldGE+PGF0IG5tPSJib2R5LnR4dCIgcD0iYzpcdXNlcnNcYW5vb2JqXG?= =?iso-8859-1?Q?FwcGRhdGFccm9hbWluZ1wwOWQ4NDliNi0zMmQzLTRhNDAtODVlZS02Yjg0?= =?iso-8859-1?Q?YmEyOWUzNWJcbXNnc1xtc2ctMWJkMGUzMmEtMTNlNC0xMWVlLTljNTQtNG?= =?iso-8859-1?Q?MwMzRmNWY5YjRmXGFtZS10ZXN0XDFiZDBlMzJjLTEzZTQtMTFlZS05YzU0?= =?iso-8859-1?Q?LTRjMDM0ZjVmOWI0ZmJvZHkudHh0IiBzej0iMTAwNTUiIHQ9IjEzMzMyMj?= =?iso-8859-1?Q?MxNjk0NTU3NTI5OSIgaD0ieU13ZFBWOTE3eWhmZTdaeEFpU3M0a0hGT3Mw?= =?iso-8859-1?Q?PSIgaWQ9IiIgYmw9IjAiIGJvPSIxIiBjaT0iY0FBQUFFUkhVMVJTUlVGTk?= =?iso-8859-1?Q?NnVUFBTjRQQUFDRFRTemU4S2ZaQWZIaTRTOFB4SFovOGVMaEx3L0Vkbjha?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUhBQUFBQnVEd0FBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUVBQVFFQkFBQUFJN3FUcEFDQUFRQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFKNEFBQUJoQUdRQVpBQnlBR1VBY3dCekFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQU?= =?iso-8859-1?Q?FHTUFkUUJ6QUhRQWJ3QnRBRjhBY0FCbEFISUFjd0J2QUc0QUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFBQ2VBQUFBWXdCMUFI?= =?iso-8859-1?Q?TUFkQUJ2QUcwQVh3QndBR2dBYndCdUFHVUFiZ0IxQUcwQVlnQmxBSElBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQmpBSFVBY3dCMEFHOE?= =?iso-8859-1?Q?FiUUJmQUhNQWN3QnVBRjhBWkFCaEFITUFhQUJmQUhZQU1BQXlBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-refone: =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0?= =?iso-8859-1?Q?FBQUdNQWRRQnpBSFFBYndCdEFGOEFjd0J6QUc0QVh3QnJBR1VBZVFCM0FH?= =?iso-8859-1?Q?OEFjZ0JrQUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFZd0Ix?= =?iso-8859-1?Q?QUhNQWRBQnZBRzBBWHdCekFITUFiZ0JmQUc0QWJ3QmtBR1VBYkFCcEFHME?= =?iso-8859-1?Q?FhUUIwQUdVQWNnQmZBSFlBTUFBeUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQkFBQUFBQUFBQUFJQUFBQUFBSjRBQUFCakFIVUFjd0IwQU?= =?iso-8859-1?Q?c4QWJRQmZBSE1BY3dCdUFGOEFjd0J3QUdFQVl3QmxBRjhBZGdBd0FESUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUVBQUFBQUFBQUFBZ0FBQUFBQW5nQUFBR1FBYkFCd0FGOEFjd0JyQUhr?= =?iso-8859-1?Q?QWNBQmxBRjhBWXdCb0FHRUFkQUJmQUcwQVpRQnpBSE1BWVFCbkFHVUFYd0?= =?iso-8859-1?Q?IyQURBQU1nQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFB?= =?iso-8859-1?Q?QUFBQUFBQ0FBQUFBQUNlQUFBQVpBQnNBSEFBWHdCekFHd0FZUUJqQUdzQV?= =?iso-8859-1?Q?h3QmpBR2dBWVFCMEFGOEFiUUJsQUhNQWN3QmhBR2NBWlFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reftwo: =?iso-8859-1?Q?QUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJrQUd3QWNBQm?= =?iso-8859-1?Q?ZBSFFBWlFCaEFHMEFjd0JmQUc4QWJnQmxBR1FBY2dCcEFIWUFaUUJmQUdZ?= =?iso-8859-1?Q?QWFRQnNBR1VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHVUFiUUJoQUdrQWJBQmZB?= =?iso-8859-1?Q?R0VBWkFCa0FISUFaUUJ6QUhNQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQQUFBQUFBQUFBQUFBQUFBQVFB?= =?iso-8859-1?Q?QUFBQUFBQUFDQUFBQUFBQ2VBQUFBYlFCaEFISUFkZ0JsQUd3QVh3QndBSE?= =?iso-8859-1?Q?lBYndCcUFHVUFZd0IwQUY4QWJnQmhBRzBBWlFCekFGOEFZd0J2QUc0QVpn?= =?iso-8859-1?Q?QnBBR1FBWlFCdUFIUUFhUUJoQUd3QVh3QmhBR3dBYndCdUFHVUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQU?= =?iso-8859-1?Q?FBSUFBQUFBQUo0QUFBQnRBR0VBY2dCMkFHVUFiQUJmQUhBQWNnQnZBR29B?= =?iso-8859-1?Q?WlFCakFIUUFYd0J1QUdFQWJRQmxBSE1BWHdCeUFHVUFjd0IwQUhJQWFRQm?= =?iso-8859-1?Q?pBSFFBWlFCa0FGOEFZUUJzQUc4QWJnQmxBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFB?= =?iso-8859-1?Q?QUFuZ0FBQUcwQVlRQnlBSFlBWlFCc0FGOEFjQUJ5QUc4QWFnQmxBR01BZE?= =?iso-8859-1?Q?FCZkFHNEFZUUJ0QUdVQWN3QmZBSElBWlFCekFIUUFjZ0JwQUdNQWRBQmxB?= =?iso-8859-1?Q?R1FBWHdCb0FHVUFlQUJqQUc4QVpBQmxBSE1BQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQU?= =?iso-8859-1?Q?FiUUJoQUhJQWRnQmxBR3dBYkFCZkFHRUFjZ0J0QUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-refthree: =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQU?= =?iso-8859-1?Q?FBQUFJQUFBQUFBSjRBQUFCdEFHRUFjZ0IyQUdVQWJBQnNBRjhBWndCdkFH?= =?iso-8859-1?Q?OEFad0JzQUdVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQUFBZ0FB?= =?iso-8859-1?Q?QUFBQW5nQUFBRzBBWVFCeUFIWUFaUUJzQUd3QVh3QndBSElBYndCcUFHVU?= =?iso-8859-1?Q?FZd0IwQUY4QVl3QnZBR1FBWlFCekFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUFBQUFBQUFBQ0FBQUFBQUNlQU?= =?iso-8859-1?Q?FBQWJRQmhBSElBZGdCbEFHd0FiQUJmQUhBQWNnQnZBR29BWlFCakFIUUFY?= =?iso-8859-1?Q?d0JqQUc4QVpBQmxBSE1BWHdCa0FHa0FZd0IwQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUlBQUFBQUFKNEFBQUJ0QUdF?= =?iso-8859-1?Q?QWNnQjJBR1VBYkFCc0FGOEFjQUJ5QUc4QWFnQmxBR01BZEFCZkFHNEFZUU?= =?iso-8859-1?Q?J0QUdVQWN3QmZBR01BYndCdUFHWUFhUUJrQUdVQWJnQjBBR2tBWVFCc0FG?= =?iso-8859-1?Q?OEFiUUJoQUhJQWRnQmxBR3dBYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBRUFBQUFBQUFBQUFnQUFBQUFBbmdBQUFHMEFZUUJ5QUhZQV?= =?iso-8859-1?Q?pRQnNBR3dBWHdCd0FISUFid0JxQUdVQVl3QjBBRjhBYmdCaEFHMEFaUUJ6?= =?iso-8859-1?Q?QUY4QVl3QnZBRzRBWmdCcEFHUUFaUUJ1QUhRQWFRQmhBR3dBWHdCdEFHRU?= =?iso-8859-1?Q?FjZ0IyQUdVQWJBQnNBRjhBYndCeUFGOEFZUUJ5QUcwQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFB?= x-dg-reffour: =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBQUFDQUFBQUFBQ2?= =?iso-8859-1?Q?VBQUFBYlFCaEFISUFkZ0JsQUd3QWJBQmZBSEFBY2dCdkFHb0FaUUJqQUhR?= =?iso-8859-1?Q?QVh3QnVBR0VBYlFCbEFITUFYd0JqQUc4QWJnQm1BR2tBWkFCbEFHNEFkQU?= =?iso-8859-1?Q?JwQUdFQWJBQmZBRzBBWVFCeUFIWUFaUUJzQUd3QVh3QnZBSElBWHdCbkFH?= =?iso-8859-1?Q?OEFid0JuQUd3QVpRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUJBQUFBQUFBQUFBSUFBQUFBQUo0QUFBQnRB?= =?iso-8859-1?Q?R0VBY2dCMkFHVUFiQUJzQUY4QWNBQnlBRzhBYWdCbEFHTUFkQUJmQUc0QV?= =?iso-8859-1?Q?lRQnRBR1VBY3dCZkFISUFaUUJ6QUhRQWNnQnBBR01BZEFCbEFHUUFYd0J0?= =?iso-8859-1?Q?QUdFQWNnQjJBR1VBYkFCc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFFQUFBQUFBQUFBQWdBQUFBQUFuZ0FBQUcwQVlRQnlBSF?= =?iso-8859-1?Q?lBWlFCc0FHd0FYd0J3QUhJQWJ3QnFBR1VBWXdCMEFGOEFiZ0JoQUcwQVpR?= =?iso-8859-1?Q?QnpBRjhBY2dCbEFITUFkQUJ5QUdrQVl3QjBBR1VBWkFCZkFHMEFZUUJ5QU?= =?iso-8859-1?Q?hZQVpRQnNBR3dBWHdCdkFISUFYd0JoQUhJQWJRQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBUUFBQUFBQUFBQUNBQUFBQUFDZUFBQUFiUUJoQUhJQWRnQmxBR3dB?= =?iso-8859-1?Q?YkFCZkFIUUFaUUJ5QUcwQWFRQnVBSFVBY3dBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFB?= =?iso-8859-1?Q?QUFBQUFBQUFJQUFBQUFBSjRBQUFCdEFHRUFjZ0IyQUdVQWJBQnNBRjhBZH?= =?iso-8859-1?Q?dCdkFISUFaQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU?= =?iso-8859-1?Q?FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB?= =?iso-8859-1?Q?QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQUFBQUFBQU?= =?iso-8859-1?Q?FBZ0FBQUFBQSIvPjwvbWV0YT4=3D?= x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PH0PR18MB4672:EE_|MN2PR18MB3477:EE_ x-ms-office365-filtering-correlation-id: a95a7d8f-066e-4a1f-aafd-08db760802d4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: koYEUpKBqTrY+EUaZQo9cCgdQCyLARlRCPIaWItaXVscXHOPzsPn5i3GAI+mGnwkaBZEC5IVuJ5Up6WYszDQzTAMAns0C3lAjkzJ6qPytcYR8/7s6ibFPR+jtK0CKx314U5dsFunSWnjsoOLqPbhop7nlAOKjSw8hpI2JXvu/LSPXY8le/rPkQo11cftKWYpLlhg/NV/Eg9RUOfw3Hb/FGX1QShoC9P3xOFXeDMKx2/8389gGlOxy4kBHgdVgbMkX23a6rhw8wym8JiHMwQDAGfs4Z8FTO6zoRaZ4wCZPmwmcHuPu2bblk4qRHanb/4A9HLcOnCb5kuTrzxkjHD7GD4HbinSz7eYB5nGr64ngFf4a3cFm6z1cuzLA+FK61tAh2EgeMd5jeRSi4JX5TTbJI212lHaQTsABTg1UxZLtOHHx0daiJJ8YKbmdJ7EN5ibxfDI81QqNxvhZWeNh4PtK6n2j4VVRky3Tzo4L5T5FAm59BigvzD2GOscFNpLFO5ktLFpGlusZmj9Fw8dr7V9rQa1Br+9+PbDahHEtKK9L7QNN8WcTHr0OGRwPD3MqzCW2r2KeTmqNHEfM7XCKyWgEADOuzQ0gjG37w7BEnH2BiErNQ14Rp9mhRzJtTmGB2Q1YuH97wmL25nBlQz49GNQnw== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PH0PR18MB4672.namprd18.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230028)(4636009)(346002)(136003)(39840400004)(396003)(366004)(376002)(451199021)(66446008)(66574015)(478600001)(71200400001)(7696005)(83380400001)(54906003)(110136005)(26005)(53546011)(6506007)(9686003)(186003)(2906002)(5660300002)(7416002)(52536014)(33656002)(921005)(38100700002)(122000001)(66946007)(4326008)(316002)(6636002)(64756008)(8936002)(8676002)(41300700001)(86362001)(38070700005)(55016003)(76116006)(66556008)(66476007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?+ke2NOuV2DwIhobUMLjcyWD4Qb1fmFFv5QP1IXMk73bzJN9e8gNIv5m7ZN?= =?iso-8859-1?Q?zUNkog1G80I6sQkUGiuFWQ6IrU2D+jxW+fzDe4GE56/Omxme3fgTfigV0O?= =?iso-8859-1?Q?yK1bTSFeMgRkNfrkKlxnkJHqRm+9pTjAeF0YwO/kkjhntbz9xrQWUPa9DQ?= =?iso-8859-1?Q?tI4HN85GSoeD+Kk7qimZaPfJPpcLz9pynxIyY7xd9RDvAfYyte6n33kq8d?= =?iso-8859-1?Q?8Sruo+cFI33MX0/FMUAcqKSt2lplOm1zFX2ni3sM4nTq4CKY2ZOFgQQJCy?= =?iso-8859-1?Q?MEYH09elkd5dUC6hQfXMH3kstpZqK0bgUTuR6N/k5+QTU+U9CX9VJRISVg?= =?iso-8859-1?Q?Vw9yurbyU6c44UiuTgYALCW19yxHBlXcDVL/ByNq4x+wYBs/mxEafknRqt?= =?iso-8859-1?Q?gKJYPKOXJoKmv6P+nz3FDQ8Hvee/RMA58gAjvrNRAimtYBOTN/Mf9QR7sy?= =?iso-8859-1?Q?3UJ5bTvqiy1p2AVUKw8m/sBsMvHCwrKvJmYkKLWCYm8SJ0x5b21QTd/n/+?= =?iso-8859-1?Q?RYbkJsKKtofhwrloa3mwGRguFFuqiGsq2EvX7c2eEDgqcXJP87Py+vqqNK?= =?iso-8859-1?Q?nsHb5bBqv90WRxLLMIp8XVi0FzOdzC4jaSHpfXUUrXDCZOUVIwIHr34jA0?= =?iso-8859-1?Q?/MCi0smNnKr4EsnUlRCDF3Z4UXe9Cj/CPIEygImZ46dnAxmOtAfM8llO6F?= =?iso-8859-1?Q?shdRgRfA6jvrDtsftIiIVhoK88BXExKLpHydFGFoZzjURZ5hKzjnmnIPl6?= =?iso-8859-1?Q?ONWD8qI0xB9i/ZoGbkH6Bbk+x7f2QKwXumzHsaQzrpXe/CE5BUsl9aGi9A?= =?iso-8859-1?Q?gs1SI5jqv6Gd0/Ho8+Nmr8phE1GjFhvXLAV1Mnhi8QdIuuNkPdE6ZR4p61?= =?iso-8859-1?Q?MrTMJJFpju/3m2eeg+aizVkOJAuK0MtUyrlnXWG5KP/fd8/EjPr8QHWA5g?= =?iso-8859-1?Q?mDbwy3ZDDbba0LPFTqlhsP9/aKlYMNPtH0BN26PLftkONe2j5wlGKnTtWu?= =?iso-8859-1?Q?AyWLS8mcmKKSbPpGObxxXmQr/z4NdSy7l2qaI5xHql5L4jFFPOzpHDMupb?= =?iso-8859-1?Q?gxHOMQyITTaXy8KHEV1KgYfL/KnrzMZIj3l3gnneT3oDKPvVxcq7mHasod?= =?iso-8859-1?Q?aejGkq6VA7zlqb5XgP9cd3UEb4cbv/6vmVGdQCSzggDR2+3v3sDEj3qt9+?= =?iso-8859-1?Q?gxfas0eMWkSt/7934ncs7/ygjckmV/lkZpOlC1ascX7YfHh2CVSugrn7oM?= =?iso-8859-1?Q?LFfs5V9zINLKrdAozBYvNZFCs9idQ4qhVWOUczSAE2/EIsEAvdPGgspKLk?= =?iso-8859-1?Q?Az0DJ9ssKRogj+ijfXw9YbRZWMIaAd5Kze3ojvKSFdc6LGp89PMJpPtlAm?= =?iso-8859-1?Q?C78tC+ldxb5lAGfTpXcRo39hnzXZOx7StoDsgbfjtv/wL1blQ5rGlLfKgz?= =?iso-8859-1?Q?bzreHKnD4AhKCnMU66hWzifRJa0HhgVdCHqILljqE01I3uw0n2lflV5RUc?= =?iso-8859-1?Q?qzSAev/TsrZn9Tjr4UYwsIwr04P5MK4XMtJ9G4JEnNdjwqnThS4XkqYjl/?= =?iso-8859-1?Q?SpHWX+/R50gMbAl9/XnLBA+2uIMilLRISlDV/k/GB0B2hDvTmchiOr3PsW?= =?iso-8859-1?Q?urCJc4OWWB11Q=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR18MB4672.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a95a7d8f-066e-4a1f-aafd-08db760802d4 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Jun 2023 05:41:38.2127 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9F12vNux2bUL4aE9h25yqAzLPS3gvC9XJCXfXeapeyChBjk+1c+PfEmoK9WNKsD4axOQ/vyBAoWLJLvgJB5kUw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR18MB3477 X-Proofpoint-GUID: I3-NYOIRXPad4ZLU7Ku4LYnhNeuWMhUc X-Proofpoint-ORIG-GUID: I3-NYOIRXPad4ZLU7Ku4LYnhNeuWMhUc X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.957,Hydra:6.0.591,FMLib:17.11.176.26 definitions=2023-06-26_02,2023-06-22_02,2023-05-22_02 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Hi Cheng, Please see inline. Thanks, Anoob > -----Original Message----- > From: Jiang, Cheng1 > Sent: Saturday, June 24, 2023 5:23 PM > To: Anoob Joseph ; thomas@monjalon.net; > Richardson, Bruce ; > mb@smartsharesystems.com; Xia, Chenbo ; Amit > Prakash Shukla ; huangdengdui@huawei.com; > Laatz, Kevin ; fengchengwen@huawei.com; Jerin > Jacob Kollanukkaran > Cc: dev@dpdk.org; Hu, Jiayu ; Ding, Xuan > ; Ma, WenwuX ; Wang, > YuanX ; He, Xingguang ; > Ling, WeiX > Subject: RE: [EXT] [PATCH v8] app/dma-perf: introduce dma-perf applicatio= n >=20 > Hi Anoob, >=20 > Replies are inline. >=20 > Thanks, > Cheng >=20 > > -----Original Message----- > > From: Anoob Joseph > > Sent: Friday, June 23, 2023 2:53 PM > > To: Jiang, Cheng1 ; thomas@monjalon.net; > > Richardson, Bruce ; > > mb@smartsharesystems.com; Xia, Chenbo ; Amit > > Prakash Shukla ; > huangdengdui@huawei.com; > > Laatz, Kevin ; fengchengwen@huawei.com; Jerin > > Jacob Kollanukkaran > > Cc: dev@dpdk.org; Hu, Jiayu ; Ding, Xuan > > ; Ma, WenwuX ; Wang, > YuanX > > ; He, Xingguang ; > Ling, > > WeiX > > Subject: RE: [EXT] [PATCH v8] app/dma-perf: introduce dma-perf > > application > > > > Hi Cheng, > > > > Thanks for the new version. Please see inline. > > > > Thanks, > > Anoob > > > > > -----Original Message----- > > > From: Cheng Jiang > > > Sent: Tuesday, June 20, 2023 12:24 PM > > > To: thomas@monjalon.net; bruce.richardson@intel.com; > > > mb@smartsharesystems.com; chenbo.xia@intel.com; Amit Prakash > Shukla > > > ; Anoob Joseph ; > > > huangdengdui@huawei.com; kevin.laatz@intel.com; > > > fengchengwen@huawei.com; Jerin Jacob Kollanukkaran > > > > > > Cc: dev@dpdk.org; jiayu.hu@intel.com; xuan.ding@intel.com; > > > wenwux.ma@intel.com; yuanx.wang@intel.com; > xingguang.he@intel.com; > > > weix.ling@intel.com; Cheng Jiang > > > Subject: [EXT] [PATCH v8] app/dma-perf: introduce dma-perf > > > application > > > > > > External Email > > > > > > -------------------------------------------------------------------- > > > -- There are many high-performance DMA devices supported in DPDK > > > now, > > and > > > these DMA devices can also be integrated into other modules of DPDK > > > as accelerators, such as Vhost. Before integrating DMA into > > > applications, developers need to know the performance of these DMA > > > devices in various scenarios and the performance of CPUs in the same > > > scenario, such as different buffer lengths. Only in this way can we > > > know the target performance of the application accelerated by using > > > them. This patch introduces a high-performance testing tool, which > > > supports comparing the performance of CPU and DMA in different > > > scenarios automatically with a pre- set config file. Memory Copy > > > performance test > > are supported for now. > > > > > > Signed-off-by: Cheng Jiang > > > Signed-off-by: Jiayu Hu > > > Signed-off-by: Yuan Wang > > > Acked-by: Morten Br=F8rup > > > Acked-by: Chenbo Xia > > > --- > > > v8: > > > fixed string copy issue in parse_lcore(); > > > improved some data display format; > > > added doc in doc/guides/tools; > > > updated release notes; > > > > > > v7: > > > fixed some strcpy issues; > > > removed cache setup in calling rte_pktmbuf_pool_create(); > > > fixed some typos; > > > added some memory free and null set operations; > > > improved result calculation; > > > v6: > > > improved code based on Anoob's comments; > > > fixed some code structure issues; > > > v5: > > > fixed some LONG_LINE warnings; > > > v4: > > > fixed inaccuracy of the memory footprint display; > > > v3: > > > fixed some typos; > > > v2: > > > added lcore/dmadev designation; > > > added error case process; > > > removed worker_threads parameter from config.ini; > > > improved the logs; > > > improved config file; > > > > > > app/meson.build | 1 + > > > app/test-dma-perf/benchmark.c | 498 +++++++++++++++++++++ > > > app/test-dma-perf/config.ini | 61 +++ > > > app/test-dma-perf/main.c | 594 +++++++++++++++++++++++= ++ > > > app/test-dma-perf/main.h | 69 +++ > > > app/test-dma-perf/meson.build | 17 + > > > doc/guides/rel_notes/release_23_07.rst | 6 + > > > doc/guides/tools/dmaperf.rst | 103 +++++ > > > doc/guides/tools/index.rst | 1 + > > > 9 files changed, 1350 insertions(+) create mode 100644 > > > app/test-dma-perf/benchmark.c create mode 100644 > > > app/test-dma-perf/config.ini create mode 100644 app/test-dma- > > > perf/main.c create mode 100644 app/test-dma-perf/main.h create > > > mode > > > 100644 app/test-dma-perf/meson.build create mode 100644 > > > doc/guides/tools/dmaperf.rst > > > > > =20 > > > > > + fprintf(stderr, "Error: Fail to find DMA %s.\n", > > > dma_name); > > > + goto end; > > > + } > > > + > > > + ldm->dma_ids[i] =3D dev_id; > > > + configure_dmadev_queue(dev_id, ring_size); > > > + ++nb_dmadevs; > > > + } > > > + > > > +end: > > > + if (nb_dmadevs < nb_workers) { > > > + printf("Not enough dmadevs (%u) for all workers (%u).\n", > > > nb_dmadevs, nb_workers); > > > + return -1; > > > + } > > > + > > > + printf("Number of used dmadevs: %u.\n", nb_dmadevs); > > > + > > > + return 0; > > > +} > > > + > > > +static inline void > > > +do_dma_submit_and_poll(uint16_t dev_id, uint64_t *async_cnt, > > > + volatile struct worker_info *worker_info) { > > > + int ret; > > > + uint16_t nr_cpl; > > > + > > > + ret =3D rte_dma_submit(dev_id, 0); > > > + if (ret < 0) { > > > + rte_dma_stop(dev_id); > > > + rte_dma_close(dev_id); > > > + rte_exit(EXIT_FAILURE, "Error with dma submit.\n"); > > > + } > > > + > > > + nr_cpl =3D rte_dma_completed(dev_id, 0, MAX_DMA_CPL_NB, NULL, > > > NULL); > > > + *async_cnt -=3D nr_cpl; > > > + worker_info->total_cpl +=3D nr_cpl; > > > +} > > > + > > > +static inline int > > > +do_dma_mem_copy(void *p) > > > > [Anoob] Just curious, why not pass struct lcore_params *para itself? > > Is it because the pointer is volatile? If yes, then we can take an AI > > to split the struct into volatile and non-volatile parts. >=20 > [Cheng] The reason I did it this way is because I want to launch this fun= ction > on another core by spawning a new thread, and rte_eal_remote_launch() > takes a void * as the parameter. That's why I passed void *p. Your > suggestion to split the struct into volatile and non-volatile parts is qu= ite > reasonable. I am thinking about the best way to implement it. Thanks. [Anoob] Instead of passing the address of index variable as void *, you can= easily send lcore_params pointer, right? >=20 > > > > > +{ > > > + const uint16_t *para_idx =3D (uint16_t *)p; > > > + volatile struct lcore_params *para =3D lcores_p[*para_idx].v_ptr; > > > + volatile struct worker_info *worker_info =3D &(para->worker_info); > > > + const uint16_t dev_id =3D para->dev_id; > > > + const uint32_t nr_buf =3D para->nr_buf; > > > + const uint16_t kick_batch =3D para->kick_batch; > > > + const uint32_t buf_size =3D para->buf_size; > > > + struct rte_mbuf **srcs =3D para->srcs; > > > + struct rte_mbuf **dsts =3D para->dsts; > > > + uint16_t nr_cpl; > > > + uint64_t async_cnt =3D 0; > > > + uint32_t i; > > > + uint32_t poll_cnt =3D 0; > > > + int ret; > > > + > > > + worker_info->stop_flag =3D false; > > > + worker_info->ready_flag =3D true; > > > + > > > + while (!worker_info->start_flag) > > > + ; > > > + > > > + while (1) { > > > + for (i =3D 0; i < nr_buf; i++) { > > > +dma_copy: > > > + ret =3D rte_dma_copy(dev_id, 0, > > > rte_pktmbuf_iova(srcs[i]), > > > + rte_pktmbuf_iova(dsts[i]), buf_size, 0); > > > > [Anoob] Do we need to use ' rte_mbuf_data_iova' here instead of > > 'rte_pktmbuf_iova'? >=20 > [Cheng] yes rte_mbuf_data_iova is more appropriate, I'll fix it in the ne= xt > version. Thanks. >=20 > > > > > + if (unlikely(ret < 0)) { > > > + if (ret =3D=3D -ENOSPC) { > > > + do_dma_submit_and_poll(dev_id, > > > &async_cnt, worker_info); > > > + goto dma_copy; > > > + } else { > > > + /* Error exit */ > > > + rte_dma_stop(dev_id); > > > > [Anoob] Missing rte_dma_close() here. Also, may be introduce a static > > void function so that rte_exit call etc won't be part of the fastpath l= oop. > > > > May be something like below and you can call it from here and > > "do_dma_submit_and_poll". > > > > static void > > error_exit(int dev_id) > > { > > /* Error exit */ > > rte_dma_stop(dev_id); > > rte_dma_close(dev_id); > > rte_exit(EXIT_FAILURE, "DMA enqueue failed\n"); } > > >=20 > [Cheng] I'm not so sure here. rte_dma_close() is called in the rte_exit()= . Do > we still call it explicitly before rte_exit()? [Anoob] In ' do_dma_submit_and_poll', there is rte_dma_close() before rte_e= xit(). I'm fine either way as long is it is consistent. Said that, I think = it is better to call close() from app, rather than relying on rte_exit.