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 6109043676; Tue, 5 Dec 2023 10:53:13 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1B79B42DF7; Tue, 5 Dec 2023 10:53:13 +0100 (CET) Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.13]) by mails.dpdk.org (Postfix) with ESMTP id DBB5342D45 for ; Tue, 5 Dec 2023 10:53:10 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1701769991; x=1733305991; h=date:from:to:cc:subject:message-id:references: content-transfer-encoding:in-reply-to:mime-version; bh=Qk7VImRRY8dccxXM9vcUYs/nNSRTXYb7gra8ISwc5tI=; b=EAgjCW4TM1LjNNCC2HXshq94lF6HPTuh6hXr1R4VSjDo3DgFpSztW2Rc MUP3ypp9zaQY68Wm9a1m0jIjh/UUKxpY9AMVWnwbKgpv6b6UrCkpZvHC8 AtnHkzNmBwTbOWPzqX6fEeQUW5dTGII1oOvwHJA8I1gJfg5DYH9sU/Vf7 8+xB+++VZt370O7Q16FIzicolUoZ6Mv8fvCu1XvnXLXEByw9T0R/peLrZ 8vV3pvvblz/FcND3+9dRRD4Wp01+QN5xmevZAFcD6gX9xDQ3m+kVu00H/ j/8Sn/7Sj6gp2xLcHvm6p9vC4rDNsGCfrTQ80/fjiF5+qOpumi4ZOTFce w==; X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="923370" X-IronPort-AV: E=Sophos;i="6.04,251,1695711600"; d="scan'208";a="923370" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orvoesa105.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 05 Dec 2023 01:53:09 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10914"; a="770853578" X-IronPort-AV: E=Sophos;i="6.04,251,1695711600"; d="scan'208";a="770853578" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 05 Dec 2023 01:53:09 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Tue, 5 Dec 2023 01:53:08 -0800 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Tue, 5 Dec 2023 01:53:08 -0800 Received: from NAM04-BN8-obe.outbound.protection.outlook.com (104.47.74.41) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.34; Tue, 5 Dec 2023 01:53:08 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=d01KG7JOLUMpFLsSWdqenzsfbnR+mGsauBZ/pJhGYoh4yv5mGrrJdjQ/JdyxUNZ35JWwA3SqLcCUb3GhXKLtS4gjaUyy5a3yg5INQoAum58LGleh/aqp1SoAjwkgmuTHZPOekvHrYiAqf5uz0xCn1s1DKH6eqUkBj6H7iBPXCCMDgS6C3kcgrqwKqYlcimFAIcZOn3v/bSBLzTMCQJlbrWyB07mYFt79227t66F5H9P338Hc+vm40jtr2pjB7lW8Oa72WIdGpU1p1jVl0l56VedmpV7QiUAmDlDMqHK6imzCT1FS93d35vOHtWPdSopr1U0Fag1wanrWTj6gSpQM8g== 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=bkNAWgLRoSiM01GPFXcVbA9VoY0k7svmgeJ5VOBNyY8=; b=SPQVNWae9N0cWOLVzlXa8TI3iNlO0bUApz9O1hITkOF+uwYL9Vpnu7OMucREY/0WmPVlIG6OvTrX4da22a00G+/nKvruLXJIEVlp5rFzGLDLE1VwrutqrRKG6pbCy/+tFZGDUcjNdA5uzD+LTPo+FYwZfXzjzsY333OaJg8RXRiUR0VCbGDGNMMVQ8M3BuTuYVO9PIpvdLDXs+wduE2A+dDWPyUGKJNCK91qdO6aKDhlEKvca+S62WVngb9V+G7ymj54jLja/z4m+O/52PDazllivkgDT3Tbjuygvao0ENe6i8h73+8KM7u+F2yCkug/Wi+6HOubqkdnam2iMirIlA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; Received: from CY8PR11MB7290.namprd11.prod.outlook.com (2603:10b6:930:9a::6) by SA2PR11MB4796.namprd11.prod.outlook.com (2603:10b6:806:117::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7046.34; Tue, 5 Dec 2023 09:53:06 +0000 Received: from CY8PR11MB7290.namprd11.prod.outlook.com ([fe80::6977:983c:6f22:8747]) by CY8PR11MB7290.namprd11.prod.outlook.com ([fe80::6977:983c:6f22:8747%7]) with mapi id 15.20.7046.032; Tue, 5 Dec 2023 09:53:06 +0000 Date: Tue, 5 Dec 2023 09:53:02 +0000 From: Bruce Richardson To: Morten =?iso-8859-1?Q?Br=F8rup?= CC: Feifei Wang , , , "Ruifeng Wang" Subject: Re: [PATCH v1] mbuf: remove the redundant code for mbuf prefree Message-ID: References: <20231204023910.1714667-1-feifei.wang2@arm.com> <98CBD80474FA8B44BF855DF32C47DC35E9F081@smartserver.smartshare.dk> <19ea4729-bdfa-4ee3-83d6-5922c1b42c0a@arm.com> <98CBD80474FA8B44BF855DF32C47DC35E9F08C@smartserver.smartshare.dk> Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35E9F08C@smartserver.smartshare.dk> X-ClientProxiedBy: DUZPR01CA0191.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b6::20) To CY8PR11MB7290.namprd11.prod.outlook.com (2603:10b6:930:9a::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: CY8PR11MB7290:EE_|SA2PR11MB4796:EE_ X-MS-Office365-Filtering-Correlation-Id: 099f2938-4c8e-4027-503a-08dbf577fae8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9giEI9oO3aB9RMQdm3fQ9fdmoHH42I6bvSMLeFdXYk281V7w84cd6huIyFL/2zJOjY+rSZTxpC7k5VlmP3IRhNo4TJK4cQRA8aN1Km67K6fNjCEm3lqpmFf1CcidNWpRc4Gr9kn7zvMU2ewnM0vEb7fIuA5cw/aboR1a21EqKqN07+xtexnbAVrrngTb+guh8sjhwxaWzKM1ldEbsNau55iB78biBNHpNwKGXsE7pGCSc9vqytD/ipootGhnfu6eZioXKSkhklQS3VEvipQTeKAcxLj0Pf7YrBvma17a4vpG/c//Ci0pdQSTfLkfkuYk3wjFPA135gq2Ccw+NkGtMbWoo/8jSAl2nWT1MbaPNIs24Ke8RMFSjlhkCfLa49pe45tBOWIMLVxN1WeucRsgkU6vjbstu9nf3CEv01Q1tq9OUaVzD1r/rFuX1dujrLc151QCqgf0FQrh+2Y8ZPYpJHl26giIyfsZkpgoU7UKelfEG1RCOBSzX5+WmZ3K7e9ahC5kol9epDYSRK/GtPQSrRbe6zx+zd2dPwZ0DVbtDME= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY8PR11MB7290.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(346002)(396003)(376002)(136003)(39860400002)(230922051799003)(1800799012)(186009)(64100799003)(451199024)(6512007)(478600001)(6506007)(6486002)(8676002)(966005)(6666004)(26005)(66574015)(54906003)(4326008)(66476007)(66556008)(66946007)(8936002)(6916009)(316002)(83380400001)(38100700002)(5660300002)(82960400001)(41300700001)(2906002)(44832011)(86362001); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?VWpBNHRwUHlTZFRneFpyWExCNVlZZVRRTnVyVUdBU2grTk9qdVFJS0dBZ1A2?= =?utf-8?B?Rzd5UmJPd05KLzRVWFdxcy9UYndXZVBwN2lJWjE5dXhhU0tlLzhPK1ZYcGJ5?= =?utf-8?B?b2ZuVExZSkRzbDI2YVJRR1hqd2lqMFllQzRVQzI1Zy9WWkNaN3NxTXIxTWUx?= =?utf-8?B?OEpHdDFOVWhvSU44MFpvNU1QVzdYbXFLcHFuaGdOaHl6TGZyYWF5cWYyU3gv?= =?utf-8?B?Y2FVWXBhckRmb0ZZNnJ2WjBCREVueDRxUDM4c0haN0g0dzFoTXZHV2ZDWWhV?= =?utf-8?B?UU11UFRpbzdpRHpyNlJGN25vYnJYVWNLeUlYMlRFcmFkZG9zQnVWa1VpOUVW?= =?utf-8?B?VW1TaWlMK1ZwSWtoeVhnRXdLcGEyQitQTVRCRmRacFkyNHJhR0w0NU1lU1BB?= =?utf-8?B?bk1SMGtyYnhDS3dvTzdQdWxNeTVEM2tQTlhnMDUxYXcyandiTDJIQ013YTJo?= =?utf-8?B?T1dacm11aHFzRVp6QWd6NkhIeVF0UmJkcWpuTTNUNFlnQ2lZQmM3TXpSRnFM?= =?utf-8?B?NEN3RXJTTVl1Vnk4am5NRkxSaHFiZThJclpaUm92OXFkSHJGbXdWcWRNY042?= =?utf-8?B?aFV0cndQYm1YZ3BIMm9Kend6STRHWlE2dlFPWDZ4UHR1NjRWSzliWE5KbllK?= =?utf-8?B?SC90cHpBUzUrRDlaSTZnVUhCSVdtN2pOM211WjBoK3lQTFhibFZmaW02S2RI?= =?utf-8?B?WTBQYysycDQ5dG9GN3F6Um9vZU00QVd3WWc1NnFPS3U4VVJNQWdrZ1lHd0tF?= =?utf-8?B?U3M1YWhNUHFGUFJOVEhhRWkzVHlFOEkxdmFaaXpYc0haMmQ3OC9ocEpJSVo1?= =?utf-8?B?NjVwV2ZCRXd6d3kyMy9YVm40WXVSMWUwY3FoVDlNOHFYUEFzQ1BuTXJYb3hS?= =?utf-8?B?THBLS3ErNFZnQ0d0ZTZrYTMyZ0hoa2oxZ3pjdUVuczR6SWl2dTlnaVZ4ZGo5?= =?utf-8?B?R3E2T1N3ZzlqclFqNnNLdmVKRU1hbzlyaTdWemNBS2ZiWkp6KzVtOFFTRkc2?= =?utf-8?B?Y3VLQy93Qk51cU5MUkdvQVM3ZFVIN05NN1dRdXM0VjcveWlaWkd0L3ZGV2ZJ?= =?utf-8?B?VGtnVGs3QTcrVEw0K1lqd1ZiUHlWRVNLTFBuRGsyRXBHcjRUbXEwQUFsbXlO?= =?utf-8?B?NHlYYVN0dUN4WllJR0tkOWJiTXpaYlRsSGIrVGFRY0pBVkpyOGpOUEV1VmRL?= =?utf-8?B?enA4RHVMZlpic0RnUjRKR0hHUWtjVzd5MVBrRmtuYy9ld0hieVJrOTgvU0VC?= =?utf-8?B?QXRDSWFlS3FVdDcxNHVWYW04UnoyYmVwTTBuRGI5QTdubGMxNjVGcGJEMWpE?= =?utf-8?B?MmtXc0VmQUhPRWNkLzRVV1c3Z1ppOXpjVDN1alVIU2syUVRCdGFmL3U0dDk0?= =?utf-8?B?QU5HaGs4MDFZaXBtZEc0RG1pNnRWNXgzZUl2czl0eFphM1hxMzMwRWJNTjBH?= =?utf-8?B?UkgwNm43WUFLTW1vUlp4RS8vSWRlQ3VaYXRnblZoemN3eFlRQUc5QTlmT0sz?= =?utf-8?B?WFF1cEFvcERvZnU4c08xakt2aG5lQUR5NWl0cFdEbVB6ME9MR1E5RGluUEZo?= =?utf-8?B?cmx5dVp3ZGVxVnhGRnpwb1FhTFg1YXRxaFRSa3NocnhUWkdMdnlkRTBaS0lP?= =?utf-8?B?RmtDUi94NHR1enN4M1dQUzY2MzJCQzdMU0VjNHUzdWx5QktmM1lua05JN2dn?= =?utf-8?B?TUthOVM1T3l0bFdRQ3BmdEI3Nnpldklkc3MwdGVEa2pYT1orTGp5dzFkZmN3?= =?utf-8?B?b0dYcmZWR2lpaTNISmNrV05mbHJwakJQakJud3I1dk5hZlJPa2RiczJTUVpI?= =?utf-8?B?YlVuVnh5WVBNa2FIaElVQjdKaktxZkhHYzdRcEpvbkNXY1l2NE44VWJJaWhQ?= =?utf-8?B?YmgxbzJmZU01MHNUcmxESXYxbnpKZG9SQkkxVjdlQ0JEaVJVQ3RmQUQzbDNk?= =?utf-8?B?V0sycVJEMjdkUG1GMXJDNi9vWHFPWGNMWkRqQit5d0dCQzJCUldvQmNBNlNX?= =?utf-8?B?WHU3SXZiVWhURnFEcW5oNURzdnlEMG1YTU1TS2MySmZZSEVaV2pDbmtPWjB0?= =?utf-8?B?STZxNUJYb004S0N5bVFJdDJoWFVSUkR1cXVMaVlreHZsY2EyeVlwb3Vnblo5?= =?utf-8?B?SlRoTGIvU1dWM1BjTk5LTTJkNXhRUkZPQXF0bysvdHpkb0ZNMm5QRVFTWm9u?= =?utf-8?B?aEE9PQ==?= X-MS-Exchange-CrossTenant-Network-Message-Id: 099f2938-4c8e-4027-503a-08dbf577fae8 X-MS-Exchange-CrossTenant-AuthSource: CY8PR11MB7290.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Dec 2023 09:53:06.4753 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: PNBTtNn1I01yEj4Aszmsrm92ydnfcQCU5LJ05jz02FPTnVxbPc6DJd15cAUbt0acyQn6DwL53B6602tHJk3JfayYPHcKFr3/7C4sL/gUP2E= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA2PR11MB4796 X-OriginatorOrg: intel.com 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 On Tue, Dec 05, 2023 at 09:04:08AM +0100, Morten Brørup wrote: > > From: Feifei Wang [mailto:feifei.wang2@arm.com] > > Sent: Tuesday, 5 December 2023 04.13 > > > > 在 2023/12/4 15:41, Morten Brørup 写道: > > >> From: Feifei Wang [mailto:feifei.wang2@arm.com] > > >> Sent: Monday, 4 December 2023 03.39 > > >> > > >> For 'rte_pktmbuf_prefree_seg' function, 'rte_mbuf_refcnt_read(m) == > > 1' > > >> and '__rte_mbuf_refcnt_update(m, -1) == 0' are the same cases where > > >> mbuf's refcnt value should be 1. Thus we can simplify the code and > > >> remove the redundant part. > > >> > > >> Furthermore, according to [1], when the mbuf is stored inside the > > >> mempool, the m->refcnt value should be 1. And then it is detached > > >> from its parent for an indirect mbuf. Thus change the description of > > >> 'rte_pktmbuf_prefree_seg' function. > > >> > > >> [1] > > https://patches.dpdk.org/project/dpdk/patch/20170404162807.20157-4- > > >> olivier.matz@6wind.com/ > > >> > > >> Suggested-by: Ruifeng Wang > > >> Signed-off-by: Feifei Wang > > >> --- > > >> lib/mbuf/rte_mbuf.h | 22 +++------------------- > > >> 1 file changed, 3 insertions(+), 19 deletions(-) > > >> > > >> diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h > > >> index 286b32b788..42e9b50d51 100644 > > >> --- a/lib/mbuf/rte_mbuf.h > > >> +++ b/lib/mbuf/rte_mbuf.h > > >> @@ -1328,7 +1328,7 @@ static inline int > > >> __rte_pktmbuf_pinned_extbuf_decref(struct rte_mbuf *m) > > >> * > > >> * This function does the same than a free, except that it does > > not > > >> * return the segment to its pool. > > >> - * It decreases the reference counter, and if it reaches 0, it is > > >> + * It decreases the reference counter, and if it reaches 1, it is > > > No, the original description is correct. > > > However, the reference counter is set to 1 when put back in the pool, > > as a shortcut so it isn't needed to be set back to 1 when allocated > > from the pool. > > > > Ok. > > > > for 'else if (__rte_mbuf_refcnt_update(m, -1) == 0)' case, it is easy > > to > > understand. > > > > but for '(likely(rte_mbuf_refcnt_read(m) == 1))' case, I think this > > will > > create misleading. dpdk users maybe difficult to understand why the > > code > > can not match the function description. > > > > Maybe we need some explanation here? > > Agree. It is quite counterintuitive (but a clever optimization!) that the reference counter is 1 instead of 0 when free. > > Something like: > > static __rte_always_inline struct rte_mbuf * > rte_pktmbuf_prefree_seg(struct rte_mbuf *m) > { > __rte_mbuf_sanity_check(m, 0); > > if (likely(rte_mbuf_refcnt_read(m) == 1)) { > + /* This branch is a performance optimized variant of the branch below. > + * If the reference counter would reach 0 when decrementing it, > + * do not decrement it to 0 and then initialize it to 1; > + * just leave it at 1, thereby avoiding writing to memory. > + */ > Even more than avoiding writing to memory, we know that with a refcount of 1, this thread is the only thread using this mbuf, so we don't need to use atomic operations at all. The decrement we avoid is an especially expensive one because of the atomic aspect of it. /Bruce