From patchwork Fri Mar 5 21:36:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 42335 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 3717E386F82F; Fri, 5 Mar 2021 21:37:00 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3717E386F82F DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1614980220; bh=2i3tvICPu3YPlGW/8s9jhs9E8D7LrDOe48JtShh6rjY=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=umNqrqDlbFSCeRSWA54fG0/X7b92hBRBmFvXZIfsz3wLUE6C7K9zlfIQYZyvByOJy 8px0Y6HYk152U02cdmLSoNGnE39icD/ugtK9aEfWIPowTqpRIP5e8+JTBGq66k9l/1 VHz+MXHExOknlQHn6fxoRopL7Jo4HNyMkwTH41C8= X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05on2040.outbound.protection.outlook.com [40.107.22.40]) by sourceware.org (Postfix) with ESMTPS id E832938618CC for ; Fri, 5 Mar 2021 21:36:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org E832938618CC Received: from AM6P195CA0099.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::40) by AS8PR08MB6629.eurprd08.prod.outlook.com (2603:10a6:20b:319::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17; Fri, 5 Mar 2021 21:36:55 +0000 Received: from VE1EUR03FT037.eop-EUR03.prod.protection.outlook.com (2603:10a6:209:86:cafe::e2) by AM6P195CA0099.outlook.office365.com (2603:10a6:209:86::40) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17 via Frontend Transport; Fri, 5 Mar 2021 21:36:55 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; 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 VE1EUR03FT037.mail.protection.outlook.com (10.152.19.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3912.17 via Frontend Transport; Fri, 5 Mar 2021 21:36:55 +0000 Received: ("Tessian outbound dd71fb35fd76:v71"); Fri, 05 Mar 2021 21:36:54 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: eb32340df3c5bb58 X-CR-MTA-TID: 64aa7808 Received: from 92399fb1132e.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 1FA5BBD5-2D2A-4BAA-87C1-9332EB07C522.1; Fri, 05 Mar 2021 21:36:48 +0000 Received: from EUR02-AM5-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 92399fb1132e.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Fri, 05 Mar 2021 21:36:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QVi0hSaEvG0fc9tHnima4zpuPcOdH/7W+aQjX6ISuIkSlEpWM2b4bmwfMWTI2e3QK0EFRXv4DdlNuWU/+GiEBF8PHQX/q9aQlnoOMxZd1cNRmpbTIJfN/6IOj7BbgMFqghVMeaQGVJHw85udobCMWo632d8RU5Nz5fjomD3h5xINONt254FNwl/UfHGCeN1U186JUsLUCBznsIxwjM/h2E33iksf6IrViDmne/aAW1BLLAORz5MneKUP2vozXRRsPxEWBCMvXO8/Ne/WKsXL4TqwKD/8UHzqbnkAhTwxbjg+jSt9V1SD8ensHOboAAG40wvZP9nRc1ZZzCmCl/5SLA== 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-SenderADCheck; bh=2i3tvICPu3YPlGW/8s9jhs9E8D7LrDOe48JtShh6rjY=; b=NrKbeqblkz3VEsbXlSvG5eddnMNwpTtnsN3b4xyhAFbB3bOHNLxPOqd6fZNevDbA9ipRIRFA79pg9We2MDqK3CoSr0G4Nvmhog1O3MhD7OumC1vxWDxImie+m9WvlOZxT7tEyk4YseydxPX2DHwWxZCUjqU+Fl2IU9zuwAZnMG8WuhQOp+9lfudUcdGSm1+8lvswBD/CGXR5grsE1tZGg2RI8Ub5qlR92XgY5Ek3d/T23NvnkU6J5xZAE/6QAxPnTXreFzu++SteKF5oMj+u3d+zC9znHCGZ5iZT43jrNX2yMYCgsTMEPx8OJv93e9wrhlRahNyGAK5MPKhijZwCvQ== 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 VE1PR08MB5599.eurprd08.prod.outlook.com (2603:10a6:800:1a1::12) by VI1PR08MB2831.eurprd08.prod.outlook.com (2603:10a6:802:20::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3890.19; Fri, 5 Mar 2021 21:36:46 +0000 Received: from VE1PR08MB5599.eurprd08.prod.outlook.com ([fe80::385c:f8ff:ee16:3a4d]) by VE1PR08MB5599.eurprd08.prod.outlook.com ([fe80::385c:f8ff:ee16:3a4d%6]) with mapi id 15.20.3912.022; Fri, 5 Mar 2021 21:36:46 +0000 To: Szabolcs Nagy , "dj@redhat.com" Subject: [PATCH 00/16] memory tagging improvements Thread-Topic: [PATCH 00/16] memory tagging improvements Thread-Index: AQHXEgMcUsmuLszqrkOXz8AMm8O6Ug== Date: Fri, 5 Mar 2021 21:36:46 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.24.249.100] x-ms-publictraffictype: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: ac4ebbc7-2cf5-4b45-8f5b-08d8e01ecc27 x-ms-traffictypediagnostic: VI1PR08MB2831:|AS8PR08MB6629: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:9508;OLM:9508; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: DZaPWz0nD3zzG+Fbcyr1yCBZvRgbGf0rKmTGg0VhijbyLhw+VKU2KyXQxIEJeOxBtJS2IvxjWinp0c8t5rE3nS09nYzOeGzdXjBAZiohmLvgl947nCD+GB7jxZ/1rizPqdjSv0H1URJolsoG/eohpM61ndbJ9yJy9d0+BZR/RSVWNyQnDPX5HtRgXIMWI35iUcDFZCgKn8iS6HQMoyffuKcuFhoEFTX+atWA9YFaUli6yN4q+F9veAcyjqIX/j8lLNG+ZupOZOWXYwEUMC2aawnMXNY8OYqSKMxCfyVdMVsz+1fbrvuExvPOc56kW4MqZDEfTNTKvj4FRn864brr8OqCSujglS+33BMWRRsPiVkQfpRC9T++GPELvehn2iJOBiFHEPZGY1AcyzEqsYFJv1qYNv0bJEDF2KPAiIN8dRDoeU1jmtectDp7EhmUb+XPFoagHxZyc0NaRKgkoDee0tlk8+FWf1NfvcN3sVPgbzCosg6FG48N9juqsElgi3dDtQ2dbmTRCNruqM/vMU18nw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR08MB5599.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(39860400002)(346002)(136003)(376002)(4326008)(66556008)(76116006)(66446008)(86362001)(66946007)(71200400001)(7696005)(5660300002)(186003)(316002)(83380400001)(64756008)(52536014)(2906002)(478600001)(110136005)(33656002)(9686003)(26005)(8676002)(55016002)(8936002)(6506007)(91956017)(66476007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?iso-8859-1?q?DEgnjSigR0+oIlYYLUtyO2jF8?= =?iso-8859-1?q?SGWJeZ2XrxV04GNfhdAFUvyQeROnK8EB+NFEDAPr+jsGcIL5bz+x0jUQuHkr?= =?iso-8859-1?q?SgSZ8D/M2+UngTsfSH8IT+2w2RNYQSk765drB///3k3Bq0jaE4bmG0i/AYKH?= =?iso-8859-1?q?E+4vXudEFZkmgeQKy3/WnsIJ44qXuyhdteTdRIEUHKiH6k7+se3hIVH1sOk5?= =?iso-8859-1?q?DfRuxExV8Yftpq56P9zCWuxREZo3uTOsezWlHcPvgc0+3obUohFQ/wHUqeDn?= =?iso-8859-1?q?oV679u8C3GfoluEAtcGXh7MeoE9AXNNk3Zz6JSY5LeL2Ev6Az8YLDaDQFeZy?= =?iso-8859-1?q?WGS/an6al4GYe58nIZVaHY/deo9oDdRrZk8f42Zm2t/gPyL1q7g0t/vKwEkh?= =?iso-8859-1?q?hdmn7kRsdX7oK3Av7BoeLxtZxLVxNNapaWIH705mqboO+XUEHnIdEzhmEg9F?= =?iso-8859-1?q?NEb5ISjJx8gD6jK0EERXYRrCv1WSElIbKJxKtXQ7VgCi6a9mKoHi3ZEyKz2Y?= =?iso-8859-1?q?yOF8gDnr6hsbAgVtnCm4AUxoQgnpT0ZUFFJk5rxOy7+F61risnbQ3Dbzng4D?= =?iso-8859-1?q?6LA/fFTd2H+D2nHL67yS+xFWedLzUJ7+NekdHve+g1wp6fsj+QyrqaVgPwKk?= =?iso-8859-1?q?66eOW/rWfeaupa5JWx1D6Qxy6tfaHh5piqSwO9XdN4mWNVMxEr8ngizX1VuG?= =?iso-8859-1?q?A2GwoLm81M17GeRbayHEobW3V4b0GjadHRDNnjKY54VePnmAyCBX51lqJfTM?= =?iso-8859-1?q?L0g6xF7/j81XGVRsGhIUNQd3fBCwJB2znwAFLGWt6I8wpBgRllcHXCdRB4AZ?= =?iso-8859-1?q?De6EKX5u9KT43Tv4BPELTCH7wu3I37eDN9Sl1VmO5dwpPioRcQ2NpTVccO6V?= =?iso-8859-1?q?hJKK4vGuCa0vP1GRf7HGLc1QcorVuTyXMESZHeVoR0FjJi0+gmEtcWj8dlLp?= =?iso-8859-1?q?x9EJHZkCHuaX9XU2UeXk9L5WE48Hnocf7rQzSo9tWnnkghk59n45v7dsG+E5?= =?iso-8859-1?q?N5JSRRPRL0769AuQHgK0v5Famx6kERn0mmmuH+KdXb/gQNFeRfD4GttJ1bYW?= =?iso-8859-1?q?UEA63Y3QJmty9gyDMfLGGdqgh4XtpXZ66IsYSmQ8fWgqa729e1acZeG+DAts?= =?iso-8859-1?q?cdmjUCuHD81i9yN2rw+CEK5ZQVMoxLs9ERTVrbJ8wo8a5T7gnO+YhRLNRpVf?= =?iso-8859-1?q?jJe9zp6h4o3KkFzKjClxwkMmp6pm1lcmYuq/JvCRnbSToQEPYjP8je/1bq1e?= =?iso-8859-1?q?cNTV0QiEK245/A7iE05KWHQPM+TRmiwU463b5DkMDqlnQjSHX0khBXr0EoGu?= =?iso-8859-1?q?OVDWSZBkSZ3PpyrwNiPMpczDyMwnblVUyAKjYw=3D?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB2831 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 85773643-db59-493e-6b5b-08d8e01ec6cd X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: d7QtJDgVNCP93wmLo6qbSHSqatNLsuSP8u+XaI0B52imhYtI44uqkKebNbdJxAC1evHOfIYmmG/Izq1LPRH8+xkYWe76+NBbExWb74E5fAfe8gKuDEg8tRCw9HHAuTV6zTiOBB6eWjfGdlJWBT/KpHRtc0HmHZPgQcNBuKTYLVg2cdMjGtPm74wkfn7Feljck18xYRktleyPAKzgWMLDZ/ePPoPX1pl2mAMQBRvh9MAy7Z7+pZWf5EZ3z55chn1SHWcRwJbCMorN5ugdVdGIgPQza/2dwPOfSuVJbV1PEn+n7uRC7zZxmLiJSsYWJ1admMM7WhRPXavcA6eat9vGnZc0iTEao1qoNzgt7qiwR9kHZABGuY1zwctSqxgngSPPSm/xXqYqRXGgYn513PPDiZgMwzNB3EcU7IyQ0w/ZHOMRuPpd8fVwgPfVwhK30O4zHjTUGqcmLMOcR7NmwtRcmvKUAoiSPd06P6MlQoot1sUNTm7WFzvEbp1v3jgF9K3AosJXheM1lxXXAxRjzrWga1q8YmK14KhjA3nM2O/rd/T2Y3oQCyCzo/tRFCN9WRKVLKQ9/wK1hyfy75sHVTThRtd8H06lOMYQ7giogmvVu+fxYS+Mt0sM7xT8XIDo7ZZHO1U3G2yEreOKGBHFg8zT0Rf1XVKCDLy55OY3t6vn1Jw= 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)(136003)(39860400002)(396003)(346002)(376002)(46966006)(36840700001)(6506007)(81166007)(8676002)(110136005)(33656002)(26005)(52536014)(9686003)(2906002)(47076005)(8936002)(316002)(186003)(7696005)(36860700001)(70586007)(70206006)(82310400003)(4326008)(55016002)(86362001)(356005)(5660300002)(82740400003)(478600001)(83380400001)(336012); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2021 21:36:55.0351 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ac4ebbc7-2cf5-4b45-8f5b-08d8e01ecc27 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: VE1EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6629 X-Spam-Status: No, score=-6.7 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.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) 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 Cc: 'GNU C Library' Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" Hi, > - request2size and checked_request2size are not consistent which looks > wrong (likely works in practice other than some sizes don't end up in > fastbin or tcache that one might expected to, but i think this can > break easily). Fixing it is not obvious because of assumptions about > the chunk layout that is no longer true with mtag enabled. It's better to change request2size to round up differently if tagging is required. That avoids dynamically changing how chunks are rounded up. > Other possible optimizations: > - ifunc malloc apis > good: near zero overhead for runtime dispatch. > bad: malloc has to be built twice or larger refactoring is needed. Using ifuncs is a good idea for the future - it allows removing the old hooks and other terrible hacks like DUMPED_MAIN_ARENA_CHUNK. Also it allows more modern malloc implementations to be added while keeping backwards compatibility if needed (for eg. emacs). > - unconditional top byte zero > internal data is tagged 0, only user allocation is tagged non-zero That's a great idea! Many chunk2mem can be changed into chunk2rawmem approximately halving the overhead. And mem2chunk can unconditionally mask out the tag (note all this could be made target-dependent if needed). > - unconditional layout > padding up to tag granule can be done unconditionally > good: no runtime check, same layout with and without heap tagging. > bad: wasting space with small allocations, design change. This is unconditionally good for performance and avoids the request2size oddities. If we're worried about memory usage, we need to talk about modern malloc implementations that don't add a 16-byte header to every block. > Benchmarked using bench-malloc-thread glibc ubenchmark on Neoverse N1. > For size=16 the runtime check overhead is > ~ 32% before the patch set > ~ 16% after the patch set. > On a practical workload or for large sizes the overhead should be tiny. This is a huge improvement, but still far from being practical given malloc is already slow, so making it this much slower is a non-starter. For this to be usable for distros, we really need to get the overhead below 5% (and it looks like that is feasible - with the optimizations mentioned I get ~3.2% overhead). Cheers, Wilco