From patchwork Sun May 28 19:58:48 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 24834 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 [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id BAC0D7CCD; Sun, 28 May 2017 22:02:33 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0051.outbound.protection.outlook.com [104.47.41.51]) by dpdk.org (Postfix) with ESMTP id 979567D46 for ; Sun, 28 May 2017 22:02:23 +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=Sh3EMyRE6kklsTbUtx+nTOK9g7N/iA+PcDFOGsn++a0=; b=ormL37Pqf6dmuocAC8vlgQQl61Yyw2Toj88todHM6xUSZYUHm/JDdsbAqFsgGAM1Q7hHRdVUGwON+iS/ZsCM8FE9WDVYi6GL/2eXCgeU/l0EIaP2m7CBozChCc0X6g53Uw1eejprTCdhcHka8oJdAdbkGQl9qhDY4CoPI2fdCs4= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=caviumnetworks.com; Received: from jerin.domain.name (111.93.218.67) by CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1124.9; Sun, 28 May 2017 20:02:18 +0000 From: Jerin Jacob To: dev@dpdk.org Cc: bruce.richardson@intel.com, harry.van.haaren@intel.com, hemant.agrawal@nxp.com, gage.eads@intel.com, nipun.gupta@nxp.com, narender.vangati@intel.com, nikhil.rao@intel.com, gprathyusha@caviumnetworks.com, Jerin Jacob Date: Mon, 29 May 2017 01:28:48 +0530 Message-Id: <20170528195854.6064-28-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 2.13.0 In-Reply-To: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> References: <20170528195854.6064-1-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BMXPR01CA0003.INDPRD01.PROD.OUTLOOK.COM (10.174.214.141) To CY1PR0701MB1725.namprd07.prod.outlook.com (10.163.21.14) X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY1PR0701MB1725: X-MS-Office365-Filtering-Correlation-Id: 5732f650-1029-4939-55eb-08d4a6047430 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131423075)(201703031133081); SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 3:Y4tWWGX0Q+JCPshitPRr20qXu6IjUpUF5TxdPaTNskcX27ijZt87iK/wgvT4ozQsb6BicM5EmzjtuMf8PJZIyAYKdSGtNhxFklfhmK1oH78mMY1MoN/Ux4NFM6smxffRynotCMmDwZ7o7VQ7cOthSItvNOaGdtUqg/Us8L4JSncAURnF5vViWglkmH/wWp4rqeYmbSO78105pOxQzB/61EYxbLiRcKVPrTFUlmQFetFENLUMDINrrtLlYI0u5gf3tXh675KYF8CMQMhFfShen5ZSJ15l+iXY8DYuyFNkyNjo635nAI8KxbnH+EhgS8BgX4vlLZ5Qf4IVYatQ366dDQ==; 25:+7BJXVWYxGyY+YedCa2qyJyeBn/AAnlQrYXc72X68gCbLH9SNuv1w2rFulSHnKd4BfWY3O/qqqlp/7vXgX3eKjUKQkuRpPZ6AC/AI6YX3H3o3jpudTfY8ZubtqWTAaH8tI5QK4teqf1gTh+rgnABI7YAoeK24QKskfDWaCI4IbKFwlpEY0gExhrdyWbqIb6U/yYQasPfzNdUD715upcsgSvnbCyWHfmBhIhAI0MR6cOj1ljRz2NERN9YXZZLVP3SjMa9UI4X6jG6Sn/sNp1k1bTH4KhReAl24PV3eaXkoWSPElMvQrZvcbpXCPkX1xwHuFLmNF3m24pah1jhYicXjhvN8aYMHqFc2LvyNgtSJRGO7UpmRpeTxcLn8MPI60dgRKFmQcXvVm91+DUD8W86g9rm+tVVZDbXA1XsB/1Ooyl4KZhkYpZ1NfxEIRlr1QKLauKPQvwx/9BPabztJT6YZNjsBDRiXlPtwwCRL0MweiA= X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 31:AZyJ1/CzrRtxIqGRxb+huyh4vtOLcoVqRjRon7glsKABkjEsHb1h37AzA8xq2KdCu+052HT8gP5xwzq8058uAXPsK67tn4rU4Tr8V6CuexR0kWm1kabpXGY7H4v5Ak5J9zj3MrZWk6+SFBCp4kLlZJHgl1ArC3FuFaUJP0FgityoiaBHTUatk5Evv9ke0JTpI+lE1fLOfvDohVOCVXcUeNKP0sEyV7IvmcynACFM/6s=; 20:Y86foeLnDYfDQI2BzHJ4D8h30sNsVfmlxQGLrn0ROCm9H79LhSYWgxUSH4eYozg1d5B45eit0d9P2JH2KLaHawMVrjZx23KbsnKZfGXqd1VqA0Eb4nDWj2hzE0CeAkkMob7x1cVFWSDG1RuurIqO3aQRGI6//QP62XpuXAkRhf5Hhw4MJPgvMcVrsajSu33COU1ZYgogL1eZIwBfDr6lg8dS+pl9Gp48o1h4SgkwJwlGx5RUwcSStO/sItcWr+Xc2ZzpKw4S+nntapJ0j1GQTnLmQC8szZfq7H1vt6hd8+Bcb6MIL0+VimCQfRP3+YqARhzhV1p2EbqttcAl0STw8jah2Ri5yFDH9+pGlE55I8OSgeipg8M8o/4Dxnwsti+jYdAObnUjFD4ZzEksxY2KOcNJaYV3OZ7dm55yJ301eo/4wNjVXZw+1r9R+cZh7aD53FkBv3FhJOkw8rdlfFkFdslIqG+XVf1hLqoEv+p1eIlihvdcrixkb50+txbFpsdElHlUA6uhJw/2vNAu1vn2KI0QgJJu3jQtEmsKkGrk9RLdF0pwSWtdY40DoIW+aAQ0/hM+QP7SfJhH/UMYw1/ENnt147kDMdlswAu5bP4Ei2w= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700073)(100105000095)(100000701073)(100105300095)(100000702073)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(93006095)(100000703073)(100105400095)(6041248)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704073)(100105200095)(100000705073)(100105500095); SRVR:CY1PR0701MB1725; BCL:0; PCL:0; RULEID:(100000800073)(100110000095)(100000801073)(100110300095)(100000802073)(100110100095)(100000803073)(100110400095)(100000804073)(100110200095)(100000805073)(100110500095); SRVR:CY1PR0701MB1725; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1725; 4:GXfISJZEr2S9GGJCIT5x2937SP1pi+oHsI+XKt05?= bCpBzAixCuyvr/7i7oBtyM5ZRSwF+AtSMdu6qkGP27/MpwMswF44AQ8z+EM9w5b+f1wSswBmWXKpZqQRGN7GdhxGEINKL0RBxOVJlAwZBQNHlwrCrr2O5Zk+AbGLuQ4OY8Kw/c31yKEqVXhUB/BHk4Dm/GIlhZwpx9NgCvwmZ6nx2Qv4z4nmGB+AHogY+orCj9eNnsd90WQMeFBoVRLf+CVeW4CkMHls/4/xOZi+gpl30VLgh6jLWHiXT1E32pHvFJ0prlEXwboO1zZRyH/7CLxqvlklaVY7PCBysMc2/b5+rk8wOu3nj3RkRbIhlmBNwXgQiUqTr4sEsSiSAi3lE+c4FJ0xA1/nevmOIB08Gr/rIjJ+EVPALFG5KH0UEPfpqh6Po96PcHdXkAJ3pk7g8t+gY1Kk/oMd7y8yC8zebR6dt3Fqyt8Y8AG8/QXYV+BJb5irX5yFvi7bNhKyHoGIrHMJE59d5HKG6hjJaALNzq2x5B2kkjlTi+7n5tEvSe7w6SEIn+PyGI6A9tYwI5cSX9sXXb66s+p6gzZUZdRMZ3zL6ebNdjmhF2F5iZRyKpEQBqI7Q9KgJdG9rK3NY9h8rQb1Vh/WaI6YmSO27If+M7k0xoB5iY2TGpa2go7HC09Xg89uh4VeV860D0NaheS3dMd+SHOOhxMv4Ytj+ZwcBn+le/3brEx9cLtZQHrzvBpoRSdtxUI39CUsfFRmMcWudsPXvbHx2tsPHVZdoEsaFf0n4OFk4/cusnLfKTfugiVRHYtbBKNmFvNfJOjOti8zOJ3e8MEwttVeKxwdZ1tTz7Y4Ns/WXpgXQjhRXCgadqoUJ0txn/r/rQliKbOqMzNBt1L5VSHcgmEvoxLg840L9VI3KDwCDJTgA4yOPeCaYZT3aIcFtDqqax24OzMLpsIyvbuu1QuCMCWSbOybLmRb5L8O4EwGRwtdqeFH9r489qYuVdJxhHhE0ZOQUkXsUutrPMlUPpk9Rs3KlumXCuLvDIxQCbiEez/QhK+pyTO5jeoLEzZvEP2amTqbUpST3yebyeeA8aRQkGilozB9r/q9wbVxfuhivQqQFn1NRA3EF6zYk4Y= X-Forefront-PRVS: 03218BFD9F X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39450400003)(39850400002)(39410400002)(39840400002)(39400400002)(81166006)(6486002)(66066001)(4326008)(50986999)(76176999)(50226002)(189998001)(72206003)(36756003)(6506006)(38730400002)(5003940100001)(5009440100003)(110136004)(107886003)(42186005)(53416004)(7736002)(8676002)(48376002)(50466002)(1076002)(3846002)(6116002)(6512007)(2361001)(305945005)(2906002)(6666003)(478600001)(25786009)(5660300001)(2351001)(6916009)(42882006)(2950100002)(33646002)(8656002)(47776003)(53936002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR0701MB1725; H:jerin.domain.name; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CY1PR0701MB1725; 23:MqSYTu7EadizCqMH8VvsJLTra+OqBJxGnIqmYAa?= U30/3rfnX0CpqqZgsv50a62Qpmid/QkBfLD8jWeTZDetQzP4ebg8kW90clEo8UeVYarW72h6zs3rMi+7nxFmWRj9xOcg2ESvGmM8FsYv3l7UIXhpOdT51EW4OgxdEq8E00wUj+xYgeuNB+bR1V4bqVwXsUCAhyf7zHqH6r9Q0Mj7iLnuPOFb291b9U4XRagIRBqRGXbihpA2vSU1XQaHzzUyuFYams3DEsXxg74uBYxPUVfi9fUuORXhVkmbza+K5OnY4TgF4VK5p+aTKj5ve3SOnAH48uxHikqUDrZt7+nF5yWYm+vxi27wMZ5WeeOUt9VXKa+xR1Lo3Dj+VPXdmYqnTA1mRUjpRny5FO0wgbBgFAcLkXe6nGI/VqFFptqa36qVav174ernmb26ZS8svsr0dGwx4+tCCN37wDf9DlOwDmSW8NmQTfRKLhFceDfdbRVHXH7Ox4QVB0G5ceYGfW1u5qQN75jbU7fqKkV0lRJPzIPOS+lZMPKCUFeoVwyDWz8FNQ6wuLmNhyTJlEhiro89V5G4BZ2W+2E18ooSdTH2wys9gkyfp+1m2Qy+/ieExYhRVVoUa737CGrjQh0KcqRw0Gkg5LGibqMgVJuRSqbcGrJyrRGGh1Kz/XScckv4I3on5i3h6fF9Qc7yrKBJ/FCAk50sn8L067IX6ITFEb98fMIWbec0tfk+JPt3whnH61+9MgxHZ3qsG35IV3wji+4Tep98XtNlybQ6G9/hysoedPu0xjQLLJ76xFm4z2TjzQU4CyuYOoXUM5Y+TG0ZIl/Md7AA0LikEfZ0Fpxuk+NuGLRkueoppE8VO+Z9trmEtI1Orxomqd3MDSHaeyKzn0oKKAwVFnddZzJnafkXoLmEHEyfgCrhRG1UX6XT4J1e2rkR66KQUYd0YATiRd7o13BDXlMoyMDLZchbThjONDLt6A9UocRA4ffgJTyIRawsH+RaF+ieLRx3A0sh8aiK7vhlMYFATp4uOhoY0YKsO1oUlvqz7KGz5WJJBQhtbyuz1W+q8nFmx/U5zcbvgc17P0O2PSElwWdwi54DQKs6BMqu0Qajrg3tZg97cZsMZQQoMG6H0PfGtC+2JRxpHoKLpm9hGVYeL8S/AMYDPOTnjOt+WoSQYAKUFYQxWRRJFb2SerGRy5FPC8fPlVSFDrpS7dftw X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 6:UsTyOYkUwHtBCiY7mWTNsPXF2+oobikEzgAwUELOoilJ8OPz96QYTzjApJgPzN4OybCFQtGW5GBJPZE9RKINPdiAFtpD+CrT49rONTfi/8xXnJi9xLTMrWhj2QalqUUx1EJ7UKxJYQ8qZPE9Nf9kWRF4t9ne4ug5rr6u2gT57zABDcqqlXfyDCKNM4n92ReOgQTjBL/A5S4R9HxBTAlIGVKcMAA5uhfQh7MZ0HC+Kmjg5BYtv5y02U7Y8cqyOtBOyi3ayzqf43jqFvjsnmgnOeY7cs96yrQ+omXatN12oYQ++/1MfgIR1UW3bzJ9iOfpQO4u+HIAC5pHeqQU6cCunR35rVtXEgqJOF21CGsb+oTE2tvI+YxwJ8jKb7pojtiv22sDJo9PPleDYx6GmqJG3sVuQsOzkS7y1ViSwGy0lww3X18COcF85Vv90EotsUvWespopZQWi4OMIBnWHzSI26XMl0vwSepS1TXFkmyKGEiu7i3h09K9k79V9wCkFcANdy+9wT0pluLTTb0k980FGQ== X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 5:gZCevdD3sxnl4HQYsWem+ImbMUzPtCu6FhumhoNpee+vHXYMAmT59vmXKS0TmwhgTrE3aWWmNEa4YQlfKl8TbLoERooFdOjIa1deSfVkdPWh2KB7CfHN59Ta38OSdoLu9M2n4LwHlSl4t/5lSQw19RYskBMWdkXDA7on3vJhjHxEaWzcF0H2uRh9+e0tghshCE2W1ZUDiiOLl7OvACB6tPuu5n31grcMHwvWocZCj7suk+0ZQwasHBjLPLZEt6k/l8RVPrGQeMiO7OUWY8uklYHuB8UnKs9UGod2LdT+9dF5EIYRztpHYYanFqRSAl/NB4MneL6sYxU9RDlDAA2eMONamQSpx6a7rOd5Ov2AD6cK7sTBtDHNZbyA7Ohz3wGSE9y3Eff9RI/IXnLbv3QEbVFjqLJmZuvGxy4rFAZg0BxL1IpAt1eGW/yQ3TM9crVAWW1j9hAnjzZxmUo2FzBgPkUQimmE80lpFwSYjeZazg93D8rEEF07cLWNMfP19G8+; 24:LtDdyv6nWyFOKrEz8pW9FasfY04EC0NENfbXf4ZynqPD1tqRvo+Z9m/osaXh33FNHSHhGk52WYEdOv7V9xfCO3+HnzZSi36IGwCTM4UDjp0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CY1PR0701MB1725; 7:3Y4k9xaCBVBHlAlg+inUlP+9jvcKWXqi85kGzTekhU1pGUufsOPQdU2zqusK4GwkdpHpGncGeETr00Y2ZQUdn1Fhj0a0f7MSMbl6Nybc0eZdVZPYBjwDj5tjWlQtyglyZI22f8TbE2v2nlwktQliOkmWh25TwFRuK7dy7GFACcvi30wqFgXGMkeKQHR1sDU8afKkt/UtThVEd48QMxMjSrwHYwVpiYjZDzDGjLVoxvR1Lq9N0N0CdXqRMoAGapJavqDEKwXuBOF70djdb7BGhpWRna33aBsS1gKw9hen38qL+UqORzaff2jMTwIvwIumlKYE3Jt+KRH0HVY1p2mQNA== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 May 2017 20:02:18.7817 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY1PR0701MB1725 Subject: [dpdk-dev] [PATCH 27/33] app/testeventdev: perf: add "all type queue" worker function 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" Signed-off-by: Jerin Jacob --- app/test-eventdev/test_perf_atq.c | 141 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 141 insertions(+) diff --git a/app/test-eventdev/test_perf_atq.c b/app/test-eventdev/test_perf_atq.c index 963fa1954..3445cc346 100644 --- a/app/test-eventdev/test_perf_atq.c +++ b/app/test-eventdev/test_perf_atq.c @@ -41,6 +41,146 @@ atq_nb_event_queues(struct evt_options *opt) return evt_nr_active_lcores(opt->plcores); } +static inline __attribute__((always_inline)) void +atq_mark_fwd_latency(struct rte_event *const ev) +{ + if (unlikely(ev->sub_event_type == 0)) { + struct perf_elt *const m = ev->event_ptr; + + m->timestamp = rte_get_timer_cycles(); + } +} + +static inline __attribute__((always_inline)) void +atq_fwd_event(struct rte_event *const ev, uint8_t *const sched_type_list, + const uint8_t nb_stages) +{ + ev->sub_event_type++; + ev->sched_type = sched_type_list[ev->sub_event_type % nb_stages]; + ev->op = RTE_EVENT_OP_FORWARD; + ev->event_type = RTE_EVENT_TYPE_CPU; +} + +static int +perf_atq_worker(void *arg, const int enable_fwd_latency) +{ + PERF_WORKER_INIT; + struct rte_event ev; + + while (t->done == false) { + uint16_t event = rte_event_dequeue_burst(dev, port, &ev, 1, 0); + + if (enable_fwd_latency) + rte_prefetch0(ev.event_ptr); + + if (!event) { + rte_pause(); + continue; + } + + if (enable_fwd_latency) + /* first stage in pipeline, mark ts to compute fwd latency */ + atq_mark_fwd_latency(&ev); + + /* last stage in pipeline */ + if (unlikely((ev.sub_event_type % nb_stages) == laststage)) { + if (enable_fwd_latency) + cnt = perf_process_last_stage_latency(pool, + &ev, w, bufs, sz, cnt); + else + cnt = perf_process_last_stage(pool, &ev, w, + bufs, sz, cnt); + } else { + atq_fwd_event(&ev, sched_type_list, nb_stages); + while (rte_event_enqueue_burst(dev, port, &ev, 1) != 1) + rte_pause(); + } + } + return 0; +} + +static int +perf_atq_worker_burst(void *arg, const int enable_fwd_latency) +{ + PERF_WORKER_INIT; + uint16_t i; + /* +1 to avoid prefetch out of array check */ + struct rte_event ev[BURST_SIZE + 1]; + + while (t->done == false) { + uint16_t const nb_rx = rte_event_dequeue_burst(dev, port, ev, + BURST_SIZE, 0); + + if (!nb_rx) { + rte_pause(); + continue; + } + + for (i = 0; i < nb_rx; i++) { + if (enable_fwd_latency) { + rte_prefetch0(ev[i+1].event_ptr); + /* first stage in pipeline. + * mark time stamp to compute fwd latency + */ + atq_mark_fwd_latency(&ev[i]); + } + /* last stage in pipeline */ + if (unlikely((ev[i].sub_event_type % nb_stages) + == laststage)) { + if (enable_fwd_latency) + cnt = perf_process_last_stage_latency( + pool, &ev[i], w, bufs, sz, cnt); + else + cnt = perf_process_last_stage(pool, + &ev[i], w, bufs, sz, cnt); + + ev[i].op = RTE_EVENT_OP_RELEASE; + } else { + atq_fwd_event(&ev[i], sched_type_list, + nb_stages); + } + } + + uint16_t enq; + + enq = rte_event_enqueue_burst(dev, port, ev, nb_rx); + while (enq < nb_rx) { + enq += rte_event_enqueue_burst(dev, port, + ev + enq, nb_rx - enq); + } + } + return 0; +} + +static int +worker_wrapper(void *arg) +{ + struct worker_data *w = arg; + struct evt_options *opt = w->t->opt; + + /* FIXME: probe through device capability */ + const int burst = 1; + const int fwd_latency = opt->fwd_latency; + + /* allow compiler to optimize */ + if (!burst && !fwd_latency) + return perf_atq_worker(arg, 0); + else if (!burst && fwd_latency) + return perf_atq_worker(arg, 1); + else if (burst && !fwd_latency) + return perf_atq_worker_burst(arg, 0); + else if (burst && fwd_latency) + return perf_atq_worker_burst(arg, 1); + + rte_panic("invalid worker\n"); +} + +static int +perf_atq_launch_lcores(struct evt_test *test, struct evt_options *opt) +{ + return perf_launch_lcores(test, opt, worker_wrapper); +} + static int perf_atq_eventdev_setup(struct evt_test *test, struct evt_options *opt) { @@ -128,6 +268,7 @@ static const struct evt_test_ops perf_atq = { .test_setup = perf_test_setup, .mempool_setup = perf_mempool_setup, .eventdev_setup = perf_atq_eventdev_setup, + .launch_lcores = perf_atq_launch_lcores, .eventdev_destroy = perf_eventdev_destroy, .mempool_destroy = perf_mempool_destroy, .test_result = perf_test_result,