From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70079.outbound.protection.outlook.com [40.107.7.79]) by sourceware.org (Postfix) with ESMTPS id 1D06F3949F2F for ; Fri, 29 Apr 2022 13:04:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 1D06F3949F2F ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=DUiyxDYFtk23KiI75Gxu1k2JeFekCbw7VO+3pnqyz3bz7qyoxpQ+pBDqjIRyiaqb0PRd5rbYEc2EhEQjOBw7WObNtOLgJ+iQlAhIntWNPejcdJNfE7Z72ZTqt1Y5OfUzGPw2+dmtSsWtxlvC7jzhQw08VbqnLqmzkgVTPPteAUPWinL2S34/zovM1K6q3KbkJdHlsCUPDkBte7O+Jt/2gmnf8Xx6/gbWm2cxBkb73kGqP7ly6N4GC50/+A/5HTvQHCdL1V4w4lBVazbTNjJc0BF0isZeFyxsJ2XAHTTGB2qjCYWEhon+aaF0xcvBhYr54qmJqI5qImWUa7hDCrkCRQ== 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=EhMYtUfnOxnplcBKQmrNdQ755IAyNaXTY5NOUlHTQaw=; b=HKO67NH6DjyspQa0oiH4Z2qxmf0qaaHRsb2CkRg1Jv3EBVxn317svjpo8alK/dMG5jCt5cz8fn1oIi0M8KtN7IEVcYjIG/AtfiSXE3j94pZKY10C9868cLPX9YrEgV9BVa6Hdxu9ZoAirYtRnpCBXShAQ+eASqlTR34xnG2dP2XQPLv+qtdNNCxiqM/iU7dAo0Lb5Rrai9Bod8umSE8Avpzgo+CV0LRSsRlnL+j4/bg6XK7Rcp7uu9KtDmhdLvUTYfq9H3553dnzuRP4ggMdFwhmcamEpFM9pFLI6Gx9NYQtbAKEAFkNfixoZgYkCQxEmRztzdU0eOdGpgeP6wXbwA== 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 AS9PR06CA0265.eurprd06.prod.outlook.com (2603:10a6:20b:45f::34) by DBBPR08MB4314.eurprd08.prod.outlook.com (2603:10a6:10:ce::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 29 Apr 2022 13:04:50 +0000 Received: from VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:45f:cafe::81) by AS9PR06CA0265.outlook.office365.com (2603:10a6:20b:45f::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.14 via Frontend Transport; Fri, 29 Apr 2022 13:04:50 +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 VE1EUR03FT027.mail.protection.outlook.com (10.152.18.154) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.12 via Frontend Transport; Fri, 29 Apr 2022 13:04:50 +0000 Received: ("Tessian outbound ab7864ef57f2:v118"); Fri, 29 Apr 2022 13:04:50 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: a60fa404b7d6f976 X-CR-MTA-TID: 64aa7808 Received: from 1a6ac1f915b7.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 32AB7381-8F6B-4563-A844-955AF5E4835F.1; Fri, 29 Apr 2022 13:04:42 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1a6ac1f915b7.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 29 Apr 2022 13:04:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CTCXlGbPl5FWBy6raM+bvKf2bWvnlYN5kR55K6PaHnyWxA1jx1osnKGPQjMDa7ORCubKm2ofKEpU57Dtcnzs+vl1wdmn/0LLhVjyPkd8BrDynKgurv0K2sfc6RHwDnlQxVi9pLQafwWyYrfziTRsjMnfd0+jQIkKp8IWqYnWUuDelcGm4TP/w8I3lry4NfEdhvVlT/SEH9CdwMNJPPqNp1p1B/ftrSpttt66BHYXYhu7VUDerWfDL6hmrU4M+e67i9sppSC9d6ULaQyGi7ZiehK3rOVKaqdC4JEli6yOiXvqBiETmKqNtVcGU5MZl6DRwXl3vj3W7GbbzwdWy2RHFg== 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=EhMYtUfnOxnplcBKQmrNdQ755IAyNaXTY5NOUlHTQaw=; b=ofKdlk8IlpgmUb1Rt82eq/zPIWbwvjfOghNJ+nIubcM8+HvLTbMb3GUkTpk4Vg+MJ/B4TtkFnaLLSTAL5sU/qQsIKgz54aAYVv65UKc6JuQ63Hjag77tWnDMa8mEzaexteqbLLaFry9tudAIJibkurWnNhimsGVThwGPK022gTMjejkua42CQmPmecS59dcJJI1IMs17h4UMUYd8vuThfey85wOaCAg1KVQ4AQ0RxUV0RbKR0708DIIFJw9b/JbsfrmYWQlElRiRuiH6i3b8vPzCXArB8RSSwvIcE8t6SlR6WqpS+srT2gbMmJhJriYP/rUeuP/UfKirCuR0m8e15w== 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 DB6PR0801MB1879.eurprd08.prod.outlook.com (2603:10a6:4:73::9) by AM5PR0801MB1633.eurprd08.prod.outlook.com (2603:10a6:203:3c::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Fri, 29 Apr 2022 13:04:41 +0000 Received: from DB6PR0801MB1879.eurprd08.prod.outlook.com ([fe80::4c79:5ff3:ff33:7ee1]) by DB6PR0801MB1879.eurprd08.prod.outlook.com ([fe80::4c79:5ff3:ff33:7ee1%11]) with mapi id 15.20.5186.023; Fri, 29 Apr 2022 13:04:40 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: 'GNU C Library' , Florian Weimer Subject: [PATCH v2 3/4] Move libio lock single-thread optimization to generic libc-lock (BZ #27842) Thread-Topic: [PATCH v2 3/4] Move libio lock single-thread optimization to generic libc-lock (BZ #27842) Thread-Index: AQHYW8OFHIu9ywRBHkqSqQZULYKQQg== Date: Fri, 29 Apr 2022 13:04:40 +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: 2aba4145-7ef8-4156-562d-08da29e0d867 x-ms-traffictypediagnostic: AM5PR0801MB1633:EE_|VE1EUR03FT027:EE_|DBBPR08MB4314:EE_ X-Microsoft-Antispam-PRVS: 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: T0wTcDkFpij+9uthyCxG5CpIofZplb0SjnMXTRwajznzxCDuyDGJVnle6ILLStratFlbOyUlkChut/UUMVFJkU3D4QslL9jrlzX+cWHyOievymocXB1vGPKxEIq4r+p+hC3mceBf9dw94DUg/yhX9MFo3Qqd/nU2yKlHOBMtaoKLUOr20ZHZIoKJyCdZ9Z+TjjVqGcCdoOSWqSdmDuj33q/ZUQZU0mQBi5gwcjQBemrsr98I9ZxH6JA7sRScS7X4O3vYznyc/WsesEnw868UPQLaL0W/iUPcHHoVvDasurw6KYf8MHHTYeKe/iWENEqGtWAyc5VJ7Dtrkni8Y0+TE2EhpoMw2Lga7M+TWz/bKeO0kPm8HIzZfi8ZVb0uSfmGbCQ7d8ba6yk0lq0Q6RILZMc9QIRkMnD6bBktBo5zkZNmdNrF8qBCsEafrU7VfJo8vhYPJiaE3BxKlsgCllPnsFh+Iw9xLaoHbLpqGo67cEo+ivi7jtaArZqvvzwgUv5uQqpz/khjb9kETbixSpXYVU4ybOVDdiEt9v+9qt6INuYWMFhNM+yFDTjs+J9+7OOlZzppgo1KFNFhgkLSHqmVI7DV0k5JV2n3v5/8c7/syRnC5Wae5uPL5lombKBo8wii+DJuOWFsu1VO4lvA1OE5YaaLMLqqxQtsZN4WIx5d4/lPoSTuUNuYBOhVh8i2JySYT7zgAhFu7ylZ8co9qg/FRTdELiMnkwOVH8OIFefwqXU= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB6PR0801MB1879.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230001)(4636009)(366004)(186003)(7696005)(5660300002)(66556008)(2906002)(66946007)(76116006)(55016003)(91956017)(66476007)(316002)(33656002)(52536014)(83380400001)(6916009)(8676002)(66446008)(64756008)(4326008)(8936002)(54906003)(71200400001)(508600001)(86362001)(38100700002)(38070700005)(26005)(122000001)(9686003)(6506007)(41533002); DIR:OUT; SFP:1101; Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0801MB1633 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: VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 82f312bb-938d-4282-bb31-08da29e0d28a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rtmikNO9Lmv6wkcLd1w/vCBWtiRAXDEzoOuSY8eJ7NNxC/bYmpdEVGmqdGS0JDyQriTfQCMK0zescrEX5NtmHmWEEPlQssCdu8aPxXTMGnX9ntbfvvzobaM5fcX6/HPF6upwybOxYzFaFv3IXzlb4d/yDjuPpM5FL0qpFZbIwJZaJdXXdmFMKs92cLgs69zSJvhTK8smZUsuF3rRtBKIsqHUcBF6XAqqjFF1u3Vx/3KaIM8EQaFnB5Crog0CMTSiS1jDdigXMV2vHEIp47+gZ4RfIhljtQiMm24RnBRTLIpTeuW+y3VtC8et1MZRfLRNyUcUnfjr1EfS93txIfTGIoN24XS/coda/qjrzg629jBXw+l8MVQQ+QH5gHeDzUWtl/Z9E+tYfZmFQdw5AlUKbH8sgbHzHU5tNzSPf1zbjZxK58OO3Rg5vz1eTog4X35kYDWPzLP1qYTQ9YNCgNgV6qyHEidhccBGuwmn2fP0YpW+n7h4r6++PbCmmACxtfrFkmGXVhEczuVP+C9NWLM7bu7M1pCuua7KVx4pV+bRPMK9NL5YBhTj5OzS2e4MS2miFpWnmnQwp6s2q99pNIN0hgjrBkZLPljzoWwUn0md6Lx9dhchqgqTuU0tbMFDRM/Lz3y20RiQzttPoRpmhJfjQ8CgRLD2+2G08tfT6avD1xeh/G8l7jN4E3zOaQH5giub0rjGA7MZzJoz4YjVWKK7Ig== 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:(13230001)(4636009)(36840700001)(46966006)(40470700004)(5660300002)(52536014)(33656002)(336012)(86362001)(6506007)(9686003)(40460700003)(26005)(7696005)(2906002)(356005)(36860700001)(8936002)(55016003)(47076005)(82310400005)(107886003)(81166007)(186003)(83380400001)(8676002)(6862004)(54906003)(316002)(4326008)(70206006)(70586007)(508600001)(41533002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2022 13:04:50.5342 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 2aba4145-7ef8-4156-562d-08da29e0d867 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: VE1EUR03FT027.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4314 X-Spam-Status: No, score=-5.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, 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, 29 Apr 2022 13:04:55 -0000 Hi Adhemerval,=0A= =0A= /* Lock the recursive named lock variable. */=0A= #define __libc_lock_lock_recursive(NAME) \=0A= do { = \=0A= void *self =3D THREAD_SELF; = \=0A= if ((NAME).owner !=3D self) = \=0A= { \=0A= if (SINGLE_THREAD_P) \=0A= (NAME).lock =3D 1; \=0A= else \=0A= lll_lock ((NAME).lock, LLL_PRIVATE); = \=0A= (NAME).owner =3D self; = \=0A= } = \=0A= ++(NAME).cnt; = \=0A= } while (0)=0A= =0A= =0A= The issue is that recursive locks are very expensive. Even with the single = thread=0A= optimization there are still 5 memory accesses just to take a free lock! Wh= ile I'm in=0A= favour of improving locks like above, I think removing the single threaded = optimizations=0A= from libio will cause major performance regressions in getc, putc, feof etc= .=0A= =0A= Basically doing single threaded optimizations at the highest level will alw= ays be faster=0A= than doing it at the lock level. That doesn't mean optimizing general locks= isn't useful,=0A= however all it does is reduce the need to add single threaded optimizations= rather than=0A= make them completely unnecessary.=0A= =0A= > Or if we are bounded to keep the current practice to check for single-thr= ead and=0A= > skip locks internally. It would be good to consolidate all the internal = lock=0A= > usage and have the single-thread lock optimizations on all locks, not onl= y on=0A= > pthread_mutex_lock.=0A= =0A= Yes, we should have single threaded optimization on all locks, including __= libc_lock_lock.=0A= Recursive locks can be optimized both for single threaded and multi-threade= d case.=0A= I'm wondering whether we could use the lock variable itself to store useful= data (since most=0A= ISAs will allow 64 bits). Then all you need to check is the .lock field and= only if it is already=0A= taken do the extra checks for ownership and incrementing recursion counter.= =0A= =0A= Cheers,=0A= Wilco=0A=