From patchwork Tue Jan 19 03:59:10 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lukasz Wojciechowski X-Patchwork-Id: 86848 X-Patchwork-Delegate: david.marchand@redhat.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id DA33AA0A03; Tue, 19 Jan 2021 04:59:30 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 7C774140E35; Tue, 19 Jan 2021 04:59:25 +0100 (CET) Received: from mailout2.w1.samsung.com (mailout2.w1.samsung.com [210.118.77.12]) by mails.dpdk.org (Postfix) with ESMTP id 0A9AA140E2B for ; Tue, 19 Jan 2021 04:59:24 +0100 (CET) Received: from eucas1p2.samsung.com (unknown [182.198.249.207]) by mailout2.w1.samsung.com (KnoxPortal) with ESMTP id 20210119035923euoutp02b7adc07e7ee8c6c17de34c734ef78573~bhh-m2sL01506615066euoutp02R for ; Tue, 19 Jan 2021 03:59:23 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout2.w1.samsung.com 20210119035923euoutp02b7adc07e7ee8c6c17de34c734ef78573~bhh-m2sL01506615066euoutp02R DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1611028763; bh=Y5PVchVvmQ3Zeaxo+whQso2z+8/iuS+U3lMBH0J3Fng=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ckVQwVIpLaA8GvnpmI37VQbYeniQss1MBRDMBPOcQwiI3OouT8V3nRD/2gTp4zHXI JkT+WemlGYZ5+UxZnc1m9V9s3ytnEW3onF2N7c53oOycZXG/KEOtDrsD7lqc6/oed2 3V5Fg1PWSL1ldQkYGWf837JQjiFfZ7EXtTyT1zYc= Received: from eusmges3new.samsung.com (unknown [203.254.199.245]) by eucas1p1.samsung.com (KnoxPortal) with ESMTP id 20210119035922eucas1p17def111dd49c0ed75d2a0725981334fb~bhh_6xhOG2575625756eucas1p1Q; Tue, 19 Jan 2021 03:59:22 +0000 (GMT) Received: from eucas1p1.samsung.com ( [182.198.249.206]) by eusmges3new.samsung.com (EUCPMTA) with SMTP id 03.1F.45488.A1956006; Tue, 19 Jan 2021 03:59:22 +0000 (GMT) Received: from eusmtrp2.samsung.com (unknown [182.198.249.139]) by eucas1p1.samsung.com (KnoxPortal) with ESMTPA id 20210119035921eucas1p1aaea0d68975ba9481f200912eb10a40e~bhh9qoGJZ2776027760eucas1p1Q; Tue, 19 Jan 2021 03:59:21 +0000 (GMT) Received: from eusmgms2.samsung.com (unknown [182.198.249.180]) by eusmtrp2.samsung.com (KnoxPortal) with ESMTP id 20210119035921eusmtrp2de325e5f8b3ed776356b2a8f59e8ce4d~bhh9pxb1c3020830208eusmtrp2-; Tue, 19 Jan 2021 03:59:21 +0000 (GMT) X-AuditID: cbfec7f5-c77ff7000000b1b0-f1-6006591a2f32 Received: from eusmtip2.samsung.com ( [203.254.199.222]) by eusmgms2.samsung.com (EUCPMTA) with SMTP id 02.D9.16282.91956006; Tue, 19 Jan 2021 03:59:21 +0000 (GMT) Received: from localhost.localdomain (unknown [106.210.134.142]) by eusmtip2.samsung.com (KnoxPortal) with ESMTPA id 20210119035920eusmtip2c5cc058b5231937f42d10d5fbc1a4029~bhh9GYtjb1116911169eusmtip2p; Tue, 19 Jan 2021 03:59:20 +0000 (GMT) From: Lukasz Wojciechowski To: David Hunt , Bruce Richardson Cc: dev@dpdk.org, l.wojciechow@partner.samsung.com, stable@dpdk.org Date: Tue, 19 Jan 2021 04:59:10 +0100 Message-Id: <20210119035910.8324-2-l.wojciechow@partner.samsung.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210119035910.8324-1-l.wojciechow@partner.samsung.com> X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrOIsWRmVeSWpSXmKPExsWy7djPc7pSkWwJBisuS1jcWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHMUl01Kak5mWWqRvl0CV8bjm5oF N0QrTl6/y9TA+F+wi5GTQ0LARGL2hy9sXYxcHEICKxgltq3eww7hfGGUWPfiOTtIlZDAZ0aJ 9mYemI41bZdYIOLLGSVaXvtANHxllLj89iITSIJNwFbiyMyvrCC2iECYRHPzXqAGDg5mAWeJ J1/ZQMLCAh4Sd87/A5vPIqAq0XBmGjOIzSvgInH8+2lGiF3yEqs3HACLcwq4Skzp/cAEsktC 4Ce7RPPz06wQRS4SZ6f2sEPYwhKvjm+BsmUk/u+cD9WwjVHi6u+fjBDOfkaJ670roKqsJQ7/ +80GcZ2mxPpd+iCmhICjxNnzwhAmn8SNt+DQYgYyJ22bzgwR5pXoaBOCmKEn8bRnKiPM1j9r n7BA2B4S+6c8gAbuDEaJzh+tzBMY5Wch7FrAyLiKUTy1tDg3PbXYOC+1XK84Mbe4NC9dLzk/ dxMjMO5P/zv+dQfjilcf9Q4xMnEwHmKU4GBWEuEtXceUIMSbklhZlVqUH19UmpNafIhRmoNF SZx319Y18UIC6YklqdmpqQWpRTBZJg5OqQamzvkC+/b17lu+ak+LAH/dDRHP4jfcX1fpHHi4 RCo2/22g4vJFOzqUDoo0thydmZ8RHHRzVm+H/M4fHFv1890VYk89tApx4bbN7gnbW3HeXC5F 4em2d1LeyvM+nvg68Vf01greQ0H131w88v+Jxq7c77sj+dXynOcr8jcsO+Wu0xQUmKokxpYV znvrBgdfxIVo99oApcoEv0PxH7tm37wd/3155wQZvZZv6dzneSNWqX0pEZlklbfy/8Q7XlP3 1XWvd2xPCfnKVdpVbrytrn/5hg0bX3ZZrDqeKPbKsNn1SH5ZyXWj7DNzdaxD13+M0azzvbb2 RKapl87H5L2J3++dq5reYGt1+nlHaLjAYw0lluKMREMt5qLiRADj2xCHagMAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrJLMWRmVeSWpSXmKPExsVy+t/xe7qSkWwJBnvesVncWGVv0TfpI5PF u0/bmSye9axjtPjX8YfdgdXj14KlrB6L97xk8jj4bg9TAHOUnk1RfmlJqkJGfnGJrVK0oYWR nqGlhZ6RiaWeobF5rJWRqZK+nU1Kak5mWWqRvl2CXsbjm5oFN0QrTl6/y9TA+F+wi5GTQ0LA RGJN2yWWLkYuDiGBpYwSn+9dYO1i5ABKyEh8uCQAUSMs8edaFxtEzWdGiWVLjzKDJNgEbCWO zPwKVi8iECZxYqU/SJhZwF1iy+KpYCXCAh4Sd87/YwexWQRUJRrOTAOL8wq4SBz/fpoRYr68 xOoNB8DinAKuElN6PzCB2EJANY3P5jJOYORbwMiwilEktbQ4Nz232EivODG3uDQvXS85P3cT IzAMtx37uWUH48pXH/UOMTJxMB5ilOBgVhLhLV3HlCDEm5JYWZValB9fVJqTWnyI0RTojonM UqLJ+cBIyCuJNzQzMDU0MbM0MLU0M1YS5zU5siZeSCA9sSQ1OzW1ILUIpo+Jg1Oqgalvddyc GD4fz7jkBanWPk8PZh5QuHz4kdHJWelKTQW7eFOer56bH7n9Wnn+xVXKW2ewin3jOuQY82jX oXMrfn3gE8zPE0pcp33113HTziwXtffvT3ueKDtobveJxyDxefOvFVJzmNtmtn3hcpt6rSc3 VFQqtnX6jXX6UbFyF2Z9+9xsdPuP0KRVBVzl0utyTxztzY0qvDD9dHRof+aNQ5PuPj1jPkvU ZY/KDNWelTmtHEJV+gU53Wu4Dz/69T0w/INNZsWfLR8UWd4Vue27tMlmWkSSpqTQ4kStEHVB w6k/G75qqDou1InafUeKy+N6hYBhcBOfVJwK30WL+xWWezSYUz6kbdm1u/f/se+5iUosxRmJ hlrMRcWJAIKzXtbMAgAA X-CMS-MailID: 20210119035921eucas1p1aaea0d68975ba9481f200912eb10a40e X-Msg-Generator: CA X-RootMTR: 20210119035921eucas1p1aaea0d68975ba9481f200912eb10a40e X-EPHeader: CA CMS-TYPE: 201P X-CMS-RootMailID: 20210119035921eucas1p1aaea0d68975ba9481f200912eb10a40e References: <20210119035910.8324-1-l.wojciechow@partner.samsung.com> Subject: [dpdk-dev] [PATCH v1 1/1] test/distributor: prevent return buffer overload 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 Sender: "dev" The distributor library implementation uses a cyclic queue to store packets returned from workers. These packets can be later collected with rte_distributor_returned_pkts() call. However the queue has limited capacity. It is able to contain only 127 packets (RTE_DISTRIB_RETURNS_MASK). Big burst tests sent 1024 packets in 32 packets bursts without waiting until they are processed by the distributor. In case when tests were run with big number of worker threads, it happened that more than 127 packets were returned from workers and put into cyclic queue. This caused packets to be dropped by the queue, making them impossible to be collected later with rte_distributor_returned_pkts() calls. However the test waited for all packets to be returned infinitely. This patch fixes the big burst test by not allowing more than queue capacity packets to be processed at the same time, making impossible to drop any packets. It also cleans up duplicated code in the same test. Bugzilla ID: 612 Fixes: c0de0eb82e40 ("distributor: switch over to new API") Cc: david.hunt@intel.com Cc: stable@dpdk.org Signed-off-by: Lukasz Wojciechowski Tested-by: David Marchand Reviewed-by: David Hunt Reviewed-by: David Hunt --- app/test/test_distributor.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/test/test_distributor.c b/app/test/test_distributor.c index f4c6229f1..961f326cd 100644 --- a/app/test/test_distributor.c +++ b/app/test/test_distributor.c @@ -217,6 +217,8 @@ sanity_test(struct worker_params *wp, struct rte_mempool *p) clear_packet_count(); struct rte_mbuf *many_bufs[BIG_BATCH], *return_bufs[BIG_BATCH]; unsigned num_returned = 0; + unsigned int num_being_processed = 0; + unsigned int return_buffer_capacity = 127;/* RTE_DISTRIB_RETURNS_MASK */ /* flush out any remaining packets */ rte_distributor_flush(db); @@ -233,16 +235,16 @@ sanity_test(struct worker_params *wp, struct rte_mempool *p) for (i = 0; i < BIG_BATCH/BURST; i++) { rte_distributor_process(db, &many_bufs[i*BURST], BURST); - count = rte_distributor_returned_pkts(db, - &return_bufs[num_returned], - BIG_BATCH - num_returned); - num_returned += count; + num_being_processed += BURST; + do { + count = rte_distributor_returned_pkts(db, + &return_bufs[num_returned], + BIG_BATCH - num_returned); + num_being_processed -= count; + num_returned += count; + rte_distributor_flush(db); + } while (num_being_processed + BURST > return_buffer_capacity); } - rte_distributor_flush(db); - count = rte_distributor_returned_pkts(db, - &return_bufs[num_returned], - BIG_BATCH - num_returned); - num_returned += count; retries = 0; do { rte_distributor_flush(db);