From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id 37A9D3858C5F for ; Fri, 10 Mar 2023 14:36:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 37A9D3858C5F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32AAnN67006464; Fri, 10 Mar 2023 14:36:14 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-transfer-encoding : content-type : mime-version; s=corp-2022-7-12; bh=RRVKJfbfqMDg1WLkrX5s8jyf31S67X75apG3CYTG2g8=; b=NXcUKQg/6EZKR6ZK0XWRIGISHdXNpeN9w5VNyw7ktteIa0XIcTYlYGFxl12okVJVf3mc R7cupzXSuDk1ykl8Hj3XKQJJOUXqt5ZhCkE0d5itap/bTZ2Dd8UxI13fdXPxd5eP0iSF /uUQG6bogxGWTS0KIej4K0Ov1dEPUSv9tLo5iNaKNSrt3ORu9FC3LJI7HP8vWHTVEBMS mIVMv864VoxMwvp46nM9dx6jMtLMEgfheaYyWcqkQJstAm1bITPxCcSPx3VM2AkqPd4/ 0PiHBGXBW86XCwNj2BARd0pWnLVKO9egdYMMjgc2tJRzZkn7eXKfoM91Jnl37KmSnrqp Dw== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3p5nn99ph3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 10 Mar 2023 14:36:14 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32ADLefn015450; Fri, 10 Mar 2023 14:36:13 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2169.outbound.protection.outlook.com [104.47.55.169]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3p6feq9e0b-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 10 Mar 2023 14:36:13 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=K1IpMOX+PWM9vM7b+KGOiQW+WAJxHzj33tpUP3qhELfI4w/128HSFpik1azyrJG3jeIhEm1Y/TkHuvWa7GXsbD/pZhsoPEsgAsQnKDK754s+wiVEhtOc7/2iRPNSmkmUrD4iIKJfhmK4ZMYqjGs9SvecbaL7/lTpCjNVDHhO/9MNnuH9td8315TLCSLkGMX86WRrh0JVy7o9D8mshd7QwAgUlTXBvzl41GjcjQwhJ2USJwZpgIDFJIrEEomGCUL1B/ezLW9qYCAfE06r6GsLgwuzOjFWtk0GH3x71oHG13wf8vh0hOIA47B2EmSPWeG4ZD1hAWqKaVAYcrvXmbw4Pw== 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=RRVKJfbfqMDg1WLkrX5s8jyf31S67X75apG3CYTG2g8=; b=Pd0cDRhT5AvR0B8NKE6qNIwyt/R6AC0ADH340Uyd9WFJsLjZ8SRvA0VufHuau+l/8mwRurTz4AqQnRmf/NfUthzI2s33YWlPvxgnXP6JGkklqJSfoDJOGiJUXnydfhg8x5q+uMtiyTiDNvr0pZGsz+PEf3hs03i2Ze6aYwmqAiwYhzeeXak5lOvmUyMq1lKv8hvil0cwAv5DPf/Dli3hDYgjc9NgxoCIlhvjQEHWZyXKtmGobT126k49JUygtYUxEtuOkB+YDvVpFQPjzUB0lJ7PePqxyC8aW/ngZBDhu2koRNs3LEThhWxFW2Xd4PGYI460vv3BAkuF5sUEK5WO8g== 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=RRVKJfbfqMDg1WLkrX5s8jyf31S67X75apG3CYTG2g8=; b=leO6PB8pKSz7CU6YOcA/5aPhsVMGGQFNto/ktuIomDhx66Bo1NWnj979c8WgIWhjMYdtDX8ezpKBRF3lRg4RfRku97qBeRHqaeEDaS5CGnzpac8LiUksNheH3HZ+57emmheUBuvu4oTkW+FiWC5SfvinpH+6MxKZNESDtH6fqlU= Received: from BN6PR1001MB2340.namprd10.prod.outlook.com (2603:10b6:405:30::36) by CY8PR10MB6906.namprd10.prod.outlook.com (2603:10b6:930:85::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.19; Fri, 10 Mar 2023 14:36:11 +0000 Received: from BN6PR1001MB2340.namprd10.prod.outlook.com ([fe80::a502:c948:c3f6:9728]) by BN6PR1001MB2340.namprd10.prod.outlook.com ([fe80::a502:c948:c3f6:9728%6]) with mapi id 15.20.6156.023; Fri, 10 Mar 2023 14:36:11 +0000 From: Cupertino Miranda To: libc-alpha@sourceware.org Cc: jose.marchesi@oracle.com, elena.zannoni@oracle.com, adhemerval.zanella@linaro.org, Cupertino Miranda Subject: [PATCH] Created tunable to force small pages on stack allocation. Date: Fri, 10 Mar 2023 14:35:58 +0000 Message-Id: <20230310143558.361825-2-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230310143558.361825-1-cupertino.miranda@oracle.com> References: <20230310143558.361825-1-cupertino.miranda@oracle.com> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: LO6P123CA0017.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:313::7) To BN6PR1001MB2340.namprd10.prod.outlook.com (2603:10b6:405:30::36) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN6PR1001MB2340:EE_|CY8PR10MB6906:EE_ X-MS-Office365-Filtering-Correlation-Id: 5e5f8996-2182-4111-8119-08db2174cb0e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: utuG58b3TMd9MsvmRLriivrC2jEWB2sNZlyf6rIp3jWJA0GAkXcSeF0XtYP7xin0MPXPCarJQ2NKuV25AGtsg3EIhZChpQtLJSaL8RTGuFPGwxfaW9NOzg9L0obFxC8fu4TNfuIRBznO9bAa1dEEvbu8CuW7uRiFk3LoV1GmIacan0UbX369zy3D8harzjdlMyHQonKDbx3VYS5XqjmDzTQyZ+o44oBxNVKYGDOg+JCEUdyNW4aKSsGAcBUwXCL4oY1t7rHw7ifHrzQALpCZN5C2/+eCpZ5jkr45x9w+bg//D+AOFLqeSheoNZD9KEbRNPO1nXux9E6Qd5E9zwsnjJXa3212QsWZxZ2gpXKZTc1I7xiH/S2IIakgDnKsW/+oYeEM4GQco/GT72nt5CDnL7dRpSYBY7YGqo7OgtRP9kWp9ZfIGTtMUg8Rk3HNF7jC2elEHgfgZl0Qxbj3T4MOHu1EksAA7G/37nDWXAtaT9YysnRitlERC8NSQ6tUmadced2oAyxC2lxhSZYYGewAZeU60UloUBDoq8yCiXV3g21lT5fzcSrGXM1h+8FbiuWHXM9KsWCDoccswT6LxSF7Y/i948ILOIgQ/hNcsCZcnDNGpsBZdc2waTMcGMUo53d0jUAVAuOZRgiOY+z536BMig== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN6PR1001MB2340.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230025)(346002)(366004)(39860400002)(376002)(136003)(396003)(451199018)(107886003)(36756003)(6486002)(186003)(6666004)(2616005)(6512007)(478600001)(41300700001)(5660300002)(66946007)(4326008)(8936002)(66476007)(8676002)(6916009)(2906002)(66556008)(44832011)(6506007)(38100700002)(86362001)(316002)(1076003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?PpA95eoPHNpJ1BRleHG9qxwBt95iYnAxom7+lAasAtDCcIXiOEaZGiuzk4bQ?= =?us-ascii?Q?XYM931obQId8RTMp09KjnAYoLXKk5IoBDFhYiUkehDlCqygVJk909Dzc8jCo?= =?us-ascii?Q?yoavOo8lO49C7MUTs1TRAKMKgikzQive8t2VIrzfcoubINsInO5gaQ0Yjzw9?= =?us-ascii?Q?1+1jh9l+FDAYFR2K1zo2GXfCJWL8I2wDM8vJr9AHKqqhBUM8my921+Kqx3Qx?= =?us-ascii?Q?O+T9oftXcRU1kawfgUa2SFvEEXjbNTCPCaQ8Fk3GVF7/A/aR+hofcWDjHn06?= =?us-ascii?Q?AN/0d+10P310x4yhPiHZi0zLu4PA/VxmQkunT8IkI6/6ZZgxxHauHg7w8bdV?= =?us-ascii?Q?fNTnCtb6dgzBADgc34M36vKuenu0FUKuyCvXoxp6++Xx5uf7QDzUyoamkoMy?= =?us-ascii?Q?nIaWkXkUprcUJeFT5h9i3UHzkq9ej2EvoyQjAUVgDagE0hT7MWw7yGBY2gO7?= =?us-ascii?Q?pTyyCqtpIUo/351FrJTCFKJEv4KVsGVkmUpuTAJwf0QeF9O3Bqt3FN1hl94w?= =?us-ascii?Q?nt/b4dJWwltbSa7W3e0XqQW871jbqDRMq1rBtcFJw4L7zCMjYPxemyHdFqji?= =?us-ascii?Q?Ln7oXi12b2WtQAYu7F7oTHq3wKs1Oa0qgNDscDitmKp7sB4ne7o1VRxHqzVA?= =?us-ascii?Q?XTDgKBdPWkH/Y4zSNFecxPHwag0VwU8MKrzVif20t2NiSgfPFL0n6mpqpUN+?= =?us-ascii?Q?hV7sJaw7gUzWw1q4M3chB2V+Dfommv/nZEMxiCBEvzcwS2vvyq9HTH4HjUMQ?= =?us-ascii?Q?/TfnV7K1+Kk/HlThlMrSkGoWms+WUcunUK22T7YUsrkn6eaFi9guSPGWGsRj?= =?us-ascii?Q?aUE/MxK3RCuuOWMvMWttr3LDAgIPgMwGZ9gEbfYESRoFuuvFbG3t5EFeH5MT?= =?us-ascii?Q?HPgB7fCvmlsprr+qwYbYgRwOxzHJ0ocaSSqcI+H4WQVe4F8a0d1NACgYC4W+?= =?us-ascii?Q?VmPuGLxJC4K5wR/phBsuIfSYQ9AVWGek9DbnWBGI1KlVQBHyIqexEbI6k8KS?= =?us-ascii?Q?nkuwHGak9r27KzqsbSv61uq1Dk6fAdktbAb1Htwg09sUgo63iHvznpBq5nUM?= =?us-ascii?Q?2jUWUlAMQCSEZxvkw7hjFyBZgj3he7+nI981WygaTNTY7QF6yEKu+LTQuL/S?= =?us-ascii?Q?ary/PK/DRvuOq4wpEZh54LKh9XDp9yjK5k3yuLUU1r0D1NJLS+nBXsQhZjYP?= =?us-ascii?Q?tartSrv346U97neNPV5AsXvJGZ1MxmBTO56e0ScszWk1FzbV/x/mshXDCa54?= =?us-ascii?Q?gzJkePJIGmnUSQustEg00ZAlfr9nL04ltnzT1QVcSl6QaaLpeF131rQvJ/WD?= =?us-ascii?Q?7FPY60XX2rqkTQtfY0stQfJ9FvDdniD7g8fF12ju8uAwx9P6MRvaD44ahv+Y?= =?us-ascii?Q?mJ+SiqIImwEjBX3pWQzJaICVj3L8DvcW1LiculdV4xI/EeKDkjtW//u+oihH?= =?us-ascii?Q?AE2JIyXcgZvvBiJoeMPhNBFh6HHzFGfWCx2YnBXB9GehJjkrIlHuAn4nVuJL?= =?us-ascii?Q?2GMznAOKeG10ze5KuuHLYbkqZEyONI1xUURsngsW6aTScd/ja2/jsfzmzzbl?= =?us-ascii?Q?Y+4oeQo/yZcn1IjZFtWCplqeilavJdwNd3+Dfma3DHYwGUAak9gk3HUaMupZ?= =?us-ascii?Q?4g3+VcYPzeNSmjY/BUuI+4+sqK2XilhfrU/9m87Pn3gO?= X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: EO3tu4YiQKjVV6OCVqptO7gfatGRH4bn3RVnDi+cvFtlueyHp/iBmi80Z590bsIXwMKHQGwQSMif79sh/tj1bTxqLUCVBt36ujUKpv5NYL7owmgSOJoyQ4TaL7E++zYKDx20pQhWnV2eF7FmUM7R8ax63MkyPp1Tao1eaoHgBTxF4sUL0qDy3lmWO+sQ3KluqPCojvnjK+92QwoRD00dFz9JE6CL39CNmwqzaDRq1MMyYkw/6KGJc7REycWU0UgB7yVhQzczdEKAkIpyivAFxlFmzHMZItq+JhiFqX3XnVucuXMvzCX4nEX5csNycdCQ105gk4et1rFSAkmVaXvLITvdrTRNnZvx5bUz9yq6xlAX/yGVUB8o+gybQ0/Hb40H5EwAmQfGzQLES9l+TMmRjn8ifCXvETYtBsjeJFjU8fRSdDIzY5uV4HNch3fMmSLY+AGnxhxs4SHTrZVN9LGX/ji8zghcV7+bz9GL3tHFN1Z2RFwfGB+0aWATcnqRTgIhXS/7rCNpYgNet8SzX3Z69qBX+ZEwVIuLzcJxze29SgbYrsgRfPmiSInRgo08f5pdHnJgKCOXzvb7zIhFXSvdok9rCBiy1wvc7EolFPgcQol1OYzsNSc2Uj74ruMcQqksg4WWS9duDM8BZjxkM/Va/arrCJHY47w1Cqzp/DiT2p7K7T/5fIpGXSOroHpHKVj8TRlHa3dVY483Npk3QY74klfPF92EW4YfCIDlfdhrh3nXlxXr0i4XmrHhCCPeDko3UrOgLOiJcl+e2wrmvHQkKI1XukqzlzPpR47QhCo9VIY= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5e5f8996-2182-4111-8119-08db2174cb0e X-MS-Exchange-CrossTenant-AuthSource: BN6PR1001MB2340.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 10 Mar 2023 14:36:11.1736 (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: XRAgaxfK0q0gL/2Mh9nlwsybOFk55Yb/qmCD1LNiMwTIiFezrwWcjo2B07+52dSm/a7iOkLobMBAZBeBldIdGzmtnVdPJz+XomTfStn/hy4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6906 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-10_06,2023-03-10_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 spamscore=0 bulkscore=0 mlxlogscore=999 suspectscore=0 malwarescore=0 mlxscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303100118 X-Proofpoint-GUID: X7HaxJ-BphfKjyn8vlyhI1ahbBZYNNbE X-Proofpoint-ORIG-GUID: X7HaxJ-BphfKjyn8vlyhI1ahbBZYNNbE X-Spam-Status: No, score=-11.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H2,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 List-Id: Created tunable glibc.pthread.stack_hugetlb to control when hugepages can be used for stack allocation. In case THP are enabled and glibc.pthread.stack_hugetlb is set to 0, glibc will madvise the kernel not to use allow hugepages for stack allocations. --- nptl/allocatestack.c | 6 ++++++ nptl/nptl-stack.c | 1 + nptl/nptl-stack.h | 3 +++ nptl/pthread_mutex_conf.c | 23 +++++++++++++++++++++++ sysdeps/nptl/dl-tunables.list | 6 ++++++ 5 files changed, 39 insertions(+) diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index c7adbccd6f..c792c6ed1f 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -369,6 +369,12 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp, if (__glibc_unlikely (mem == MAP_FAILED)) return errno; + /* Do madvise in case the tunable glibc.pthread.stack_hugetlb is + set to 0, disabling hugetlb. */ + if (__glibc_unlikely (__nptl_stack_hugetlb == 0) + && __madvise(mem, size, MADV_NOHUGEPAGE) != 0) + return errno; + /* SIZE is guaranteed to be greater than zero. So we can never get a null pointer back from mmap. */ assert (mem != NULL); diff --git a/nptl/nptl-stack.c b/nptl/nptl-stack.c index 5eb7773575..e829711cb5 100644 --- a/nptl/nptl-stack.c +++ b/nptl/nptl-stack.c @@ -21,6 +21,7 @@ #include size_t __nptl_stack_cache_maxsize = 40 * 1024 * 1024; +int32_t __nptl_stack_hugetlb = 1; void __nptl_stack_list_del (list_t *elem) diff --git a/nptl/nptl-stack.h b/nptl/nptl-stack.h index 34f8bbb15e..d5b2612b4a 100644 --- a/nptl/nptl-stack.h +++ b/nptl/nptl-stack.h @@ -27,6 +27,9 @@ /* Maximum size of the cache, in bytes. 40 MiB by default. */ extern size_t __nptl_stack_cache_maxsize attribute_hidden; +/* Should allow stacks to use hugetlb. 1 is default */ +extern int32_t __nptl_stack_hugetlb; + /* Check whether the stack is still used or not. */ static inline bool __nptl_stack_in_use (struct pthread *pd) diff --git a/nptl/pthread_mutex_conf.c b/nptl/pthread_mutex_conf.c index 329c4cbb8f..6934b048b8 100644 --- a/nptl/pthread_mutex_conf.c +++ b/nptl/pthread_mutex_conf.c @@ -24,6 +24,7 @@ #include /* Get STDOUT_FILENO for _dl_printf. */ #include #include +#include struct mutex_config __mutex_aconf = { @@ -45,6 +46,26 @@ TUNABLE_CALLBACK (set_stack_cache_size) (tunable_val_t *valp) __nptl_stack_cache_maxsize = valp->numval; } +static void +TUNABLE_CALLBACK (set_stack_hugetlb) (tunable_val_t *valp) +{ + enum malloc_thp_mode_t thp_mode = __malloc_thp_mode (); + /* + Only allow to change the default of this tunable if the system + does support and has either 'madvise' or 'always' mode. Otherwise + the madvise() call is wasteful. + */ + switch(thp_mode) + { + case malloc_thp_mode_always: + case malloc_thp_mode_madvise: + __nptl_stack_hugetlb = (int32_t) valp->numval; + break; + default: + break; + } +} + void __pthread_tunables_init (void) { @@ -52,5 +73,7 @@ __pthread_tunables_init (void) TUNABLE_CALLBACK (set_mutex_spin_count)); TUNABLE_GET (stack_cache_size, size_t, TUNABLE_CALLBACK (set_stack_cache_size)); + TUNABLE_GET (stack_hugetlb, int32_t, + TUNABLE_CALLBACK (set_stack_hugetlb)); } #endif diff --git a/sysdeps/nptl/dl-tunables.list b/sysdeps/nptl/dl-tunables.list index bd1ddb121d..22fa9e0d12 100644 --- a/sysdeps/nptl/dl-tunables.list +++ b/sysdeps/nptl/dl-tunables.list @@ -33,5 +33,11 @@ glibc { maxval: 1 default: 1 } + stack_hugetlb { + type: INT_32 + minval: 0 + maxval: 1 + default: 0 + } } } -- 2.30.2