From patchwork Tue Apr 29 18:22:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 111283 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 CDF5B3858D26 for ; Tue, 29 Apr 2025 18:24:50 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org CDF5B3858D26 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-2023-11-20 header.b=FjXInJQz; 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=fPKFPmhX X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 18AA83858D26 for ; Tue, 29 Apr 2025 18:22:26 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 18AA83858D26 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 18AA83858D26 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.165.32 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1745950946; cv=pass; b=mVKmKPL5Sxgs3vtUOmGlzS6JSOXCN8Q8GNkTfr3ifwZmxDplWX4wsMZe18UhcRRmonprBDTqf8cPMJXdLKdFwfPWdg+so4PnNYaRSVkyEcuYJ5ALAWd321yxZ2N9cmbeofXvGwIEaMAHbCxfMZq1WzJeJHc955RBIYb93Ehk6Kg= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1745950946; c=relaxed/simple; bh=M6PeRYDFbWS23Dtop8GmP49RGXg+TIJhOYlZVdek3Fc=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=OUzJ3Bji4gtXKsNVAhhk2VPyfe/+KkPU6a3CWxsiiWNy5bzknwvwSfvLmVmgT0l1riyyJYypXOm2x42tGVEO+IQbsu3QxUftN9nBjQNLX7H1Wfp3UnQ/oURjXQpeqEe7boBbvzxBVcY5kBIJxMxLwHKAomRBLb2xWLZ77Pkhvxo= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 18AA83858D26 Received: from pps.filterd (m0333521.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 53TICTkf014917; Tue, 29 Apr 2025 18:22:20 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-2023-11-20; bh=6Y0fviKCtiBo9Pxt t9p7Q+2+C3ASJ4LS2q3mMowOSwY=; b=FjXInJQzSmQuj9aoOjfHZjrXMchCHJuO A5wCkO9H9V4IxbQDT0ETVEeD5y04TtMxRUDt54y/MjqtF0sxHgTiQyxCtpEK0i+g ugtXGjKEr0ThCYqHtXf8+BUmcRQQI1jaNmpADCmh3da+uVKUDX/LUK2rxaTdIjFO BN2+ryELebxsGiMk3TObxwFxjVf/4CBx+l3vX2z/FyH2IC/QEnhqgmZkMFB0YU6E aEDKfb7nw6Qhvk7xzX5lYj5s6l+SePrvi34VeK4gmduV6HNFcWSbuFVYO3SQrLrB fPUO+8CiGaGy/sf9PRPc6+ZBKSH0xXkIKRlQdvRzyMhlHT1PelNTqA== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 46b3ubr0k7-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Apr 2025 18:22:20 +0000 (GMT) Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.18.1.2/8.18.1.2) with ESMTP id 53TGl1RE001325; Tue, 29 Apr 2025 18:22:18 GMT Received: from dm1pr04cu001.outbound.protection.outlook.com (mail-centralusazlp17010002.outbound.protection.outlook.com [40.93.13.2]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 468nxa8u04-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 29 Apr 2025 18:22:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=iOFs9g5S7qq4w2jhxt3l2kRUgEmsSZWqGMbBIibbdPdrgk7u8IQTl+YZXds6YBD4+8NKuuEhPFjazTSbjLGPnXyA7iEpGZuCahtJHt2ojNiwtKkdMpQuiyFUP9k2sw3xAcavIo8q/XKhlUkiJvkZE/GbCwtEmm6CWhSRCEg5mNj5hZXYxKoL981VB31e35/AE9oxit2Vx/hv+76UG2nIIePfuxbSwjTH3mxvN/pOFBoqYU0KQB4hZcdk1aBb7KwPiS/+ElkcFLEBVV6uGxunwWuo3XE/MDJHEalkXp8x8fFBqi/55Ry8QBG2t3rQzL4xnkzs3r+XQFTwrSaqrlhy8g== 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=6Y0fviKCtiBo9Pxtt9p7Q+2+C3ASJ4LS2q3mMowOSwY=; b=jNqxLZxvtqfiIV4iEP9psLhEATByFhu4g6efCTnCTwN+jQiAfrsMaK53rirwVGTMIDnxUtyVu1Ymzbl6z5o0eIqsLCtgjCNuVouypgkAKpjCS5mVlUJYj+VvGJ0pqlBilXR+0t3c4NQMM2wd6IFEszv987pRe923K/olM4wRuciux/VAxSu/nt8izBnwzI4A0rwdlmgC3o+gIBT5WvcTC/I8Ap30MYPdPCUFaffXKyc3E6k+ugTrO8gjMQVrNYsqNap0wUJO1wF6JyiHwif5FWdEGpCIgpT2SXJSfEgC36Wb96Rt1IXuyRZp5SKVVavVgpmAn6X6IJyFzBOKQHud1g== 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=6Y0fviKCtiBo9Pxtt9p7Q+2+C3ASJ4LS2q3mMowOSwY=; b=fPKFPmhXPgLpEnCx24XDlTjFeswmmOrjQCEOxZclazKaPdvRwYjumj6rNC0BrNGqUC+ucsiF9igIZ5CFTpPYzS2TGsIj1ONyydP6osYIwFSUSFC5SuwlfQr4zRIbchBlVRj89PHMPZIk/FuNtAhv3/w1p6EZMeyQlAww/tPrgVA= Received: from MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) by DM3PR10MB7925.namprd10.prod.outlook.com (2603:10b6:0:46::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8699.20; Tue, 29 Apr 2025 18:22:16 +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.8678.028; Tue, 29 Apr 2025 18:22:16 +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 v2] benchtest: malloc tcache hotpath benchtest. Date: Tue, 29 Apr 2025 19:22:08 +0100 Message-Id: <20250429182208.7968-1-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 X-ClientProxiedBy: LO2P123CA0048.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600::36) To MN2PR10MB4382.namprd10.prod.outlook.com (2603:10b6:208:1d7::13) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: MN2PR10MB4382:EE_|DM3PR10MB7925:EE_ X-MS-Office365-Filtering-Correlation-Id: 7d22c47d-db7e-4b38-a655-08dd874ac510 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024; X-Microsoft-Antispam-Message-Info: I6kbF2Hr5Y+fk6VPopOXmbMHkvjjS5/wlNRAupsxNfGPHQaEWNDpA+9qOMSW52RaZAvcStTtVDMpnUo6J7zEf8nSIWtse76DcJgOGwTx5pyli7hhNDvAK3guGqwT3hqRwaXEqIemUq7661vR3DGj9TfBTpJ8ahc+xgsv31oDq5DcISr33NqBYnpqdxdQgpFXCI1u8phppo/inWOh7jf6BhrcVOgn5ld/bE4c1RsqVKhVIFBmLrYAecMGujvuXq50Pxg0r/IMfsbg28yfKiLuuYg4PYX+icYu+TZ50DNi6aypXc5LQYkh6/9+Q42XEHayIe7xOwRQ8x2A3V33BuwUVYAIcztcV1K15bPoFYmDbo2pMJut4+IkVjcbpyrCvqRiiJimLLvmFJTDAB4wvtR9Ni9qNRWcO07M+yrcMZhNycOjHNfqq7AVpyES1/xi+ne9q3Iu2xFyh/I/pe4t08Yv6J2IL0IqX7FUU+SF2Y2NsLvsH2ET1rb73hAFjO3bFFzWhLDkaT3id2TKxLMArZTZlZCWjoNsqLrB5FBqVzbduyOGhaFi4bLUFSj6lBDVIdYtDQ5dXemi8TLazBDwNZ/J5N27I+O+kCRlV67kJb0VCbuKlg/lEDhmWWB0D/lQ5cXqsYiL2BGEOXfD4Tkgcl047yn4+6Tkx54/YsyAscwTDUYnFnvia43GL3erga6zBhLhUGqAaYIe/5jK4wtGU9Ta7bWUkAmgAn4OBtAEDCpZ5qKhVDauleMdiyl349h3eIULrNq/pfoJnWVLjSFoDSYRDVsGh0Qxa7sVNKFPEbrvKwJMTYKA/Jv1Y/xfQURG71EYa4odmudiw14H0vPwQN13cI5yEdsFI6vjilgXy98cU5SYFrYLNInrzMmfr8v/hNCpmxJXOeucmOW2I3zXVonWzpkrA4nwgfn9FUktSNAUHW484R8mTxwfHiY+euksFNmnnVcdigeHem1mTN2VxFNEt8zjHYkTospGnM4Pfy4idnqr+sJEvkkQH1YnZUuHy5g6cWgPm/lqSQ3GzEW4SnmBtfEx1QoxHZiR7AluoLOgseM+oUbglB8CvmtA+6nzEa4cmHXRIAdPZGy/tBxAZQjodpOVhyMhs8OVt2f2+ftESOLgYeRdoha3wwxtR3qRxoay/7XCMI1Xn552C+Jb6AewlGeRZj+mo/DfMMmOiHG7LhxONfwe7CtNQtgwMzI2Xk310/JtCzos06N25GbEhM/QbYMqRyFG0UuCC3vpc2gg3gJfPbuOdqTLgq0kM4LIJGvGX80nPxdiNypUNjZ3Uw+eRACQaAQBLoV7kjXzhqOA+wXOi4ksOIkywWMfFG/H092C8vCkGkJMphczsvfDJvW8xLqRMNk8gUNI0FO1MCRKXZ8hbSxKQMisTMevOuP6ypbWllq8K24iIxN9js7aEKzBKKTXxNxZLUio+FL6Eev0C3g= 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); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: vye2olzrKY2zAu8VKSV+rlfHwqqDZlp1ifVIplFx5z3kE9biXbe7OZnhLIylWXewVFK39vbq7/e59+Pe4HFzri8PZuVdYxf86LKaYKEGVnX0cm7G+JLPWs6uhwryMzfR8dR0u3+YGYucqUuGBkQ0Abto6xEK+KUd6lnErLAAqwCqqKxdAgxaIKbyw+xGPu2dRPoHAeCsOGVL2Bz6/YrWomfCOHK2zWBFZ9mPl1g7g+8Yl8ZWwd8WD3McEPJwZyS4yhdVPKp+DnDzvLjH7jbKfO/DwGJNvxriccVb2/hS1QPVSxKjEyfNeZVOb4aMIEcfzMrrP6bukwZ78ToRYi/vwvsV/aHk5WiEvUK5TjkuELwEmNdHo0HWYnTjtC+IBByV5hST/WGjY6JM2oh0Y5dFkR5Ge22iVrGX5PTh2nwAYhMY20bL1GKnyRpmRP0DGnvyseoiMCsXanE/DdJhfuYmHkF1+O38ln50j7k8fZ4b7dh202+2k8eu4WBgQh9ieyvVwSbiM+p0T/mUrRFaWFFtuWGnOrEe5r4+BgI06Vw+XnVvERrcf6M/AtnSvAU01nUc3wr+I+OO+3/zKX8xFVn4pfMig9ClelGD+ohPA2CyvcihWT28P16BVYQqV7BvY/NBqaKPeuvngzXcQR7ngIl6y2RC94q3p8BnnLq8yFPGqOHsgrXMd7e8uHtAZbIj1ecCGF8r6eD3C5vwXjgDjeMndn4rtZtWsTF8BvADeT61Y9VysyrIYODC1btiRMv5gjdtckLyBPdCnDGjhkVHK3yIjDJxwEu+rSQ+IoE1XuvY+mtjAPXclWSYCoHbSWEsoJ5+inRG9Q7XIEQ1OMlzVDAMczOcD7xJPlG+gw9FspB31B5vaHx2gCbWgo/K1yVNDhZ+SkHa/0TAhrKuvx35KCKNPbKOLUrx2GfKJxiP6nMDBhcILMeqDtDIXSikmHABgf3sZaWP48MgET3Lxwil0YVFu/mSyB7NXAHLosU0/KROTwdB7OSj2Ox8HZA5DZ5YGjQrcl4FP3+aZr4H6Ab10EleOl7E+jBdPcPjA4jd97wWDYum1cVBGWVXm8AGHauRs0IYgEayzgpEx6IIwixt6lZmSAKsT67qxnrft9Tz/7u2+dDrRMvmRaf//j7Zk2n/KvlLOQaEPt29zhT8CgJXb+H0AxiH7bwI24C7xgP4mItFS4kX305Q7pOSYnfYk/lddNPl5OLUgQKpUYtYcnl/+u168Sunpz+3ig6P2XjdNoTFhWTV5jCroYPb4/mSDuZVtDOFl8GWre65wDz4thDUGaaPx+HxBA3ppEPylJUMW4tBRQA37ktUEL9a6NmmVwNumUa87NOwuYHM7dTw5bd+KrmLyeksZXOqRXA9tS9gDEC0g+GRN2sHoZpkHAgzis5aGdF1QVMchP7Vz6ESqnxf5fZdAkrCPv7a4rZPmgIE8D3ITGQOL9Ysfy43CKPkVdoMItT4WDWWiAUAgpOuWC4hRwfTJ7GzCHENzC53l1p0sDFeKkSxeAuuV7jJYgA4vThbLXqBMYacsBsPhd/wLdDFjH+T1j7lgxuohhW7tLy66zxn/NWYoAK3CFHuHa2Wh2BDJHhX9gDs5+GfkVwEu/Xr0nW3Ew== X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 7kdSm4ChDvmJ9auZ3mVX5tR2SFTyRf0uP8oxl4PUV+m/DM0xHFfkQSHgAAN5WMemb8vxbU8LokbJHuAJV2ceBLsp3P+YFZVK+9wEPuuyfGA0IAlbW56M51FuV/0VMuB3tS11VmIQxV9zakFmsRVz+JZelkMmsEcXgoxatXx9dUahbfy7lthfMqieqpI+tIwiOvMNfg9T3tf4G5wo+iVYSzPXvHL1O0C42ghJXEluTTjsI7CvhBx7kbLk5KyM3UfpeJ6w8u35FgP8P0a1VkBy8JboH5knymD5oixx/taQ7+AT4qey5ZIpIzf6KLAf46O3MfNgAJFeC4VXqBOSWVaBPfHyfXbp6MMzvwuWujNUHKIxoJrbzltdrNS7dequXDpO//jZ5oYEg2R1pml6YDpMbrAyykP9hqGpC4vKyXbYnulhcbSR9wxxGq4KQRW7kpSP5+QDG9XvMgDt1mEJsE5lWP4v3IQLglnS01mdFrbnN06q4VRuJx3cBJ5p9A59AKYWVacCGeoK8SV6mK2+Rit4d3RBWkRaPzpCmHOuLltdvrM2W1PYOQwpMU1Dmf417KLcgpT4HwdUjZRBQ9UHjrNcNO/vTkgVsessRVrLmjLUcLs= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7d22c47d-db7e-4b38-a655-08dd874ac510 X-MS-Exchange-CrossTenant-AuthSource: MN2PR10MB4382.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Apr 2025 18:22:16.4965 (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: 6S5vfzWldnSvcl7UeHboaU+//volcHxcbrt+A5TCD+tJfaXqxMseUpXQFwKQslgXtQIQg5fU+bIT+2yaSCBHqA1QFMwYMONp5v7TfB+b6EA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PR10MB7925 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-04-29_06,2025-04-24_02,2025-02-21_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0 spamscore=0 bulkscore=0 mlxlogscore=999 adultscore=0 suspectscore=0 malwarescore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2504070000 definitions=main-2504290135 X-Authority-Analysis: v=2.4 cv=NObV+16g c=1 sm=1 tr=0 ts=681118dc b=1 cx=c_pps a=zPCbziy225d3KhSqZt3L1A==:117 a=zPCbziy225d3KhSqZt3L1A==:17 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=XR8D0OoHHMoA:10 a=GoEa3M9JfhUA:10 a=mDV3o1hIAAAA:8 a=kYyitMHLQUd20un5PdUA:9 a=br55WurUj89AL1qEz8Q6:22 cc=ntf awl=host:13129 X-Proofpoint-GUID: dx4nwkPwNzDq7kcw9nxQ-slnEE7-ZFAK X-Proofpoint-ORIG-GUID: dx4nwkPwNzDq7kcw9nxQ-slnEE7-ZFAK X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNDI5MDEzNSBTYWx0ZWRfX9XDL/vLFbN4v iRimMhqVcOb0/QW+DVidJRpeItHpglC6p4IJPX1xpFikwLfKAXWrlMDsgYkvZKeeQEgvywrYDbs +tPFrRGVrWXqVoeApUtyNRImUoYU+tFogghuAvUn8nNIbuany5gZu/mTQ4mVNF6eUm90qTWTqu0 UTzI5c4SOXLHRjmiA/tGB/I5tV2l6mOXrXdkLjbOpB3jYASwkzkUE5961X+9/v+QYkpb1jLl1mp ZngYF69vVR/Wkvz6gRomL3vUyx6elRH+eu0Olv+u7C5k/FmcNiz2mGD67FG1O16PD5HsqX3jVFI 5foQjRtNW2PzP4mKJ0luAWuHgVbGI0HXdBEzZAv8vROczJH5EXLkvw2l8YQP72l9nDKSurLn9C9 C7NikuUk 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, This is the v2 after Wilcos reviews. I kept the multiplier argument to the test executable to allow to increase maximmum allocations for future after large chunk size tcache support is added. Looking forward for further reviews. Cheers, Cupertino Changes from v1: - Changed block size randomizer to get proper distribution of allocations. - Drop pre-filling of tcaches. --- 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 the following changes: - forces single thread execution, reducing concurrency side-effects, like cache incoherence penalties due simultaneous writes to the same cache pages; - it prefills and saturates all tcache bins with chunks, before starting to make any measurements; - input argument is now a max_allocation multipler, which allowing to increase max_allocation. For the purpose of measuring current overhead on tcache hotpath, only the execution with argument of 1 is relevant, as tcaches are limitted to allocations up to 1kb. --- benchtests/Makefile | 7 + benchtests/bench-malloc-tcache.c | 257 +++++++++++++++++++++++++++++++ 2 files changed, 264 insertions(+) create mode 100644 benchtests/bench-malloc-tcache.c diff --git a/benchtests/Makefile b/benchtests/Makefile index cccee62eb0..7b369079c6 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -331,6 +331,7 @@ bench-malloc := \ calloc-thread \ malloc-simple \ malloc-thread \ + malloc-tcache \ # bench-malloc else bench-malloc := $(filter malloc-%,${BENCHSET}) @@ -456,6 +457,7 @@ VALIDBENCHSETNAMES := \ hash-benchset \ malloc-simple \ malloc-thread \ + malloc-tcache \ math-benchset \ stdio-benchset \ stdio-common-benchset \ @@ -498,6 +500,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 1; 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-malloc-tcache.c b/benchtests/bench-malloc-tcache.c new file mode 100644 index 0000000000..9c212bb2c2 --- /dev/null +++ b/benchtests/bench-malloc-tcache.c @@ -0,0 +1,257 @@ +/* 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 +#include + +#include "bench-timing.h" +#include "json-lib.h" + +/* Benchmark duration in seconds. */ +#define BENCHMARK_DURATION 10 +#define RAND_SEED 88 + +/* Maximum memory that can be allocated at any one time is: + + WORKING_SET_SIZE * MAX_ALLOCATION_SIZE * alloc_multiplier + + However due to the distribution of the random block sizes + the typical amount allocated will be much smaller. */ +#define WORKING_SET_SIZE 1024 + +#define MIN_ALLOCATION_SIZE 4 +#define MAX_ALLOCATION_SIZE 1024 + +#define TCACHE_FILL_COUNT 7 +#define TCACHE_SIZE_OFFSET 16 + +size_t alloc_multiplier; + +/* Get a random block size with an inverse square distribution. */ +static unsigned int +get_block_size (unsigned int rand_data) +{ + unsigned int delta = (MAX_ALLOCATION_SIZE * alloc_multiplier) - MIN_ALLOCATION_SIZE; + rand_data %= delta; + return (unsigned int) MIN_ALLOCATION_SIZE + rand_data; +} + +#define NUM_BLOCK_SIZES 8000 +#define NUM_OFFSETS ((WORKING_SET_SIZE) * 4) + +static unsigned int random_block_sizes[NUM_BLOCK_SIZES]; +static unsigned int random_offsets[NUM_OFFSETS]; + +static void +init_random_values (void) +{ + for (size_t i = 0; i < NUM_BLOCK_SIZES; i++) + random_block_sizes[i] = get_block_size (rand ()); + + for (size_t i = 0; i < NUM_OFFSETS; i++) + random_offsets[i] = rand () % WORKING_SET_SIZE; +} + +static unsigned int +get_random_block_size (unsigned int *state) +{ + unsigned int idx = *state; + + if (idx >= NUM_BLOCK_SIZES - 1) + idx = 0; + else + idx++; + + *state = idx; + + return random_block_sizes[idx]; +} + +static unsigned int +get_random_offset (unsigned int *state) +{ + unsigned int idx = *state; + + if (idx >= NUM_OFFSETS - 1) + idx = 0; + else + idx++; + + *state = idx; + + return random_offsets[idx]; +} + +static volatile bool timeout; + +static void +alarm_handler (int signum) +{ + timeout = true; +} + +/* Allocate and free blocks in a random order. */ +static size_t +malloc_benchmark_loop (void **ptr_arr) +{ + unsigned int offset_state = 0, block_state = 0; + size_t iters = 0; + + while (!timeout) + { + unsigned int next_idx = get_random_offset (&offset_state); + unsigned int next_block = get_random_block_size (&block_state); + + free (ptr_arr[next_idx]); + + ptr_arr[next_idx] = TEST_FUNC (next_block); + + iters++; + } + + return iters; +} + +static void +fill_tcache(void) +{ + void *ptrs[TCACHE_FILL_COUNT]; + for (int i = MIN_ALLOCATION_SIZE; + i <= MAX_ALLOCATION_SIZE; + i += TCACHE_SIZE_OFFSET) + { + for (int j = 0; j < TCACHE_FILL_COUNT; j++) + ptrs[j] = TEST_FUNC (i); + + for (int j = 0; j < TCACHE_FILL_COUNT; j++) + free (ptrs[j]); + } +} + +static timing_t +do_benchmark (size_t *iters) +{ + timing_t elapsed = 0; + + timing_t start, stop; + void *working_set[WORKING_SET_SIZE]; + + memset (working_set, 0, sizeof (working_set)); + + /* Fill tcache bins with freed chunks. */ + fill_tcache (); + + TIMING_NOW (start); + *iters = malloc_benchmark_loop (working_set); + 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_multiplier = 1; + else if (argc == 2) + { + long ret; + + errno = 0; + ret = strtol(argv[1], NULL, 10); + + if (errno || ret == 0) + usage(argv[0]); + + alloc_multiplier = ret; + } + else + usage(argv[0]); + init_random_values (); + + 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_double (&json_ctx, "max_rss", usage.ru_maxrss); + + json_attr_double (&json_ctx, "min_size", MIN_ALLOCATION_SIZE); + json_attr_double (&json_ctx, "max_size", MAX_ALLOCATION_SIZE * alloc_multiplier); + json_attr_double (&json_ctx, "random_seed", RAND_SEED); + + 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; +}