From patchwork Wed Oct 18 12:39:01 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh X-Patchwork-Id: 30520 X-Patchwork-Delegate: jerinj@marvell.com 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 D1120374C; Wed, 18 Oct 2017 14:40:08 +0200 (CEST) Received: from NAM01-BY2-obe.outbound.protection.outlook.com (mail-by2nam01on0054.outbound.protection.outlook.com [104.47.34.54]) by dpdk.org (Postfix) with ESMTP id 01E29325D for ; Wed, 18 Oct 2017 14:40:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=W5ja6sFbODb8hO5l5k0LJl4YZHnbLNYvht4gp5Rudhg=; b=VhVEipsUCE01ZVaesD/1HJXOEA+Dk0ndErfLZnE79sVoFghmYg2DkGtZEmUIzSZ3jGbXvgPljJrKeSzFnIK/btGXlOngbAFfjsDmXREHl8XZbvfL2gwIXBrLm2THIr2dDy3tenUKw0CreEi3we6bymFWPL6GX5I3kQkPQfCnLQI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Pavan.Bhagavatula@cavium.com; Received: from PBHAGAVATULA-LT.caveonetworks.com (111.93.218.67) by DM5PR07MB3467.namprd07.prod.outlook.com (10.164.153.22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Wed, 18 Oct 2017 12:40:02 +0000 From: Pavan Nikhilesh To: bruce.richardson@intel.com, harry.van.haaren@intel.com, gage.eads@intel.com, hemant.agrawal@nxp.com, nipun.gupta@nxp.com, nikhil.rao@intel.com, santosh.shukla@caviumnetworks.com, jerin.jacob@caviumnetworks.com Cc: dev@dpdk.org, Pavan Nikhilesh Date: Wed, 18 Oct 2017 18:09:01 +0530 Message-Id: <1508330348-30060-2-git-send-email-pbhagavatula@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508330348-30060-1-git-send-email-pbhagavatula@caviumnetworks.com> References: <1508330348-30060-1-git-send-email-pbhagavatula@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BMXPR01CA0040.INDPRD01.PROD.OUTLOOK.COM (10.174.214.26) To DM5PR07MB3467.namprd07.prod.outlook.com (10.164.153.22) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 1113f0d7-83a3-4be5-503a-08d516255bca X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:DM5PR07MB3467; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3467; 3:0XKi/0IHKq2TdPYBDdpXNhYXuMKRRwWLXHylckftqaw6FIVt/mS5dwerjy3AtT6/o71jHGoIE3NrL2MhmwqVpwyGFIlbKLEcWxEp06YjAmzpiO772ZhphdFICZfVlfzP/TqEowAQplOd8xIwgr4x4JADsCEK2u1bOZatpX4zA9IrxDisTAT47Z41lyOMYP9ziqCLvT98JSnyJWbt6+jLPbkVpIxPIg3b4HwmXEpUjVxzOuJFic2DDNwP10c5xWz3; 25:7CKTFxUWrMx5rSfNs9HTV2sA39ehqiAPsU+lqJm70mcdnJYMH0PoGxli5hKlVDO2iya+wmx6JY51c2dgCabHAOcn+FIyx/zLlozbR5PYgt93xi0mDtXRb1734rX/RRtfN3l3qp8zwKymWfMOgf19WFWB5/5V2oAkEwtV5zuR9aeYvpfafw8TWsX3H/VH9fTXwd8UWvlq/bp/Yb2EkphJPhKVPHJIUXiD+XC8QaY8M6/TZ1nRuAfPTgHb5Lz8v0AEWrWxjGGj8tKsNj9e9dqscacF0Kr0/pzxhn6ZU0vGtlTy1srISKPL+3KQMjLNL6ceRj2r/N4vixqKsMmrpSWCdw==; 31:a7LiYCzRpl7BHKMXCUYo/h31E55jcjscGIrVeRt5c7Wa1e9+a1lL31FK3TdI21R430Q0SpprI9rubx8a/cmpdderNBPDJWISQCgY3VvsbQNy+p0KBDeCxF2nAwV73qJ5XTS0GMd+vTORZIvtRDXHF5LYsc2uBZwwXTxFy3Sq2aMmyJAnnNhpJHZukbPljMqvHP/YiSV8rix4E2jLd+QVr07u/cFht4ow14/0ubXD//I= X-MS-TrafficTypeDiagnostic: DM5PR07MB3467: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3467; 20:tWvLccrAukrn4LAu9qHoC+JXkEA/wvBOTF4ieY4ZivsZr62FICiTtEF39NjC5+I43rW1e/faPP6LmBB6adrZ6aInbclXg9QKZES7tz628939i/ZnY1iv81Y/E7P6ZHQ8xnVwoz3Z2OKUrz/04urxGKiY+/xnuTbe1OQP/tLs/OPwqUn2oN+/k34rWclbCVXsCUQQufsNERX62eJ3Hiq2ITvLKPxuB8dTdwqMDY5KQ8T9xeWH2+aW6SPJfsVXLwI5F+n7mnA7hbbyCUSS6pbd8XnP78Ig0qKmsx4Eos59dIQWQ4kY3i0dn75wqKo7j14wf8UR4QJ7NWH9qVwTXPLYB5/j0h4khMY0GnP7PC+Lgb615Z2Qi3PV8AWhmBl9sV80yYDOqRZTylJhfqOqHN0VV4fPunH9O1Jen4ZpsNpXjJ6eg0Mf8Mn/B5qbL7u8VjuilrXOFhU+cuVZz9A/JT2D5WV5641bRCOogE5x+PnFipOELAjZR5fC8PNW+QYGst6v5EDVYo1EeMJjeqL/5H9uJTXaAD7ZFQwx7zmAbMxJFNnuXdfgU0/9aCw+BWHhdEzXAoUWxLTnSnzVa0COnPXD+D1eui3XFM1NN2KBbzD3NSo=; 4:MpwCOGSZgvMu/wE/69tr7zYbmlz0IfJUgBH3BaOlbzX308ZNALgIZABi6xJmLmc0DsP7/i7LyC8O2Mj9EkftHf4rh1QGkPIYQzwnJVV1faTP3wQtZ46Q8VaHwDCGUf+CD3mg6pyL+GQe0Os2Fy4+m3tT5DymuxmAsIf/1ErheyFbvjDBLYyCkOiIqY/rvUIoGJea0XbC2I5w89iHxoKK4z5vTuHJ3Z1XzgXDQNK5LTa0H6WuVCxBCVcZhiElq/QF X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(5005006)(8121501046)(93006095)(100000703101)(100105400095)(10201501046)(3002001)(6041248)(20161123558100)(20161123562025)(20161123564025)(20161123555025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3467; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3467; X-Forefront-PRVS: 0464DBBBC4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(6009001)(346002)(376002)(199003)(189002)(36756003)(316002)(72206003)(478600001)(48376002)(16586007)(106356001)(25786009)(53936002)(107886003)(50226002)(8656005)(6636002)(105586002)(2950100002)(42882006)(8656005)(50466002)(5003940100001)(6512007)(6506006)(101416001)(189998001)(6116002)(33646002)(4326008)(5660300001)(2906002)(81166006)(7736002)(5009440100003)(6486002)(3846002)(97736004)(305945005)(53416004)(81156014)(66066001)(76176999)(8676002)(8936002)(16526018)(68736007)(50986999)(47776003)(69596002)(42262002)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3467; H:PBHAGAVATULA-LT.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3467; 23:ilTrEWn4+tP1P7aMXZoK2Vi40MySVatFJdx8e7bg9?= k3jL82OD3D471GT28OO+lJKMCxaLv0nNnJiWalxv61bRrIZza1u1DpMJqb6U/IKQFCa4fbxHYhWWDyvu7NKLcibgvaPk1PrvnFM/Hras1bsTBKTqWO/O7T2Zl4+YPVhkmK01ubWs+7IO5LEJQW0OuVGRVrhvsnRCUWASgNap0bq7WdMODmlVARuurNN4VrjVQPldgb/cdkBXWB8V2SW5WIPvyqJFqNk6kN7dcJpHQJmlf6wcsT5Ir6wACdMAzFxBlu5cOzZDga4qns64w7Ogu5tGBY1pN/+E/8mGK+nFRdS/9ymxdVbGp+XOqZ/dbNgb+PDnwLCcku41HaVJbpAh0i1cGfl5SUQNyOkF79ljqm93Xxzsuus91IGzCKYceDhvvw2mBJ4/grYWDbOCl2Q7EbG+pB0clGkXIYBpELkd1HTxNYz6Qi1EEyO7lt/2en4iEndmFBvmUZYJt4yBkwZwFf8hPI/MWeLHiGwuTqja41Ma/EBJ2EWaaa7gQ9DbzOZwt33GVntob8a0KjhDCoZR47tFJ4iJBvvn0MFEMtYslS7uGoXN4HFILLo971L7Fzno9yjQRFHESH0dzNC4SNJA8uDXqU73JP3b41vm+v0lO9fSQAgkBGPckl186P0kufVzjH+qLDTRESJL66lPmYQmXYIhIduBceGLnRXGxeqpxXRt07v+5CoYb28tV0NCfxTSpHDo7u3hXSlMB+E3nwMp/bNNxW/W89q8tGRpmIF2ib6W1fohpf26gSI2yhqH0CR5JnnuxnX/Jm+98CGTBP00jRG+zChZf0PQZmee6EZDFDRcuD5yA3IRcJvzudQcbaV+kn2ScAhUalMpj1xS+FbGmru09OKXxuRjc8emV4nuq+bKOjaoJQJ8ysQZUxJBOil5v4y61VXdNabbB0e4S78hgepWkjTuXRHrKQBafK6jkOF7Xztrm3H7sQBfGBTtSNvc4+YyBEuAUPsgyc54V0hF51q+1u/h93GV7Li/pwm7Xbiva2bYtXrDqomvCGahqyTBMFY8yUWn9BYSDX3x404Xw9L4IZc+tEN+DbaL5OijS0AUt4kLu7AwmI2HjLsdiXG4N6ZU5gvncDAuN/Gaj/3OV4x+zdeclkj+SHlsiLp47+Jtpybd47sadLOL2+nIvMTO2uLbLahoXDL8IICRJyxig3UbZOS/qwk0/cGDSqMbCTVegromubl4xSsKIYfe87QywfAboYNdl8U5BktaFtk1xapnlPafQAkMQJM/s819Fag2uz5f5l/5hg4nw7BUo4Kbds= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3467; 6:8WedUWppiRkohjS+lRhI0905m28cgn0FRJlynpB9l17sVNGIO8PUkSAHMyG2PRdZgMQMWhOIgt8YMmLoxBmslE+EB/MtF8MS+JfEub6ZsLIE3jsByUXZnmMP+MA6GN4MN0m/LImnzfu0Ldvu66LKcDPvm3fTONLcP1jwePm5ODJSY2iZWy9Q7MIHG/7ta98kqEYbn6GSD420wuS22zVRT8oq9QyBFtrmgvLRosAn5ARfYHne35w+Rel7DYG8Pjg4Tg6AN3X4keLO7yYRrcGvgPLdHgv3SdS92+kKSG6gsJBQwHwM2qywAhS4UFANYd78l0+k3AC77AGgH4GYNfTAGg==; 5:5o16Q5wKvYu4Nf5kal3dfkeGYr9e6yESQ9OKgcPYCmmmNtDpiMau6rvwTk1O3C9M7Qcc4Qj3aKZdG5tf1M9xV9mfghodPynizp0WNOte2CXMlWR6KmEhSv98I6NrZ48+0UIqAjMSkOMiBhsona0V8Q==; 24:5IMnP8U4JMiQN7m+GlFIM3x2KgprMeNKhz64EfsDeMn/m1/jSgQVe/eTSo9YKmIAbCBJF6G5z46CRuIR/jQTsLxZVy6xAx11fPubsek1CuQ=; 7:8i9jiO6ddy9L+Z6dNoT5M6B+JhhVTIdyxe6PZKuLJWMakf9FxIitB/hh2a51qmutao3OlusJaIT081gnArYXLzQwULNap+weSAK0il4iaATF0l+0fafNr8TXvycn34d5Bzv5O6Vo1RULrWt7lJwkMmWn356QyB81yDwSFNobdEt1t7QOLW5FPUbmzGKeXTKbnGa51n3TtQOWYjZuYnk62AvsJ6uxdliH0sqpn+Ilci4= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2017 12:40:02.0192 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3467 Subject: [dpdk-dev] [PATCH 1/8] app/eventdev: add ethernet device producer option 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" Add command line option --prod_type_ethdev to specify that the events are generated by ethernet device. Signed-off-by: Pavan Nikhilesh Acked-by: Jerin Jacob --- app/test-eventdev/evt_options.c | 11 +++++++++++ app/test-eventdev/evt_options.h | 29 +++++++++++++++++++++++++++++ app/test-eventdev/test_perf_common.c | 34 ++++++++++++++++++++-------------- 3 files changed, 60 insertions(+), 14 deletions(-) diff --git a/app/test-eventdev/evt_options.c b/app/test-eventdev/evt_options.c index e2187df..7db7cd9 100644 --- a/app/test-eventdev/evt_options.c +++ b/app/test-eventdev/evt_options.c @@ -55,6 +55,7 @@ evt_options_default(struct evt_options *opt) opt->pool_sz = 16 * 1024; opt->wkr_deq_dep = 16; opt->nb_pkts = (1ULL << 26); /* do ~64M packets */ + opt->prod_type = EVT_PROD_TYPE_SYNT; } typedef int (*option_parser_t)(struct evt_options *opt, @@ -107,6 +108,13 @@ evt_parse_queue_priority(struct evt_options *opt, const char *arg __rte_unused) } static int +evt_parse_prod_type(struct evt_options *opt, const char *arg __rte_unused) +{ + opt->prod_type = EVT_PROD_TYPE_ETH_RX_ADPTR; + return 0; +} + +static int evt_parse_test_name(struct evt_options *opt, const char *arg) { snprintf(opt->test_name, EVT_TEST_NAME_MAX_LEN, "%s", arg); @@ -189,6 +197,7 @@ usage(char *program) "\t--worker_deq_depth : dequeue depth of the worker\n" "\t--fwd_latency : perform fwd_latency measurement\n" "\t--queue_priority : enable queue priority\n" + "\t--prod_type_ethdev : use ethernet device as producer\n." ); printf("available tests:\n"); evt_test_dump_names(); @@ -249,6 +258,7 @@ static struct option lgopts[] = { { EVT_SCHED_TYPE_LIST, 1, 0, 0 }, { EVT_FWD_LATENCY, 0, 0, 0 }, { EVT_QUEUE_PRIORITY, 0, 0, 0 }, + { EVT_PROD_ETHDEV, 0, 0, 0 }, { EVT_HELP, 0, 0, 0 }, { NULL, 0, 0, 0 } }; @@ -272,6 +282,7 @@ evt_opts_parse_long(int opt_idx, struct evt_options *opt) { EVT_SCHED_TYPE_LIST, evt_parse_sched_type_list}, { EVT_FWD_LATENCY, evt_parse_fwd_latency}, { EVT_QUEUE_PRIORITY, evt_parse_queue_priority}, + { EVT_PROD_ETHDEV, evt_parse_prod_type}, }; for (i = 0; i < RTE_DIM(parsermap); i++) { diff --git a/app/test-eventdev/evt_options.h b/app/test-eventdev/evt_options.h index a9a9125..a6607e1 100644 --- a/app/test-eventdev/evt_options.h +++ b/app/test-eventdev/evt_options.h @@ -58,8 +58,16 @@ #define EVT_SCHED_TYPE_LIST ("stlist") #define EVT_FWD_LATENCY ("fwd_latency") #define EVT_QUEUE_PRIORITY ("queue_priority") +#define EVT_PROD_ETHDEV ("prod_type_ethdev") #define EVT_HELP ("help") +enum evt_prod_type { + EVT_PROD_TYPE_NONE, + EVT_PROD_TYPE_SYNT, /* Producer type Synthetic i.e. CPU. */ + EVT_PROD_TYPE_ETH_RX_ADPTR, /* Producer type Eth Rx Adapter. */ + EVT_PROD_TYPE_MAX, +}; + struct evt_options { #define EVT_TEST_NAME_MAX_LEN 32 char test_name[EVT_TEST_NAME_MAX_LEN]; @@ -76,6 +84,7 @@ struct evt_options { uint8_t dev_id; uint32_t fwd_latency:1; uint32_t q_priority:1; + enum evt_prod_type prod_type; }; void evt_options_default(struct evt_options *opt); @@ -266,4 +275,24 @@ evt_dump_sched_type_list(struct evt_options *opt) evt_dump_end; } +#define EVT_PROD_MAX_NAME_LEN 50 +static inline void +evt_dump_producer_type(struct evt_options *opt) +{ + char name[EVT_PROD_MAX_NAME_LEN]; + + switch (opt->prod_type) { + default: + case EVT_PROD_TYPE_SYNT: + snprintf(name, EVT_PROD_MAX_NAME_LEN, + "Synthetic producer lcores"); + break; + case EVT_PROD_TYPE_ETH_RX_ADPTR: + snprintf(name, EVT_PROD_MAX_NAME_LEN, + "Rx Adapter producers"); + break; + } + evt_dump("prod_type", "%s", name); +} + #endif /* _EVT_OPTIONS_ */ diff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c index e77b472..9d2865e 100644 --- a/app/test-eventdev/test_perf_common.c +++ b/app/test-eventdev/test_perf_common.c @@ -287,8 +287,10 @@ perf_opt_check(struct evt_options *opt, uint64_t nb_queues) { unsigned int lcores; - /* N producer + N worker + 1 master */ - lcores = 3; + /* N producer + N worker + 1 master when producer cores are used + * Else N worker + 1 master when Rx adapter is used + */ + lcores = opt->prod_type == EVT_PROD_TYPE_SYNT ? 3 : 2; if (rte_lcore_count() < lcores) { evt_err("test need minimum %d lcores", lcores); @@ -313,18 +315,21 @@ perf_opt_check(struct evt_options *opt, uint64_t nb_queues) return -1; } - /* Validate producer lcores */ - if (evt_lcores_has_overlap(opt->plcores, rte_get_master_lcore())) { - evt_err("producer lcores overlaps with master lcore"); - return -1; - } - if (evt_has_disabled_lcore(opt->plcores)) { - evt_err("one or more producer lcores are not enabled"); - return -1; - } - if (!evt_has_active_lcore(opt->plcores)) { - evt_err("minimum one producer is required"); - return -1; + if (opt->prod_type == EVT_PROD_TYPE_SYNT) { + /* Validate producer lcores */ + if (evt_lcores_has_overlap(opt->plcores, + rte_get_master_lcore())) { + evt_err("producer lcores overlaps with master lcore"); + return -1; + } + if (evt_has_disabled_lcore(opt->plcores)) { + evt_err("one or more producer lcores are not enabled"); + return -1; + } + if (!evt_has_active_lcore(opt->plcores)) { + evt_err("minimum one producer is required"); + return -1; + } } if (evt_has_invalid_stage(opt)) @@ -369,6 +374,7 @@ perf_opt_dump(struct evt_options *opt, uint8_t nb_queues) evt_dump("nb_evdev_queues", "%d", nb_queues); evt_dump_queue_priority(opt); evt_dump_sched_type_list(opt); + evt_dump_producer_type(opt); } void