From patchwork Tue May 6 14:37:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 111608 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 CC2F93857C6D for ; Tue, 6 May 2025 14:47:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CC2F93857C6D Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=oracle.com header.i=@oracle.com header.a=rsa-sha256 header.s=corp-2025-04-25 header.b=oMyTAI9M; dkim=pass (1024-bit key, unprotected) header.d=oracle.onmicrosoft.com header.i=@oracle.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-oracle-onmicrosoft-com header.b=pPuE+FjR X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 143BB3857C67 for ; Tue, 6 May 2025 14:46:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 143BB3857C67 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 143BB3857C67 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.177.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1746542807; cv=pass; b=irb/7m9U2SopfMJDgiGNaxWgxOJm1tuTrbuHjhx/EmvJysgSfSolc69n3JyhFLajCornpTn1SUD2sEA6DaNDAnEwsNljHN3Ai8Br8Q1SJ6J+NphyPE3WPm+vGmt+A87fp0rq1J5fOhYNxF7NJU2cRgL7AhXdVfOogAQkzmu8U5g= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1746542807; c=relaxed/simple; bh=C3SJoOQr/LyziwwBWDgwkfusJqpGWQeyiPC2hAqTVEw=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=ROcsv54fPZ9xvcwBRHpYxfWo8ZorsmR/hMIXx/jZ3bov8VMH/nLcWdUGZefKlRU8CIAlbo/SQ+5Krd9UwAOCEyX/51N54AuApX7d+TDcdI4KkRmHgDaCoIA+i+a3e+6jLMDpqqosbqpeS5b9j2c+POIQkC9+SUWfRCnis4m8sAc= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 143BB3857C67 Received: from pps.filterd (m0333520.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 546EW5cb016148; Tue, 6 May 2025 14:46:42 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=cc :content-transfer-encoding:content-type:date:from:message-id :mime-version:subject:to; s=corp-2025-04-25; bh=l2D3pMkpXKsMbcgy MQHNc353MxXtDclvopMqmlButiU=; b=oMyTAI9MVTZtq260rieIdmsfHs7mAZHZ 4lF/1ZJjtogDc/3Vo+fGQ+EdoeUv3dKtFUlXlTUbvcTbUJkQVC4IbDOhSpEyAV+k 2gCZwDKG9eul8BuknSMPFZDuQJaHKMARqqGeP8VEUVzTMKExjg/0sVaGeUUnD4zT v/QoY36mBff38PqB0UdwsOcJh5s2fC0GFrKcnRRoWLhUpEpC44BXEH5U8BoLuXzK Lq15UiZVIsMHL+JTp7HgFV9Qv+xkRtqk7/J95issRuJoEThb596Avr6FPXonVgSM s3BVqYDTtqbzLCZRD2A+BUjL6RE8O4KRchLLVoNvUM9oS+kEuiZ+8A== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46fm9281hc-14 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 14:46:42 +0000 (GMT) Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 546DUjod011160; Tue, 6 May 2025 14:37:55 GMT Received: from byapr05cu005.outbound.protection.outlook.com (mail-westusazlp17010007.outbound.protection.outlook.com [40.93.1.7]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 46d9kfbuqu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 06 May 2025 14:37:55 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=MFNR2sgvpzHZ4s7lA5O/eqyYAdyC1nQrzN1d6PGu7CXFqSB/2f9pY/SkNpINw4wdBfdo+dEaVXl96p2/yaIpAxgKn7iKW3Y3QvxudbnF1YiGTClRsc654kmfa9dLEdRYWfImaewJ6UeMYkhFxk0LAZrZuqFA7ap7Wfpkjx8kjo69u9k+7icz/QquUrWu05UnBIccCCgdjovDEawpV/TIomEbGlS4+TD4Chha0IMnjU4B26m23zt0ZoH2HgUSQaCfWrdlsCevPRPFxPNZxj7zTrJkpdz4e5BxFIBEEhB/scxQG80b3m0IqrV/36ohEK67b4/Is8G9oQdMCDtT/EyxLA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=l2D3pMkpXKsMbcgyMQHNc353MxXtDclvopMqmlButiU=; b=InW6tXCMkOqyxyZlWd4K+96i+cx77ix11LCdklFkE5sY5pKmvBkZmld7nYhGOTAZ6eib/DUS2FD4U059zuE9JTISxGlJ1qhzGWVuJwVY0adAmZADRuxX2wTPjtnoOzRP1brCfZUZy/i9IUYA7vYJsGG8oStMtAqLsWDY3rvsGB03xuyitPLDG6KbpLWl9tKFV6Y7S1tE3yaaUvEpa4Effcy1Y1avTbQYRK8Cp7eALR384rhp7aX8lnv8J74aBOWpZ2i7esuoEazOjw+riCeEwP7ER9T74CONtyXdTj40nUNt8dE6xWkrFtRZs4Zela+yCRZ/KE6MOqyfrYed3w9qsA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=l2D3pMkpXKsMbcgyMQHNc353MxXtDclvopMqmlButiU=; b=pPuE+FjRHmyE1+QFjEpA69uOqozhpNcNyOPtvQcdIWS+u1jpL0VCpaK1QE8E0YBhUfAEc0lrhWh9oXWE8r3W8BgAG3IaA5U6MZHx8/ZOSzfz8iaLylIOeDzKL6E4tMzgqdao4NgMP+bnM8DrynQNfZ0wo8aoqi3nhKeAFO4s0lM= Received: from MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) by PH7PR10MB5880.namprd10.prod.outlook.com (2603:10b6:510:127::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.22; Tue, 6 May 2025 14:37:49 +0000 Received: from MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::5033:84a3:f348:fefb]) by MN2PR10MB4382.namprd10.prod.outlook.com ([fe80::5033:84a3:f348:fefb%4]) with mapi id 15.20.8699.026; Tue, 6 May 2025 14:37:48 +0000 From: Cupertino Miranda To: libc-alpha@sourceware.org Cc: jose.marchesi@oracle.com, elena.zannoni@oracle.com, Wilco.Dijkstra@arm.com, dj@redhat.com, Cupertino Miranda Subject: [PATCH v3] benchtest: malloc tcache hotpath benchtest. Date: Tue, 6 May 2025 15:37:41 +0100 Message-Id: <20250506143741.21264-1-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: LO4P302CA0030.GBRP302.PROD.OUTLOOK.COM (2603:10a6:600:2c1::16) To MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB4382:EE_|PH7PR10MB5880:EE_ X-MS-Office365-Filtering-Correlation-Id: 839e1610-9130-43ab-0b9d-08dd8cab92a8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|376014|1800799024|13003099007; X-Microsoft-Antispam-Message-Info: BngqbaZwpMnGLgQpTjaRlpl/meL3QDTciN0zaNXyqBZABLMm5A92fq3BKA8ZHrdpzbHdSe9sPZnAjKlLdE2hO3C9Ak3vFitlmxM6YAoI3iz5Mmd3aOOQtrFKDrWuC5MnNckIX+9Md/5T5BANuV97B7vSGtY1UbgAzzCV133Z76x4TBzCafHZPiOvc+4DIcQoAEFo452XH+EY9+yDV4nrlOgQkZOh4gBhi/OVH6vX9Q/W28mZsksMzIxLyldYx3+EuUopdDk8/Ipq2xwwyKFEOgaF6RWub2/9RPR8DAJ+fq/oEBGFeKQLSM3gZMvOwUUQhpeUTpSX1md9kRxWcmOICOQQ0Qc41I/z+cnMCPhzPTgjXXrdvVXDQBNYi1gNQQem1Or95sBZBbT2lS4QRhKeJLEDVcO3CXvZ1DK/jmXxSPBdErKashQNd0zEb4XYTOjxp7QQCytJ/BkZgNbkUeatKwtgr1XYFTj1Ukg61QkjbpBEQMo7YU4jJTfkGgBI00Vj7mdIwyu1G0jKwTj5ZrdpUArwfgGosUA/Urk7+zyzw68uGK0G+dkzZ7NpJacJxGnKcZOhcHaOmtkseSUNYRbAw7EKikFpO5htsyVFyBGHA1t1KVMO9gKOe488k831efNpgxymxn1dtWIH3nxuUaz/M1RjpISLximrOKgrQZnMNULJz1VUS5/+tFbOAqqFkOC/dWPEog5f7nPTSywm03njQZcmxm13/h9CnKv/IcAOWQ26SyQfHyO1HOqZrmvH4OSTMrH496Z4eiFIMrgSP9PXvboebg+YW82zjwQNUJtFOXHmzXEuzTIHYVaSJzsKs0t8t+8DxsOfp94HUiTnDp5OU+ue/GklE/BcCLguNGTrGQZhZNAqhx/pDvpKR55qO71+0VLBqbT62UGT2B44ifm+st0Ne7E5xizzigf1IZEJsNSnsPVwOAVVSxzkmyr4BO2HGNk+eLmrkWGLGl2ohwJy8eshj4RpnfAcKb8NLNALt3yzsrQMnpNtcb+adHtYgVyiiG6+hLWJtwfwVK8NhSyNv3Iu1f3HdPjybLHHoQSaeamHo121RkcboqMQNVw+eDFuko1JonYrE1KM33WwNUguw9/lnuaBlDEAPb8tpLZyoRikX2RfzuIXGSVaB16F346h7+CQFzo0zYJHqNw0JJ2fNOgCGDU7jJ1v8FQEIrpJ393HB4247dNdLLV8XHmAur4uBmJ3w2SrAVUoQFN17LEnXxfIkB37ljNJCZujaf0tIFbyhbtAMRGSBBS3PBW6mJBt405kEBBQQoZRvlI76FOmnn0N/kmWa5HCHeBUjCJMHmuIiyFQJl8XpyKSMSNK0nqjDngC4MSp2ZKlDHfV1IT3QDR8T8i/Tm+Nhtx5U8AgbYUo8IZ+5szW1D3Grr4bG3A5yGPDIsmgCU2aQiUsHOP3m0lqxp33MUus1e11alerNbY= X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR10MB4382.namprd10.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(366016)(376014)(1800799024)(13003099007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MMFDRIzUZAzBbVAGefkD3Ls3XhQGOTYf3XQzTH3TvQma0N9vvGRLBcZhdf3P/Jp9dz0uWbtZ/6enGzAQrjWMTul7lmx8u09ykYfWz4BR3cJM9kFwHIHyu4e5u+fwG3YWP7IPC/Xo32q6/0rZ/B+rALjX2ryLA7Wnk6KO14eIwyQOwaD92w94TECnx3YBG4f57XLrCVHCEi5E8iOtm/eD05PPngWyM50NZdaessJC8F2YHm2KCac0VFxkR6yMbb35QwTSYxH67gs5xa0fVZvXYT0/PLtH09ALjYQWQ4AV54mia3u3EJ0/0P+KcABgAUI76RV7vLIYLT4Bj0+SwqBEDO38KDQyexXdvwSn9Hwibn6hspJa9oiyZPO6qDvhIsL5grUd2OQeh8sfHeH6ceWoaX33aN9HPelhWQY2Qt3c0sGoVIhrGrfZrU6cWGl2fu9LmYPgcHqikR6rX+0yvBqSea0z+Z22q30T4l+zxpYnQRgC0l3pzy+uZCYEc4EzHjOuo0jsCgW+8F28ZK+sfX+6AdYFF2EaHmawlElPD2Uf807S9x1YpHLHIDw8EuvGiLjbD6LIG/wJx0Vc5Gyn+VZznKcUz2fMdPT48Glz23Mrh8okYzcI2Z+PJePUTJvflVHpaU8omJcTMH2LnULEfMCymiKOgIbKeEotxmKwvTXHLhr67umrYT8ZSsvaB1Oco/WpfLuAcgX55rBsGkN627d5Ye/4Pa9s8LQqf8MWwUwn8pXqaODqRaC1FWDaWI1Q0p9gjUcIsZ1FDzqy5pvlyaz2/GJde5mbpKLE6in8d1B544BuEtd+shIB7fL/Xf4HGdY2cLpTlF3NF92bPC7SjdkyoamB+gUMnMIhYSfvm2YoSa5ewfpiatH8y07R8vrQqTAIEQ60hCuTasl6AT+TmUIIgVF09M9cxJbgibib/qA5hP9JN6nB0Y7wSpDHlX4Sox7ilJ8L3kGvKolR/hPgWM200GekFf/JJOsj3uzO0bWv+moavfOY0id1/zLgxBwmykhRvOFIBiJ10OEtqpAScBowpOZ+2QwMw0CdeEUd+18Pv11vFNTy1C5kDfTKRzKLfuJLckUb1Um8kBwFmBdTk6saM5jpFl662Uf1a3KLwnFSzf0+UE6uSNafE9EA+L0DmVKPrKL2Y3qb0Fk2oF2gDVaN98LKFwHalNsIxB2nrXF1aLEbmpKqfD6If1tnR51BtJB+xmHA+No8DpcnOlqtjNy6achwitDANc1Sn0gKjjMD7y5S824aaXezyBXK0WzDzPbIs6pr0P/UCLlzjydzQiWP8tEFGG+Lo/Sr5ndO50zWkCKjthwWy9aIcSub98teopWoV040exRvLpxqdt7jEcBA48J5Y1ldudnUijpzoKulVrV8Z+euWxUkvPGgkvqn2O2jSur0qr8Jr+JyYNSe/rz/6g8901HoCkAk/MmkQaL8Dfot6Q1lrl217Mx407qxYiNCz3igBQNXdHvyctKygZUDxVpXdSnsBumKWAM49YRyHeoFvYE2Mh4DGa3ulJgASptNF665wck3DXltEvLCffyNh0Amww4VHIAjQeoDtEq64oJJzvhr8FRaFjyqGzUtJIVRsuIrCX8zq2lzsVq63aqKRw== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0pPIZdCpxQZol3j7geJgmsw6K9ks0zSik30dkDTRSW/Tvo/oflMI6wS7Coz139XR9Bi6LNHqeNXYBPClcdksv17OjOyDUFP0O8GcCsfSwCz1Dh2UgaOE7PfWKwPQZGU3I+95STINuEmHOwlSdgw3Y4mvLfWjheuM3m7cdhfkfNF/cU5NmHVulswW7/8oY0JkSVJJcO1k3Fz/UzkZAOXvcHRKPbQgudvThUheq2xruywTFSz4o0/6JVrT/SzuT+TGwSnRAy6UcES8NrhxOFWe/qOuMWjudWCNaHMl2chYuv+0rfP1nSYUCF52Zt8XCPw/mJJsCuIcITLUzf97vYjwMeI7xlpme3hGgYZYf3ua4xsBwFMv9bUKGY5vZe2z0FMxj82eGqaVI/S5Hc02lKlu8XzSjjXAndHQmhDTqCfzB21mhHtIqeEhBewIuiTWHsAKlMcIjAHhxvMFUXJTjgcNedV3VNaSZYdz8NYgp5S9q59Ijjldj5+5sBlTTDaFxQ0onfb+/QXWM84Ro9N6NQXIljUCDAaK2dT+1F1FHKzL5mmitmTkpcjKAkBs5EHDMS57LKoyuFA33f+9aOHmfwNU/PKRgsZvQ2XbFT1cDanPvQI= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 839e1610-9130-43ab-0b9d-08dd8cab92a8 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4382.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2025 14:37:48.8612 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: lfdDkfchfBMyNkUqq+oNTl9z4s289ES8H54SjUPs1b+1e2mSPARsVHZlpLe2e8W9PdNklvDdkZaGdUteTFQwfuX4tFMfdWQn9jP1IpR3sjs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR10MB5880 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.0.736,FMLib:17.12.80.40 definitions=2025-05-06_06,2025-05-05_01,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 spamscore=0 adultscore=0 bulkscore=0 mlxlogscore=999 malwarescore=0 phishscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2505060141 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNTA2MDE0MyBTYWx0ZWRfX2GGpCRFnnwVT MsQFET4fCsvfRQ6XIpxUSYtwndqEmaubdB9nJDm/Q4BIrWKBYPDyWuc473RjDzddQEvoO4jjVQi ltT0CYCWEWlztU3dFfojWhHE9wM6nH2Gh9XCic/1OrjsmtdkCV06eW5h4LyPkE3TrLWe39sHp08 4jlZ0wwfUsYfqfBvwJSTJcq0chdfUvgJhRUhp9JBN3oq8JipFTb9SkheAyt6hhdnpKY8SI/gl7x TTJ8WutYp5fVmvsMKnEF9qs5MECx5IAoGIt/78ZVvcd36naCflFipqNAXRZlQIC+O8bwAfu0hh8 rNy4SZI85+2qjpSKWPrErIVa3bBsWIWS3MZsT/ZNxdijXeLkUbcXD1VkG8aK7I4cCjs/+9s9PIW NYPBIv9B7C3mhsyLf+8uYOmMtavDLBs/G1HwAHaW8Pgwo8bKXXVTCvMiT5fq7juJbEZMoH8E X-Proofpoint-ORIG-GUID: uJTrndl2O9ESxBOnK0QV4LHANt793972 X-Proofpoint-GUID: uJTrndl2O9ESxBOnK0QV4LHANt793972 X-Authority-Analysis: v=2.4 cv=JZ28rVKV c=1 sm=1 tr=0 ts=681a20d2 b=1 cx=c_pps a=e1sVV491RgrpLwSTMOnk8w==:117 a=e1sVV491RgrpLwSTMOnk8w==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=dt9VzEwgFbYA:10 a=GoEa3M9JfhUA:10 a=mDV3o1hIAAAA:8 a=_jsDTZbLsUNdneBVyFgA:9 a=br55WurUj89AL1qEz8Q6:22 cc=ntf awl=host:14638 X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_SHORT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_NONE, TXREP 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.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org Hi everyone, In this version as suggested by Wilco, I have made the benchtest really simple, focusing on a single allocation size repeatedly allocating and freeing in a loop. Looking forward to your comments. Cheers, Cupertino Changes from v1: - Changed block size randomizer to get proper distribution of allocations. - Drop pre-filling of tcaches. Changes from v2: - Simplified test to focus on performance of tcache hotpaths, ignoring any RSS measurements. Existing benchtests for malloc infrastructure seem to be rather generic to test global malloc implementation performance. This new benchtest focus on reducing any non tcache related side effects, allowing to more realistically predict performance impacts of tcache code changes. The test was inpired in bench-[cm]alloc-thread code, with severe simplifications: - forces single thread execution, reducing concurrency side-effects, like cache incoherence penalties due simultaneous writes to the same cache pages; - Focus on allocating and deallocating a single size for all the duration of the benchmark. Since all it does is allocate and deallocate, it will measure the tcache hotpath without any side-effects. - Allows to specify the allocation size as input argument. --- benchtests/Makefile | 9 ++ benchtests/bench-calloc-tcache.c | 22 +++++ benchtests/bench-malloc-tcache.c | 151 +++++++++++++++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 benchtests/bench-calloc-tcache.c create mode 100644 benchtests/bench-malloc-tcache.c diff --git a/benchtests/Makefile b/benchtests/Makefile index 74142da326..d4d2be0fde 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -329,8 +329,10 @@ ifeq (${BENCHSET},) bench-malloc := \ calloc-simple \ calloc-thread \ + calloc-tcache \ malloc-simple \ malloc-thread \ + malloc-tcache \ # bench-malloc else bench-malloc := $(filter malloc-%,${BENCHSET}) @@ -453,9 +455,11 @@ VALIDBENCHSETNAMES := \ bench-string \ calloc-simple \ calloc-thread \ + calloc-tcache \ hash-benchset \ malloc-simple \ malloc-thread \ + malloc-tcache \ math-benchset \ stdio-benchset \ stdio-common-benchset \ @@ -498,6 +502,11 @@ bench-malloc: $(binaries-bench-malloc) echo "Running $${run} $${thr}"; \ $(run-bench) $${thr} > $${run}-$${thr}.out; \ done;\ + elif basename $${run} | grep -q "bench-[cm]alloc-tcache"; then \ + for thr in 64 512 1024; do \ + echo "Running $${run} $${thr}"; \ + $(run-bench) $${thr} > $${run}-$${thr}.out; \ + done;\ else \ for thr in 8 16 32 64 128 256 512 1024 2048 4096; do \ echo "Running $${run} $${thr}"; \ diff --git a/benchtests/bench-calloc-tcache.c b/benchtests/bench-calloc-tcache.c new file mode 100644 index 0000000000..5303f872b8 --- /dev/null +++ b/benchtests/bench-calloc-tcache.c @@ -0,0 +1,22 @@ +/* Benchmark calloc and free functions. + Copyright (C) 2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#define TEST_FUNC(size) calloc (1, size) +#define TEST_NAME "calloc" + +#include "bench-malloc-tcache.c" diff --git a/benchtests/bench-malloc-tcache.c b/benchtests/bench-malloc-tcache.c new file mode 100644 index 0000000000..7f90c14849 --- /dev/null +++ b/benchtests/bench-malloc-tcache.c @@ -0,0 +1,151 @@ +/* Benchmark tcache hotpath allocations. + Copyright (C) 2013-2025 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +#ifndef TEST_FUNC +# define TEST_FUNC(size) malloc(size) +# define TEST_NAME "malloc" +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include "bench-timing.h" +#include "json-lib.h" + +/* Benchmark duration in seconds. */ +#define BENCHMARK_DURATION 10 + +static volatile bool timeout; +size_t alloc_size; + +static void +alarm_handler (int signum) +{ + timeout = true; +} + +/* Allocate and free blocks in a random order. */ +static size_t +malloc_benchmark_loop (void) +{ + size_t iters = 0; + void *elem = NULL; + + while (!timeout) + { + elem = TEST_FUNC (alloc_size); + free (elem); + iters++; + } + + return iters; +} + +static timing_t +do_benchmark (size_t *iters) +{ + timing_t elapsed = 0; + + timing_t start, stop; + + TIMING_NOW (start); + *iters = malloc_benchmark_loop (); + TIMING_NOW (stop); + + TIMING_DIFF (elapsed, start, stop); + + return elapsed; +} + +static void usage(const char *name) +{ + fprintf (stderr, "%s: \n", name); + exit (1); +} +int +main (int argc, char **argv) +{ + timing_t cur; + size_t iters = 0; + json_ctx_t json_ctx; + double d_total_s, d_total_i; + struct sigaction act; + + if (argc == 1) + alloc_size = 1024; + else if (argc == 2) + { + long ret; + + errno = 0; + ret = strtol(argv[1], NULL, 10); + + if (errno || ret == 0) + usage(argv[0]); + + alloc_size = ret; + } + else + usage(argv[0]); + + json_init (&json_ctx, 0, stdout); + + json_document_begin (&json_ctx); + + json_attr_string (&json_ctx, "timing_type", TIMING_TYPE); + + json_attr_object_begin (&json_ctx, "functions"); + + json_attr_object_begin (&json_ctx, TEST_NAME); + + json_attr_object_begin (&json_ctx, ""); + + memset (&act, 0, sizeof (act)); + act.sa_handler = &alarm_handler; + + sigaction (SIGALRM, &act, NULL); + + alarm (BENCHMARK_DURATION); + + cur = do_benchmark (&iters); + + struct rusage usage; + getrusage(RUSAGE_SELF, &usage); + + d_total_s = cur; + d_total_i = iters; + + json_attr_double (&json_ctx, "duration", d_total_s); + json_attr_double (&json_ctx, "iterations", d_total_i); + json_attr_double (&json_ctx, "time_per_iteration", d_total_s / d_total_i); + + json_attr_object_end (&json_ctx); + + json_attr_object_end (&json_ctx); + + json_attr_object_end (&json_ctx); + + json_document_end (&json_ctx); + + return 0; +}