From patchwork Tue Mar 21 14:51:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cupertino Miranda X-Patchwork-Id: 66690 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 05E6B38515DD for ; Tue, 21 Mar 2023 14:52:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 05E6B38515DD DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1679410344; bh=sess2ViW1EnkvQxszwdpDlIdxwQk16j92iJy4oHIpXU=; h=To:Cc:Subject:Date:In-Reply-To:References:List-Id: List-Unsubscribe:List-Archive:List-Post:List-Help:List-Subscribe: From:Reply-To:From; b=qbkMT4F08K4xHCmFiOh4T6Dux0G3ssXElAqtDnv9VttrqdTDc7TFX+zvlsiK4GNL2 PPxrCWDKgJTPoKHQtoFoeRpXI4w8n/R0CBmZQgMCRjd0pl/XMeqz7/Ccjlxfhoh2i6 34nhYKviprHF/SVtuDHCJAxoUmpGIznOrYGvSNM0= 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 574503858C1F for ; Tue, 21 Mar 2023 14:52:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 574503858C1F Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32LE45uh016595 for ; Tue, 21 Mar 2023 14:52:01 GMT Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3pd4wt6fhc-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 21 Mar 2023 14:52:00 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32LDgASH038732 for ; Tue, 21 Mar 2023 14:52:00 GMT Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2041.outbound.protection.outlook.com [104.47.51.41]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3pd3rdbd1a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK) for ; Tue, 21 Mar 2023 14:52:00 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=agWQGOeib5fHSJEp3gk4ugpVFT7h0F5gkJwyw9WPFE3uXlyVclPSgeBfykW7bdAHLtzsAHLPDdg8OWs3qo0CNM1oRtmOlz0wWM//v2uOquemSkVKN/YG0KCnh/rJeN8Bl0JnuQZp7W644MvQ3IWEZReJnyRY8kWFH+MaqVhdCH5SXiDOnP0LOOG0dxaOQEUV2hlDwtraPRvuE2bJd4x4rkUV4k0AVpDCbrfBg/Wwv1cB1ouH957fVqBCb2AsHqZDxYNPCIvSUcnNwP9YfGPO0IvHpCc+owTuYE0x8mOz8W4deY8i/cukYSyf7ZcjlMHb7q/pSRJacrDKsLUCAt/GCA== 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=sess2ViW1EnkvQxszwdpDlIdxwQk16j92iJy4oHIpXU=; b=WB8jPoShd1IFCIwTegXbYQV41zTo97rKV2kDzOh3AzZyJHWjtlKH4oXDaMxXjF3Sl2XejzHS8fTA9DAgdfibwOmYTevyOA5LePb0SWRVqTCcSA0G4vMijIDcmEs9AbF+zYw8/uuL4gK4VKLPwT9LCbXyjSlDqZKBJ9ARPMc0jjnKeDG9A02U031rz+zoTmGgXsLFmsfSMYiPIgqVMEkYzFDtO9V++CRDDAj7vwEHBFi02/bK7IVMQnlFb4Rz1woz6C3dKE9x6JqtRNeJ394d4SZ72sTHKGe8c/zAptKZAA4uBsQK4Wox5MpSXgwF8bfRJh+e2BTr/SxHyl9domI0LQ== 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 Received: from BN6PR1001MB2340.namprd10.prod.outlook.com (2603:10b6:405:30::36) by CH3PR10MB7257.namprd10.prod.outlook.com (2603:10b6:610:128::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.37; Tue, 21 Mar 2023 14:51:58 +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.6178.036; Tue, 21 Mar 2023 14:51:58 +0000 To: libc-alpha@sourceware.org Cc: jose.marchesi@oracle.com, elena.zannoni@oracle.com, Cupertino Miranda Subject: [PATCH v3 1/1] Created tunable to force small pages on stack allocation. Date: Tue, 21 Mar 2023 14:51:16 +0000 Message-Id: <20230321145116.571178-2-cupertino.miranda@oracle.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20230321145116.571178-1-cupertino.miranda@oracle.com> References: <20230321145116.571178-1-cupertino.miranda@oracle.com> X-ClientProxiedBy: SG2P153CA0033.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c7::20) To BN6PR1001MB2340.namprd10.prod.outlook.com (2603:10b6:405:30::36) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BN6PR1001MB2340:EE_|CH3PR10MB7257:EE_ X-MS-Office365-Filtering-Correlation-Id: 7a54323c-1ac6-44c1-a2c4-08db2a1bd23e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: JO8XU+ddLfAjjinrfcIODa37z1NPlTHyt5Aq2MYyWi3NWrNOcYANt0vn4Q0q2CzLLab5gpYa1bkeX4KRCdjlacklgS3eeIZM31bozjbhEQCcw9OrtiUX6O/qjSGqUUpPWQVCC9+ePv5ISpWkVQtFNB/2jcX46ONX2+pyhLo9E8G9uUG3l4eo3uqmYh9TlgS6dMo2oKFr0S9LZLAGp+qt3dVUFAg3B9rnkl/iKROymwfbFWSJnwkviiqe6wPBz1cTPDdN9D6IgdPSE3snWfXr5mrA2Nf4ZRrE2LhK41IzJkbDUBnL2sYIPfIMW1jfDeKbMVOQYBi/GaN66b6tq7I/dc0gAZRAKmnM6XBsOkslKc7zfKcAmZSPP92MpZqvxFybxf8YRKoyTo7Y0Yr6Knb/EeBPwiwboetHgt8UDaj7G0C5UccgnC7/aQIssUOrh9FY9vjXkoaHHzCffMdWDDxFyN4Q+Les2UsI3qnK55Pc/CxhobXnFPmPN3gZyQrqUXXTifjdO9nESBh/5qg+K7F2QQAjKSChYDTTaPksOhMPw+ajw10Y/TDkLSXRx9VDA19kgnHsX0luvwdEdQsVXTNFlhkgM/AcVvih4lXq2w4liVcrVSR+e8Proj123AqNR2FiJ1S/+NGctm+d0empbkz1Dw== 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)(376002)(396003)(136003)(366004)(39860400002)(346002)(451199018)(2616005)(478600001)(38100700002)(86362001)(44832011)(36756003)(8676002)(66556008)(4326008)(66476007)(41300700001)(8936002)(2906002)(5660300002)(66946007)(6916009)(1076003)(6506007)(186003)(107886003)(6666004)(316002)(6486002)(6512007); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: b7hknVK1XY6Wz2TOuqcBG0UmkwiMQIaNz9pM/eEx8Fyq5vOj95Wt3payWheBkx8l3wUAap5O70JIE9+IrEaIwq+tIwrmwQi9HSSdsnizzzLp95ZIfeli17fDefsmWjH9v1PrpviqKyOonQxlJ7HeYBBnaniC9jCZ32LlONY/4wcQ2ks/8OPHO1/S6ZN3l+3ZqH740FPf2dqgvK3e3o1ETA6/B12KGCq5QNEj7xl3NgmXYmtyIoSXyDImC4cKG7iui06d8IO4tAUFkGMfenW3XNtrF+ynSzl4zWEW5X/6oDqEfnNc2n3MREdpTLlr0vrap1FLZDOsQS/IMmRAox89e7FfOA1H3YMkfZ3MHAPlE0P87yTuP4GK+gJ80nRQUKUhznXi4M/KkJbc4siyrzp5G4df2bVO+Nf9VBZT8GwNOqt+cBFGIreVbIA+9Hcvm3EtGve7RyBFUiFuU41yVfI8C8UrSLSA8DeieA4OiQraffTMumxCU/ZxnAfActRZr/48ppOQrXfVaroG86PXQN1aIsxPfvhGhBfB0tdICgencOc/Vh+io0AvNwSNqvIggxC3ni8ZYaLD7C8mshlI1pqMwZCWII+97ENenZ6XoxMaBHyEbJvZXXzFnu4RF/+mlWVnQROhe82SNBRcgsJ8qTFQGJjG0yLg1NVDt/mZv6+Gipq6q+G6y2RDZJvE1JYJqH15P7y1q2J9ek2+zi+T2Qp/cuJ5qH+ET+dQC5MJiq7eIQ3aaVk6qVBmqlanQ6WZ1cISnyJckCZ5c01Mydps9Tm2l6DOZcCLAm8G7Zj6g1eM8IAnfDHv464RfC0yeU/6Hhmo71ThhJRJ6lE5G+gFW6JER3uq2tA3RDr1G6J86Q1DFWR7CEjw1LSmemYBqAT4aQyOEjQ1t9glEXQSZ+50WbyL2aJs1vZamQmRJWqfttsPNKedgbJPOvM8knH+u/Lg12J2gsrM1f3WTWZSirxBzR+clAxBGJd4gIevndiBWG1Hg4dVeZAiz5AntbBOome/EzJsZFSO8LZvJpxMSrDmzeXoq6jgzQVwLoF3SlW5P29cZQLif6NRicpkZLk+GNB0NahUANZW9swAvhGKLBvnPmVb1hc/7S7YQ+KZO/hOEnyg/y74te67G53XxtayS374Pk4+ko4/HT1uDSnPt9dgzRvSRARRPl4pp7JlHEjOf/Pi+RhDRgpuH5ApDTeBJQCGJsonPwQ76mGYEmNz7MceIJmnsiZe3w7XnjgR90DNhMtZ07Y+MuLCQPQ5FX774Udwu6OcZgCGg4MzA4fDQfQsgIdPFOoUzCOLkp3Yf+SiLOHQBmvmwsraJ/LX/zPyGUP59P9va611m+IwYtxMNxqnhMVwMJ4TEC+fwxESpge53ZCcSaIcX5U3BuBpK27/6L89ExkgIyw/qTUiyGZsEtm8My3dDP70+jkCRDyOGBhw0+AqZkfpkn089O3DhmTggx+vQfb2jxoq2SV9ENFLmAhMqdhFOnRe/47vhaGphilO1o+XXbOOQqOJzaKDkew9eOyny7FdiVE2hWsh3Z7b1Yecny9z96MjENvWAmrhUxnSnHxdk7VNx9rJcJtBT4npJ5q/E/y59ph5bx347RPOZPSgcyEutP2VZw3pD6je5LOK8YcnH6n6NC3qbUDBHXNQG3yEixuM X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: GYSD7yksOYwoBfM6X3zOmD1jw0V5Nn9YX141gabTD5iOFTuS/VjoTuBsRYlnfHe0CI22UCescGBXH8sZv6Q61Kuk2OEoTWipbfmR4fpzrWhCXqicTqvwx4zAJfPAGPmXJtzr5Qlc9l3VgiqROBKJWOBUD9Nq2PZ7vZBcyedE+oO6RIQV4EFG/+IOy4aNjiS9DsL7yNCw8PmG4K3CsWzl4Qc4ZAgzYuLerBAZ8JYzrUXDzJO4y+oDpSz8WM8zz7CkQQJiOb1qf6l/p7CZWjwk5ZJXq2zw9o4ZIEsyV3mK4trJXnZQ5aVv/+b1CgpcncZRndvHhFy5WGi0hIYqXDyPimH2DXfhUhaIGHdLqGQXWS1wms+JcVhHp88tUaiEJy5zwmXwjbegdJspZcm+KdR4Noyxdgx6NN+e3gGMVmQLf26v6VtdlW0qIGhqnAgKz/D1BavNdD2rBZbPjYSisfO6jL190DdExe21+91L5SFWOVQMG+lrYa6+30O/aQtV9akkIaN5vF+7N0r30x8cr2HJhUfvHRAhj9RoIrxG9M05u3YPQqfxUVtzG2DGCkCUWWsZpawGB5lSfooA2YrvSUl04SYrXhPjJrK3BfiBAVZP8Ex2CDStPOw25seOWn3UW7mZ4d8flkHh1ETRiDRYtr4QxjTI1XxxZzerdr1/NxUjmngPNCS2GcY0H//yXEt1pBheJIiOAQRxkS34C9EyDNJqb2BlLQ1yepoXdjKbNp3UPW4z2jJ4Ifp+WUFnqqfuOp/3 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7a54323c-1ac6-44c1-a2c4-08db2a1bd23e X-MS-Exchange-CrossTenant-AuthSource: BN6PR1001MB2340.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2023 14:51:58.5985 (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: xkQCQgsfMfCe/dREoz9ZDlun5zaLdr9UnBQGoldpwIBfTiB/Puh0dWUOKeCcq+L1KSdvsAgzyYi7DjSHJKxoKTMgh8R3r0giaXQ1nVRyIcY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR10MB7257 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-21_11,2023-03-21_01,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 adultscore=0 mlxlogscore=819 mlxscore=0 bulkscore=0 phishscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2303150002 definitions=main-2303210116 X-Proofpoint-GUID: iNM6iCzLBgQ_OSm_ev2ODyD1uA5WWIXq X-Proofpoint-ORIG-GUID: iNM6iCzLBgQ_OSm_ev2ODyD1uA5WWIXq X-Spam-Status: No, score=-11.8 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 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: Cupertino Miranda via Libc-alpha From: Cupertino Miranda Reply-To: Cupertino Miranda Errors-To: libc-alpha-bounces+patchwork=sourceware.org@sourceware.org Sender: "Libc-alpha" 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. Changed from v1: - removed the __malloc_thp_mode calls to check if hugetlb is enabled. Changed from v2: - Added entry in manual/tunables.texi - Fixed tunable default to description - Code style corrections. --- manual/tunables.texi | 11 +++++++++++ nptl/allocatestack.c | 6 ++++++ nptl/nptl-stack.c | 1 + nptl/nptl-stack.h | 3 +++ nptl/pthread_mutex_conf.c | 8 ++++++++ sysdeps/nptl/dl-tunables.list | 6 ++++++ 6 files changed, 35 insertions(+) diff --git a/manual/tunables.texi b/manual/tunables.texi index 70dd2264c5..de6fd9d6b3 100644 --- a/manual/tunables.texi +++ b/manual/tunables.texi @@ -459,6 +459,17 @@ registration on behalf of the application. Restartable sequences are a Linux-specific extension. @end deftp +@deftp Tunable glibc.pthread.stack_hugetlb +This tunable allows to configure stack allocation never to use hugetlbs. +This is more of an RSS optimization, for example in scenarios where many +threads get created, keeping RSS to a minimum, but also allowing hugestlbs to +be used for malloc allocations. + +The default is @samp{1} and preservs glibc default behaviour. +When set to @samp{0}, it advises the kernel not to use hugetlbs for stack +allocation. +@end deftp + @node Hardware Capability Tunables @section Hardware Capability Tunables @cindex hardware capability tunables diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index c7adbccd6f..f9d8cdfd08 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..cf90b27c2b 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..60ef9095aa 100644 --- a/nptl/pthread_mutex_conf.c +++ b/nptl/pthread_mutex_conf.c @@ -45,6 +45,12 @@ 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) +{ + __nptl_stack_hugetlb = (int32_t) valp->numval; +} + void __pthread_tunables_init (void) { @@ -52,5 +58,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..4cde9500b6 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: 1 + } } }