From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80074.outbound.protection.outlook.com [40.107.8.74]) by sourceware.org (Postfix) with ESMTPS id DA2DC3857353 for ; Mon, 16 May 2022 16:17:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DA2DC3857353 ARC-Seal: i=2; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=pass; b=X41NeQMsl9f9W8RTp5d1Ms/aIcsDv0X8RFb7DVf79gkvQRR8jC3EY9Qy0PMJpEcNUVZj1NaiUU0gJR1nOriwtQr2tJm0C9ippR8H8SnLfhd5EBdT9jqsp4qY8Dqr0v63uQOR7YNdg1t6BzTN0D+cDrxV70gNDFnYdhG/umBpctAlZaNtW1S9DT809X5HBSRQf9HVh357EuyV4gSIUrK4HgFJ29gnxjxadYsRUVLVae0L9Hcy7yjqYBrBoX7zI3cHRmPu14aChrSGdI4UWWhYF1zpzdBqZuFG72Agem/VTmLIi3gayt26vBVcXx4Ms+vd91yPYMJM+wpikpDn7+ad6g== 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=h7YllAvSJPrk/dntKDGE8T9qZd7W7Onoka1id2Ea/sQ=; b=F7YngBYUf8+zWYmuLkEsUTpU1ZGMyO3MT7f+ezYVYh+o8DjqHBeQwf38+nbXnFxfRj/bOStHMWigiKP9MeJlUhSbfjTcIFxLTIHiMiTLXDHmQQc9xfSpulnOnJzhPbVXKwlM1OPn0Kxm6h3E7HJFjozxe+I10mSWCHCwOjvuAHZUngfYtTvyaNJKzAd2erUChmcE8LKFGs0gkgX9YunqWttT0ENA1wUlcQ+37mvxlauUhE0aTEAxf74hUMxWr+7RKSya8iytHY1j4P/fCIg6yBZMfqdv7kKuxIMiZALy8MTIPjAnBP2XMbq1axE2pWSluOTZnciRlzztDqkxm5ZMMQ== 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 AS9PR07CA0049.eurprd07.prod.outlook.com (2603:10a6:20b:46b::7) by AM0PR08MB3250.eurprd08.prod.outlook.com (2603:10a6:208:5f::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.18; Mon, 16 May 2022 16:17:19 +0000 Received: from AM5EUR03FT025.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:46b:cafe::cb) by AS9PR07CA0049.outlook.office365.com (2603:10a6:20b:46b::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5273.5 via Frontend Transport; Mon, 16 May 2022 16:17:19 +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 AM5EUR03FT025.mail.protection.outlook.com (10.152.16.157) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13 via Frontend Transport; Mon, 16 May 2022 16:17:19 +0000 Received: ("Tessian outbound 32b886dfa5b9:v119"); Mon, 16 May 2022 16:17:19 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 57653b9e38f8139d X-CR-MTA-TID: 64aa7808 Received: from 95563de81515.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 84C63FA5-3804-497C-9252-16A162800B3F.1; Mon, 16 May 2022 16:17:12 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 95563de81515.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Mon, 16 May 2022 16:17:12 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=l9W50+ycSPnUhOO7/9nxn6gCe6Oq3Cbx3xnPpSyIHEvYQInFzOtyOdJ+TliQMR0DQxhPFz3IBHwPUQ4KpDEjw8DH25k4eEeM37f44mjQpkS+HW2zJpPtO4InBor1KMpyISDo464SNf2M0By2EorwdqK6Dyhy4pHOawqRLfRWK1R4O7O1w4jGGYVyPrZ55ddClgNfYG0TP+Rm6chT3Evo8pxNATO/f48iaxBm6q6bYkLwpr6wqeB2AXmJJ7pRRKXFkLFb2vSV0Gdzai7JSByjDCLQ1EibLk4Pz2erFZAn2WZu4Mthn9MzRQP+0d0bctVPDmI7uAHmoHCG4k5BHtMvaw== 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=h7YllAvSJPrk/dntKDGE8T9qZd7W7Onoka1id2Ea/sQ=; b=RawBmJ4GvYloRdiLw4Mzc5eVzNAvxnY7s4liR1WPldOUaNfuu20Yfc+0vTdz796MKPqpocYIYr2XmUjQ8ZDLr2FnERr1L7ZDgQGHifNcntmwk5Zq4tDBGQvL1dtzH56RPExVtf/DFe+aVQuCLXt5AxUI14/qicZzQNm8bY0jydlDQdar0lu9xr0Zh5lTnFZHbytd0UsyJ7d2F0hTWQ49JzZzLnNL8bfdRf/wJ1Ut7j5lxQmsKrIZLU0EFDj2fUr0Ji4s8IU77Hc+24GFLQ6iIrUKBbllZ+4XHuS8vCJvmlyABcrAEPzGGbSj4HcDuXFDMFfBzX0/cS+wlTcNnAhLpA== 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 PR3PR08MB5596.eurprd08.prod.outlook.com (2603:10a6:102:88::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13; Mon, 16 May 2022 16:17:11 +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.5250.018; Mon, 16 May 2022 16:17:11 +0000 From: Wilco Dijkstra To: Adhemerval Zanella CC: 'GNU C Library' , Florian Weimer Subject: Re: [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: AQHYW8OFHIu9ywRBHkqSqQZULYKQQq0HIU6AgBX/25A= Date: Mon, 16 May 2022 16:17:11 +0000 Message-ID: References: <970c59ff-f004-22ad-5132-c3137e63c87c@linaro.org> In-Reply-To: <970c59ff-f004-22ad-5132-c3137e63c87c@linaro.org> 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: a6f606cb-49de-4173-5673-08da37578d3a x-ms-traffictypediagnostic: PR3PR08MB5596:EE_|AM5EUR03FT025:EE_|AM0PR08MB3250: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: QxhL/9uLYdYREnkDHM5jIZuov1uu6GKFxNDnqovJGz+HdZVV+R9m20eRjniKIPh4LuHMpiof2DzIYb4wp6tLtaBTjhZSa4XYfAfQxm97yeLjIiqVYZ6w2ztjgrnhSJ7r+UkdD1PtzUl91IC9UdQ6zLrAbFJm2qBdXoCeVpK7XxZxAxZA+w7xz4MvWGNbLvRKKROh+GyOXkt6pPcZLQD+cB2kMC6MyzjxlFRBGOnwIJMHaB1T86xHJDwOn4Zc5Gc9ZIuFhG9+/K7CI4EJkU9eQdMvefKGkXyJPNVR4nq07TGcUgP4QH3PVM9hOVj5rbD8M8E+rHRdqk0SHiELbiIsnaDLhVfDKMs5CCZskg7PSMbvOdEdNyIvTxA+1fpT2s7sLtucoPfyN30Fk6qXwrV9NYtwHYdCzozsMGukIc06cVox6fJvvLgflM3BFyzaaK/zyRi976pr09FTvnD/SZJB+KXVyUKz+0utz4R2OByBCSknrxQ65WQpzPOTP26YqlDesq7k/6Cv0R7x8PC1FHKyIP9uY8Dqj8OJj27vh5+UEjVoDQOMPP1os//Oo7/u83IOnpKqYGI5+XiLwCpKUVhO7YDsC79Pyg0mPFxb9e6qPk0HjMeAjFz7r7waQmrr6Tkp2SiHdO5aclY4Zgl9PWBsleu4LwfOCM1WRe5CMqRPKaZSuOh+l7oJyiAX3ON5R7xJFrF6hHqItVTxX6AnjreUhFo7pCFquGaGVHulUz9UPUI= 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)(66946007)(54906003)(76116006)(5660300002)(86362001)(66556008)(55016003)(4326008)(38100700002)(6506007)(91956017)(83380400001)(64756008)(6916009)(66446008)(2906002)(9686003)(26005)(33656002)(7696005)(186003)(38070700005)(8936002)(508600001)(122000001)(316002)(71200400001)(66476007)(8676002)(52536014)(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: PR3PR08MB5596 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: AM5EUR03FT025.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 0c34be03-f921-47af-c842-08da37578826 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 1/KXdF7QlyOnpWfQUwgubi4bT7FRV0fUkno5C6ErOY8j5DLemvhyBbNzpyvtdzurWTgZT67bCISsOs1EhC2Up7dCED7Gc1f5uRCF5zHjzBCloNqa1sISIVZFqQG3MP7TpXX5MsWNrYmZpUZg0yiZU+otISvDVfnVOjIYQL6d92lW3smNYJgvAqvlpEOk/rjmAJoq3AFNVcpRi0VoxFOpfzSvIF5WM4K2NhN6TxoiBnJB/GFsLYz7l7d5G3WKaQ5Cdfj9D08XcWusxf21jeLX5FT73lFCfmy9s9glwk5FySEFH4ZsSLItUq1hoo4/5EJaTTOk8gdBwyRk6kMe8hyhfBR7TkGoOYx41QTiC2BTt6wwArbeskekRxNlwt8ZHMnV5b/uU9jmmd+4x9cYrnnwLad4r9fCjM2vbZMEYwQtZj2+UcewBGdpcFggaQiqeaT41fL5pbjow/5n/Qs8LOxRAJvepg6JtlMNP1vgGhNY/dkSF5JvOqEY0cG69JRRH7RBd7cVDnxKmBpI9Wmu1geaAcueieEk/Dvbev4INvuhQkYsFyVSwWpxtbyuZ0nXTd9DnZJ79GMe1078siX+z9nPxiKJT69Sn1UP2jAK8vM4sYI7ncnwInKtHBv4Cm+pixmZJhFxbIpQ4po30MYkRY+Hewziqz14EqnWSWh1HZodq5NcJh26GYLWJhYcd3YGZ56WInZx4jSsF9KSDIv02Fav4Q== 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)(40470700004)(46966006)(82310400005)(6506007)(186003)(52536014)(316002)(2906002)(508600001)(356005)(54906003)(9686003)(81166007)(26005)(55016003)(336012)(7696005)(70586007)(8676002)(6862004)(4326008)(70206006)(33656002)(36860700001)(5660300002)(8936002)(40460700003)(83380400001)(107886003)(86362001)(47076005)(41533002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 May 2022 16:17:19.6700 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6f606cb-49de-4173-5673-08da37578d3a 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: AM5EUR03FT025.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3250 X-Spam-Status: No, score=-5.8 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, 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-List-Received-Date: Mon, 16 May 2022 16:17:23 -0000 Hi Adhemerval,=0A= =0A= > The main problem is _IO_enable_locks is a clunky interface because it req= uires=0A= > flockfile to set _flags2 outside a lock region leading a possible racy is= sue =0A= > (BZ #27842).=A0 Moving to lock itself it will pretty much:=0A= =0A= It should be fine if we use a boolean instead of a flag. IIRC the IO struct= ure was=0A= externally exposed in Emacs, but if that is no longer the case then we coul= d=0A= change the structure safely.=0A= =0A= A quick check of rand() shows the following results for various locks and o= ptimizations=0A= (relative performance compared to unlocked case):=0A= =0A= 100% - rand() without locking=0A= 317% - standard lock (=3D current code)=0A= 108% - add SINGLE_THREAD_P optimization inside rand =0A= 112% - single threaded optimization in _libc_lock_lock=0A= 373% - standard recursive lock=0A= 129% - recursive lock with single thread optimization=0A= =0A= Locks are expensive and adding a single-thread optimization is important!= =0A= It looks recursive locks remain expensive (~20% slower) compared to special= ized=0A= single-thread optimization, but normal locks might be fast enough in most c= ases.=0A= =0A= > I think ideally we would like to model all internal locks to a futex-like= =0A= > so we can use the congestion optimization as described by Jens Gustedt=0A= > paper [1] which would allows us to move the counter and the lock to=0A= > same word.=A0 I don't think we can improve recursive locks without a 64-b= it=0A= > futex operation. =0A= =0A= How much lock recursion exists in GLIBC? An 8-bit counter is likely suffici= ent...=0A= With a 64-bit lock you could combine owner and count into a single value -= =0A= this may not help the multi-threaded case much, but could reduce the overhe= ad=0A= of the single-thread case compared to non-recursive locks.=0A= =0A= Cheers,=0A= Wilco=