From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60067.outbound.protection.outlook.com [40.107.6.67]) by sourceware.org (Postfix) with ESMTPS id 5E01F385840F for ; Fri, 12 Nov 2021 17:24:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5E01F385840F Received: from DB6PR1001CA0023.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:4:b7::33) by AM9PR08MB6145.eurprd08.prod.outlook.com (2603:10a6:20b:2dd::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Fri, 12 Nov 2021 17:24:05 +0000 Received: from DB5EUR03FT059.eop-EUR03.prod.protection.outlook.com (2603:10a6:4:b7:cafe::fd) by DB6PR1001CA0023.outlook.office365.com (2603:10a6:4:b7::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Fri, 12 Nov 2021 17:24:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT059.mail.protection.outlook.com (10.152.21.175) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Fri, 12 Nov 2021 17:24:05 +0000 Received: ("Tessian outbound f7440cb8a4c6:v109"); Fri, 12 Nov 2021 17:24:05 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: df36f22ef4ced139 X-CR-MTA-TID: 64aa7808 Received: from 19b5c482143e.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 4C306E78-C5FD-4EEC-860B-268E1773CDB1.1; Fri, 12 Nov 2021 17:23:56 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 19b5c482143e.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 12 Nov 2021 17:23:56 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CeISA/Sozrcz0vDjHmMNw84zCWptgAzZ5HE1h29oDv4jxExrAy5DoPa+E4OLWCcc0jMz178ylsaNf0cHb3JCdJlNhBWfoKfxRGU6sH6TkTISX8NYNhNlX+8SoVCXjY0lPRP6fEudyinzjVLOpEJ7UJahnKsUw/0qSDzhhEQDA5PTNNuYDkWpoOMRVwW8QkrxHfgqMuKAla6YjiXheeUk1g5Z/ZA2qr8Lse9I8jQ80tyFhKB7/LAkwJPYxCdHDMQd0Qxi88uHltIKg7pPiWDmEwvkrm/TOWXo5xsk/xTPXppW2LrbKkKUrffUVMDmK52Nq1L8EuWIISSUWbhyudkRrA== 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=AzZgPHpkgRs1jdqgdn11ajGcCNdnSjeTYssKoNoAXBE=; b=U6wp4KjK4MTG4vH0BtHu0Cp+agPc8JBFx8xGS0dbtNnQnYQ+sOqY2nvmLILuZsKwtMyjuDN7M5u41IdDD6lUA8QmzOJT3PVId4aOjNkR3iyPBBQqPQTM4VJ5Q0ZfA8Bn+I+E2fztXSn40YOWgit3R3PsEna1M2KZxLd9gjcnXjZXLQ/6M2Q5yA6iopYSMAy18dbcHRPwl0pf22WHNLY5RDPa3IjVYFZszv/PHPG0UNJUF/mduFt+WYVaZOSu6f/vmVB3Tj/xBdlAfSZvaGQLzEa1fpCowD1FDSmR9Ht9x0j8n5ZRQVgADDWfC+bCHSBHEKiHRaFrXmD2yBcj9XDyhg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by DB9PR08MB7130.eurprd08.prod.outlook.com (2603:10a6:10:2c8::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.19; Fri, 12 Nov 2021 17:23:52 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::198d:f67e:761b:ce0d]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::198d:f67e:761b:ce0d%3]) with mapi id 15.20.4690.019; Fri, 12 Nov 2021 17:23:52 +0000 Date: Fri, 12 Nov 2021 17:23:47 +0000 From: Szabolcs Nagy To: "H.J. Lu" Cc: libc-alpha@sourceware.org, Florian Weimer , Andreas Schwab , "Paul A . Clarke" , Arjan van de Ven Subject: Re: [PATCH v6 1/4] Add LLL_MUTEX_READ_LOCK [BZ #28537] Message-ID: <20211112172347.GD1982710@arm.com> References: <20211111162428.2286605-1-hjl.tools@gmail.com> <20211111162428.2286605-2-hjl.tools@gmail.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20211111162428.2286605-2-hjl.tools@gmail.com> X-ClientProxiedBy: LO2P123CA0044.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600::32) To DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) MIME-Version: 1.0 Received: from arm.com (217.140.106.51) by LO2P123CA0044.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4690.15 via Frontend Transport; Fri, 12 Nov 2021 17:23:51 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f1d33de9-8501-4530-da24-08d9a6013a6a X-MS-TrafficTypeDiagnostic: DB9PR08MB7130:|AM9PR08MB6145: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:8273;OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: rBBTdnagHP/hN3VjyN4JrRZCEMNc0ttgzhF2JmkCnZj5io1W4zQZd512sw6bo8Yo+46TXBdhvh/RUW418+mF93NpDO+qVushnKl+N61gZo3VNlrWQK60IzmTDfdsd8umYmn8vdFQ7fUBIk+0+N11nJa2KTCopMKeDuWPvuxh3Kjd37cTs7nzn8ZS9IDNFg1ccZ2CnT2I95mzM3eHiQHw28tQxK3/7fPA4Ps27EPuo6GK02xwPUv5MMlKTKhBtfQNhtL/D/5tKPkl5hEyqx95lg4gFCLcEio2S20Z8dene7Vc+aTLzSa2jbsEqzz855vu1sb8orBbWqtGE/tXGdYlYtFsLEEWsf5llBKjHpOO28+U5A0W67YdHirPYVS4/oaWBtTGXRIjeS/X3M2KvQqC4aQpKTvQCHD5+h6wrRnl0eHyY0OiTGKGk8KQ0TcHC0yP2BIWQSZ1/xPNITXF0UQxNtQ5vMH0gpFEtRqEMECstACelJtNlpFU7V5sQh+iipiMx2GvmJZUCi+SsASnZCZorBbthVsQ3ahsOAikWZhJa8IIx15D5PogAFExYWF+M+b3fDoWexVG6okEd5p1DkC7O+sGArm8ikIMkdV6YVJbeH0Mxf0UAqt4fXPSWzp7TiYz3sXP8gKhPFSoHadyf9HqaRduF2srAMFMyPSdrj/MA/wdOc6Vp7Ge2FjPHqjBIX2G4ad/DMKdzJdtTRrooFpP3XxWMqDrZt4s1j7t+3JaWZXoomK3tGBGm4utRYhPCgVhj8hdHQbbzn8WMt/m2SkVqQ== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB9PR08MB7179.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(6666004)(316002)(956004)(44832011)(2616005)(5660300002)(7696005)(33656002)(8936002)(66476007)(66946007)(66556008)(186003)(966005)(8886007)(6916009)(1076003)(83380400001)(38100700002)(8676002)(54906003)(36756003)(2906002)(52116002)(508600001)(4326008)(86362001)(26005)(38350700002)(55016002); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB7130 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT059.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 6dac1213-9e8d-41a1-331f-08d9a6013258 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: SfLMiy4BEluv+FvEb5fu+fism7zVS/4JD+aNTIl/pYKCL2OxUB/K+3nykq7N85OA6PD8dJ3oLjKFFvX4i4ER6OFIJ07KAWyHgdPgp0P6c+/REHJZbbsSsVVoqaOrgxOQqYSDcNtjmY6T0wjhDyDS2lsuqZf4pQnNNH4YMGdhVQz87D7j5iHu1Bc1p0+fyib3Q6rLd4QkHZAz9SRn/Ad9kCbb54oycF6qkUJgpNBS3wwPkfgky7bdmCXFkvpBnaA+RoIJfkaDACUDOkRn6XNBqJluq0DmtTQ1wYG2VJ4MIigs7WOSKgfU1baUIfh3DTGya1eG9nx5AXvefQCWkd/BNjWYP6c4A3rvTA6gDCq9NnZ8rmYzVJs/qwwK0LDagxYaonq/rzE5Uy3SgvcIoEGLXKtegNJLum6MKnDC2nNX6LtIANcpnOlulRHqDKJjZDv7pq9gkXRNBcwQ6ikR9bN1KDKmkbH+20ZgKsbQt+ub21FDHyBHZa28ZLNaxzh0fChsVM86A1ZoHFRKPR3gjxBgBFJTQrfVBoq++irYK7J3UIdg6Y88/1aOmADeP/gy7mbG+d4gNnLCBzEbRBj+WO+1EROXQ6uc5VDu8t1RawUBUR27Gos7e2RAdRarcDSyvfGC0Yo4ICQGWvWB0FZFPD9aJOCcCkdhoEJ/D0/Jhuex6rcwnaVFM+miv876a8td0ApA7aHI6VKOkqvB3Si2JQYz4uAAz4Ai03ZQpABruzKCy0NFtQWbVS2oogIsqP1N9UAPiIiRG3riDx3bEYe4EkSFNg== X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(36840700001)(46966006)(70206006)(55016002)(47076005)(8886007)(86362001)(356005)(186003)(336012)(81166007)(6862004)(1076003)(82310400003)(508600001)(4326008)(2906002)(107886003)(316002)(83380400001)(2616005)(6666004)(956004)(70586007)(36756003)(8676002)(8936002)(7696005)(44832011)(33656002)(966005)(36860700001)(5660300002)(26005)(54906003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Nov 2021 17:24:05.4825 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f1d33de9-8501-4530-da24-08d9a6013a6a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT059.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6145 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2021 17:24:10 -0000 The 11/11/2021 08:24, H.J. Lu via Libc-alpha wrote: > CAS instruction is expensive. From the x86 CPU's point of view, getting > a cache line for writing is more expensive than reading. See Appendix > A.2 Spinlock in: > > https://www.intel.com/content/dam/www/public/us/en/documents/white-papers/xeon-lock-scaling-analysis-paper.pdf > > The full compare and swap will grab the cache line exclusive and cause > excessive cache line bouncing. > > Add LLL_MUTEX_READ_LOCK to do an atomic load and skip CAS in spinlock > loop if compare may fail to reduce cache line bouncing on contended locks. essentially the contended loop goes from if (cas(lock, 0, 1)) break; to if (read(lock) == 0) if (cas(lock, 0, 1)) break; i believe this helps on aarch64 too if it is only done after contention is detected. since the first cas access to lock is kept as is, the common, uncontended case should not be affected. this looks good to me. > --- > nptl/pthread_mutex_lock.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c > index 2bd41767e0..72058c719c 100644 > --- a/nptl/pthread_mutex_lock.c > +++ b/nptl/pthread_mutex_lock.c > @@ -64,6 +64,11 @@ lll_mutex_lock_optimized (pthread_mutex_t *mutex) > # define PTHREAD_MUTEX_VERSIONS 1 > #endif > > +#ifndef LLL_MUTEX_READ_LOCK > +# define LLL_MUTEX_READ_LOCK(mutex) \ > + atomic_load_relaxed (&(mutex)->__data.__lock) > +#endif > + > static int __pthread_mutex_lock_full (pthread_mutex_t *mutex) > __attribute_noinline__; > > @@ -141,6 +146,8 @@ PTHREAD_MUTEX_LOCK (pthread_mutex_t *mutex) > break; > } > atomic_spin_nop (); > + if (LLL_MUTEX_READ_LOCK (mutex) != 0) > + continue; > } > while (LLL_MUTEX_TRYLOCK (mutex) != 0); > > -- > 2.33.1 >