From patchwork Thu Aug 11 16:22:56 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 56681 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id B140B385AC1B for ; Thu, 11 Aug 2022 16:23:38 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B140B385AC1B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1660235018; bh=iNhUsfXe3mb0aFR+XadmTOAXHoAEKypMnRhVFARgZqA=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=i0z2YNwL55/L5u6+5bhVwroBQ+IggMGcdCjH+GcnRojQQmUrbjxKfwfg5nQFNyW7B wpwh3asUhS04ziEo1KEeLUfVAnWJHxqWtGirDW6OXXxBoXOLb3x5vS/6soAuEMu+uM Vw6TeOwZSpHPngh6ZFuWV7T9k7igC4KSQOKggxcE= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50047.outbound.protection.outlook.com [40.107.5.47]) by sourceware.org (Postfix) with ESMTPS id 772523857C4B for ; Thu, 11 Aug 2022 16:23:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 772523857C4B ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=dyX1Ed7h3E5yk86VROS1p/npbZaOwm8p71zZWfmEtvK2uNbmVGVWGmLYsyau4ctxzgHZV8y+KWi5nuwPqs5baI95e0AW/5qoM70W5jfp+VldgpLwrij3kcVp1xKgGEbqe3Pmc2k49RfKejSJGrVu39xdRhmuV9mSJ8P0pUSsLXRbH/fx7A3fCr0X3pM+PlyKz6M1rK7BDAVyKg5a9f4FRY4lwq1rYqHgw3QXky3Ny+Rl9dovO2IBRvFQSkwQ4i4hyPEvyjzUgf+8bOqz93X/KVcPNZE2azUIYblnOs7b/hun4Bm/ppkpij/C4jcLWkctrqK2r3ivTQk4Le+BQVoEuA== ARC-Message-Signature: i=2; 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=iNhUsfXe3mb0aFR+XadmTOAXHoAEKypMnRhVFARgZqA=; b=TAOhQb+5rOZ2f3LSkyudLHbURmIHwNXjljoZA9J2oh6uP/75a75mr/MHLTifsBCKaxTyGDUUuDFBZyVBIn2w3R0Yr1Xvkg3TpY5QLAc54WPt7A6s9Cb7BCKbbT/CaUQSOTXEBDAz79l+cq6Qmbr7VDdCr1QYQmjmJ/WbfYDfrCiFO6MwgfUTd6/TCWdLbcrHYh6abaWDUVJ17Tg3bEtkAWRqyiPyEVooKkT/pzCyuGjqv/D1Xv00rmNqD18bsHM0/Y2Tgr34ZoxSI9pIMq5QdSXnAl9lc4+9IN+V94Cs8jjTGFtpe01+dkPfQlQnu3SY8VNigsciVs++BuhVCb65Hw== ARC-Authentication-Results: i=2; mx.microsoft.com 1; spf=pass (sender ip is 63.35.35.123) smtp.rcpttodomain=sourceware.org smtp.mailfrom=arm.com; dmarc=pass (p=none sp=none pct=100) action=none header.from=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com; arc=pass (0 oda=1 ltdi=1 spf=[1,1,smtp.mailfrom=arm.com] dkim=[1,1,header.d=arm.com] dmarc=[1,1,header.from=arm.com]) Received: from AS9PR04CA0079.eurprd04.prod.outlook.com (2603:10a6:20b:48b::23) by AM4PR08MB2756.eurprd08.prod.outlook.com (2603:10a6:205:c::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.17; Thu, 11 Aug 2022 16:23:12 +0000 Received: from AM5EUR03FT038.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:48b:cafe::9e) by AS9PR04CA0079.outlook.office365.com (2603:10a6:20b:48b::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.12 via Frontend Transport; Thu, 11 Aug 2022 16:23:12 +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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by AM5EUR03FT038.mail.protection.outlook.com (10.152.17.118) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5525.11 via Frontend Transport; Thu, 11 Aug 2022 16:23:11 +0000 Received: ("Tessian outbound 2af316122c7a:v123"); Thu, 11 Aug 2022 16:23:11 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 34e3ddc0dad8109c X-CR-MTA-TID: 64aa7808 Received: from c68342dd23c7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 61358E27-3692-42C6-83B8-0F3AD7D3CAB4.1; Thu, 11 Aug 2022 16:23:04 +0000 Received: from EUR05-DB8-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id c68342dd23c7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 11 Aug 2022 16:23:04 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Jvli0Y+AaTxb0Pu443lywYhGVdw48IQ5597qvAB9htlM28Pb2nsF2jyQ34yGIqlRlEs2KuYLWLvNfjpkXMsAyvkN4c4ZccqwKzc6f4cKtXjBjOx3oPmYB5f9Mknl44O2b6QvaYX+u7r5eeXgt0t0+xxOAlgznDWGSRqj2aoi/sNnXUJkHQpKv9FJgubhuoSs+Eo0GC/iyrXSfODDXj5Z5VDz6otgEdqAf6tw+YkYU6c6CxsqqUgjxE11PDf/jb9/kzrwl8wrJka1n74/zfnxvOt1FVxx7HLllJTSx7JxIpz2lNMrBzBI6v/WGA/cHN4tJPKfR1rBoUSJ+h5h41KrCg== 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=iNhUsfXe3mb0aFR+XadmTOAXHoAEKypMnRhVFARgZqA=; b=gxF2NfXt2u7cgqmutYFeSJ/+L60B9jvV9ZVfXakzSioOuAG9hovKckrkwXkHRc8qa4YvHpdZNmb2QMSwtl2GnLS2m2p+aD5XQ6tquKtvOCUn+T8y05NXS8utbwf+nuhQQMu0NIhUBi0C9EbixI9S4Uvkp+UUsldq0BUrAyIg56zOUiYiXHZEuskzRSoQXji34kKkf+DefAW0E+S2g+E7a/a/lnsubZ9rrd/btxQ0Sv2GS3zMkO9oN7bCrleAWJYtr1MF3THiRb6bSuc/bT4e5rP23uaqyBqYz8tGhl+1iTMUGjIBEcTNEG7OMtrTGX6alCxWz7ru/Vvnxa595ADopw== 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 Received: from AM5PR0801MB1668.eurprd08.prod.outlook.com (2603:10a6:203:3c::14) by AM0PR08MB4484.eurprd08.prod.outlook.com (2603:10a6:208:139::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5504.16; Thu, 11 Aug 2022 16:23:02 +0000 Received: from AM5PR0801MB1668.eurprd08.prod.outlook.com ([fe80::e434:1b13:e8ed:9e14]) by AM5PR0801MB1668.eurprd08.prod.outlook.com ([fe80::e434:1b13:e8ed:9e14%11]) with mapi id 15.20.5525.010; Thu, 11 Aug 2022 16:22:56 +0000 To: 'GNU C Library' Subject: [PATCH] Improve performance of libc locks Thread-Topic: [PATCH] Improve performance of libc locks Thread-Index: AQHYrZ5WlKF2715S40mQdP77vhgIrA== Date: Thu, 11 Aug 2022 16:22:56 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-MS-Office365-Filtering-Correlation-Id: 7474c595-497c-4789-21b4-08da7bb5c923 x-ms-traffictypediagnostic: AM0PR08MB4484:EE_|AM5EUR03FT038:EE_|AM4PR08MB2756:EE_ x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: zDLK1/NfQ4uFtmM2n3EQ2iXltww8xbWSgUTcKmoml8GvFGdBrcQwwP7e4YEnKG/EGaI4WowoYoR1ktWwKFzBi1cYq0WsmB5L0Sun4Z8p+3IAG2OWVCUIBZ4T8PbLmSqNukKl3Hgc+RiuJF6nJnr77UB9oQbrfHSqFy5difqdiI9B+sAPwD4MV3FcZyAfvUFIK2KUYoQUR9Gfk506Hk5e5ocPu5tkcPF4XBGdW58U4vg/xReXxhoKfojiZIn6IL0y30J1whz0QJWxEcS11Hq7dL3pqqpQQWv7Q16G5GP8/Fg7XIQ/IyxRrnqLicuQnebl/7wXhkp1ipLwho9zCJ7IDBZ3mSUO76p6kHaUOyf/dupVvsu0CJjmUOJTerf62C5fE8AlEVdvUE1oGVVsJvRjmGLg2AoPqcNv0pZDVcIGgzelhXsCAaiXkLJ9we+DvXbAh4aciCgex3QsOpT63Dz74ya0doTL7cqpUukzxeWP7JBZ9svN2q2SP5Y4p6ECqvj5qxAUtdGNLcgMFU6mxr68BgEFmcxwDB0Gr9lQUl20PLGUWeeOrkg28bURwLZQipSWrc3BMzO8EXzptqpf1GFla9bzKrviMtf6/g/Jq7SGltwe1c3NsdxbufulJdXZZ9YzDCsUNY0rbkG3lVtivfbKIBDO/tdbQ+XzlsowppXoOreu41RxSwPdj0qUgMhQDWJw/bJL9R1hfKYM5TAXPwjI1Lb5qEvuhUioPfKmMYjdwKgdEqPJYHZTdOgXNitqV6Iaema0M6bFnelHi3+lbfjsKC3bjEUNThcIKMZlWxbdjzc= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM5PR0801MB1668.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230016)(4636009)(376002)(39860400002)(346002)(136003)(366004)(396003)(6916009)(66476007)(6506007)(7696005)(8676002)(64756008)(66446008)(91956017)(66556008)(8936002)(5660300002)(9686003)(26005)(76116006)(186003)(52536014)(2906002)(41300700001)(66946007)(38070700005)(33656002)(86362001)(55016003)(83380400001)(478600001)(316002)(71200400001)(38100700002)(122000001); DIR:OUT; SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB4484 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: AM5EUR03FT038.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 24894247-e675-4bf6-26d7-08da7bb5c010 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ewBz2p5x9B7xZt6AWdEOaXM4X5bRwgj4ol9rY3EoqyEkh+wfAZ0PXIydINInZYvTWEpISY0kxg3XDP+TlfX18vV8r2n2APo6E8p3jEXWKfCDOLEmSg8KJl2SNGHGZtlRYa2RVXBiG44SGzUlrQf95tSyaV2XzPiJG3B3oOBpZ92eNE9B0b/i91hLDGu+O7cBVm0sZvj680DvlcUfqr3NMtQkTqj5mflpJiFWdLGvKfmhFnlgKCe73s7ohnTqT6X+c7dQoTpvydizfj/Rcq5szyV58mog+4BkLe0H9sMsI5LztmKAQ+jv243ow5llipBwfkJv12lXoEyWm6sepWpv1xHOeznpYeZbl8lrAUgTH5aywc9nkuKug2vxHGkSSumKeBlJOamoOQaAxbu7gl6s3MGWBqx/avXL0Ecs8gALXrecaWAfdIWq8krwDnB/dSaAoYYwNOUIaTOJ2dEskO4CGLCW8PkG1wut+C6AamYQ1/mVKtA6iyoDSutpM49an/Fs8VQ9O3IfvjG0nYR334/pxgNDP9S+B6cSux5L8mi1imGm8gXM363CyNJQdNz/I3eoA5waATK1/kGGJYsoUwXYC8g2jc4ubJHZIuSAx7sPR7nkb8BJE6lvjv+FGMp1a6oYOtNaJxjIbjZYp7zWH0cBpWZdOhX/MkRcCqpbgICJVKBxQ4bUYNjWbJ3h0/fktUz2ty4NrRjdVw4Xx/vHMY4IfGvCCuIOeuMt9QDZG2kuLznmQX1jUY+YrDvgLu/GaTqWTxhka8gVJhx5PmMqq4p4QQtlT7+JVXMB2WRW8aIpDf6VIcHPs9/7iI8RxOUcN1Y1 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:(13230016)(4636009)(39860400002)(396003)(376002)(136003)(346002)(40470700004)(36840700001)(46966006)(316002)(6916009)(70206006)(5660300002)(478600001)(40460700003)(82310400005)(8676002)(86362001)(55016003)(40480700001)(33656002)(8936002)(2906002)(52536014)(70586007)(36860700001)(83380400001)(82740400003)(81166007)(47076005)(356005)(9686003)(41300700001)(7696005)(6506007)(336012)(26005)(186003); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Aug 2022 16:23:11.9541 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7474c595-497c-4789-21b4-08da7bb5c923 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: AM5EUR03FT038.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM4PR08MB2756 X-Spam-Status: No, score=-11.2 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, FORGED_SPF_HELO, GIT_PATCH_0, KAM_DMARC_NONE, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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-Patchwork-Original-From: Wilco Dijkstra via Libc-alpha From: Wilco Dijkstra Reply-To: Wilco Dijkstra Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" Improve performance of libc locks by adding a fast path for the single-threaded case. On Neoverse V1, a loop using rand() improved 3.6 times. Multithreaded performance is unchanged. Passes regress on AArch64, OK for commit? diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h index d3a6837fd212f3f5dfd80f46d0e9ce365042ae0c..ccdb11fee6f14069d0b936be93d0f0fa6d8bc30b 100644 --- a/sysdeps/nptl/libc-lockP.h +++ b/sysdeps/nptl/libc-lockP.h @@ -108,7 +108,14 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0"); #define __libc_rwlock_fini(NAME) ((void) 0) /* Lock the named lock variable. */ -#define __libc_lock_lock(NAME) ({ lll_lock (NAME, LLL_PRIVATE); 0; }) +#define __libc_lock_lock(NAME) \ + ({ \ + if (SINGLE_THREAD_P) \ + (NAME) = LLL_LOCK_INITIALIZER_LOCKED; \ + else \ + lll_lock (NAME, LLL_PRIVATE); \ + 0; \ + }) #define __libc_rwlock_rdlock(NAME) __pthread_rwlock_rdlock (&(NAME)) #define __libc_rwlock_wrlock(NAME) __pthread_rwlock_wrlock (&(NAME)) @@ -116,7 +123,14 @@ _Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0"); #define __libc_lock_trylock(NAME) lll_trylock (NAME) /* Unlock the named lock variable. */ -#define __libc_lock_unlock(NAME) lll_unlock (NAME, LLL_PRIVATE) +#define __libc_lock_unlock(NAME) \ + ({ \ + if (SINGLE_THREAD_P) \ + (NAME) = LLL_LOCK_INITIALIZER; \ + else \ + lll_unlock (NAME, LLL_PRIVATE); \ + 0; \ + }) #define __libc_rwlock_unlock(NAME) __pthread_rwlock_unlock (&(NAME)) #if IS_IN (rtld)