From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id D5787C3ABBF for ; Wed, 7 May 2025 14:11:41 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A20366B000A; Wed, 7 May 2025 10:11:40 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 9CF496B0083; Wed, 7 May 2025 10:11:40 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 896D36B0085; Wed, 7 May 2025 10:11:40 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 6938F6B000A for ; Wed, 7 May 2025 10:11:40 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id 79392C031E for ; Wed, 7 May 2025 14:11:40 +0000 (UTC) X-FDA: 83416299960.26.08C340F Received: from mail-qk1-f175.google.com (mail-qk1-f175.google.com [209.85.222.175]) by imf04.hostedemail.com (Postfix) with ESMTP id A180940010 for ; Wed, 7 May 2025 14:11:38 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CvYWa4Lh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.175 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1746627098; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=HnjZkBRVEGg6RMQCwW+FP47UVOcstV38TzY2od/qixs=; b=trdZC+f5IpJ95e1XpBzWOtlJFAfZOTCDYUVJgcyi6Pg7V4nTMM/sBqtkuCiRzn7QpJRNVn vkT85KMYBkmcNza2dhW//nDKIj0yUBZMfet0UOsitXCmX6KRrZmGoLQtism1ImM+BPTTb1 9ib3hmkyEpHLt2LPBxU8SGTnW4T6xxQ= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=CvYWa4Lh; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf04.hostedemail.com: domain of usamaarif642@gmail.com designates 209.85.222.175 as permitted sender) smtp.mailfrom=usamaarif642@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1746627098; a=rsa-sha256; cv=none; b=heTeroJAwT+YubQVfQqdtvuy5vkir6mVZkAn50l5dTrxwsqWd+0ZPp9AzGj3IuLSiT5l5z 9YxRMAAPBRWhBLx9Vy02hSzLfoV73J7LHPf8D35cRNmG7o8qu2DWaqcScKuol4nOs8aM0Z Hl2eQB6Q+85146eIQ0efFLt2flJspt8= Received: by mail-qk1-f175.google.com with SMTP id af79cd13be357-7c5c815f8efso694581485a.2 for ; Wed, 07 May 2025 07:11:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746627098; x=1747231898; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=HnjZkBRVEGg6RMQCwW+FP47UVOcstV38TzY2od/qixs=; b=CvYWa4LhmJRdxSmE8rPHNAPFCy7qYZRYrvDFD8uNV/fmS+Fzsn9WRAuVuQJSlfO1S9 q915eAszwi4hdDwkDz9/KqX/X+TSEttX4SFimYwHWhDlI2NK6yHJU/UqntkOIaj2722Y ZviY43YxiSjthlzxYLK42n0jPNrNwoaAyyPgoW6tEOsBumUdsQZLMlDraOOKqW4ImKhZ EC8UYiv2ITC5lMF7xWiugxvOmqYjjiMVhZp5lTI0E/nTcJrHC+DPANkKwU22HTf0Hjk0 inpsv3VsOEce5bYh53ZcQo4uwxu2XaJa+G5pASGsvvR2l7lTtSk+7Qjd7Jzkd4lvKoBH +AAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746627098; x=1747231898; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=HnjZkBRVEGg6RMQCwW+FP47UVOcstV38TzY2od/qixs=; b=g+l9T5q+20KzlcdqSyLZx5GFZd33p5Ino2oiLKNWwoiCJEeLVbWb2mXrR917sUiWDb qAoT6cLRrdAdHjC3dySiGcx76OhTgCjVmsBUAGZZj7Kc1oD+X2hA/Jo3sqk4+FyvxgSs /vsI106Ed784Vk8BItEmZVPCaQNcsWSsMYLo7UxQlVQMQVJ2AMSlF1VDASfR1tMcN8VY u77JOFTQnaUkALUjcx5jFgQ7HnBDMRRjTGPIvtbQisZXEfePRAXh1Bw9rCLbeMQ/57Gf lTeYk6kwbDZGj/QmwQZpr/JYYz8K57mAsqR/dxkMmKrvDanJ8sXw9EEmhpulXKtfsOVy +63A== X-Forwarded-Encrypted: i=1; AJvYcCUDjOFJm2+zplA8BAH6YI4HXj45EQja5Fr2F+1i6+2u6kXC/LS+SyHwcUXnn1cS/IgC46WufTZf8w==@kvack.org X-Gm-Message-State: AOJu0YxSXNzgyETm/MkvnplqSFntHGvHtyz4Hml+EzOt5nv+MHVwngzw orRmZtmIqeUahkk0vwKS5yLXc3o8R1hN9+B9M7+ETsEtOzhkJeDM X-Gm-Gg: ASbGnct2qt16Je9j7Qeva7YYssfxXbP1FDY7Q/KG5dcKD604bWBI2o3WQyv1YWiw5yE XWUYWeQF0HpcfzFdiVhV2sRqsChbhG6GAPa6EOawwoi2tQHgTSn2UG/TUtezGONOBbUD0nQTEWq qMNEDe28kgBm6J8zoofyfQrVhvzW4PzdUQ3mWi/cn0VrAx+tP7LBJLFnTZP2rAHwt4AJfMjVbtN yYdOK70+iqOEgmZyxtsuP+Uds+FHh9wufakdFP0n0sbbVl4hLkS5ggBqx0J4tQlA1zB72u7pXM3 qCU/p4hihWT7+qbXBJTswvqDx0SJ04Vgeyo3vf3n2ipCMYzr X-Google-Smtp-Source: AGHT+IG6yf1DLKd9RBqBzhmjs+vsqWMxZMxsOyEVpIx2HZ0YwcmkSl4odD1JjuxgVA3Jl74sl+M1Ug== X-Received: by 2002:a05:6214:226a:b0:6e4:4011:9df7 with SMTP id 6a1803df08f44-6f542a1dcf7mr48827996d6.16.1746627097378; Wed, 07 May 2025 07:11:37 -0700 (PDT) Received: from localhost ([2a03:2880:20ff:7::]) by smtp.gmail.com with ESMTPSA id 6a1803df08f44-6f542780ecfsm14100776d6.86.2025.05.07.07.11.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 May 2025 07:11:37 -0700 (PDT) From: Usama Arif To: Andrew Morton , david@redhat.com, linux-mm@kvack.org Cc: hannes@cmpxchg.org, shakeel.butt@linux.dev, riel@surriel.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, lorenzo.stoakes@oracle.com, Liam.Howlett@oracle.com, npache@redhat.com, ryan.roberts@arm.com, linux-kernel@vger.kernel.org, kernel-team@meta.com, Usama Arif Subject: [PATCH 0/1] prctl: allow overriding system THP policy to always Date: Wed, 7 May 2025 15:00:33 +0100 Message-ID: <20250507141132.2773275-1-usamaarif642@gmail.com> X-Mailer: git-send-email 2.47.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: n7zsyth16nzjgbdnch8mqme4grc4kkuf X-Rspamd-Queue-Id: A180940010 X-Rspam-User: X-Rspamd-Server: rspam05 X-HE-Tag: 1746627098-271184 X-HE-Meta: U2FsdGVkX1+eYr4iA++bPahdLkW1iyDMnmPToO2xmSlJfvtwLmlwXH+RG7TQ5r8oZwHXnNCtfa7bid03yDsRE49aNF8VkH3T8qiodqUdHGlUhOEkW8JSvO4yUC1lyTUSNtBrKhhuh3SYiA0qe4CcVzbkHkJwWXMWaRuofIzVKXxHG7CavqOnpCiKlktLTTLcS/6VfhiTp5euEoDdXqlD9fjlNXGAPMPerMlMdmUNjpvaqaahD3rZqUiHkFTGXjmVw/Jf1HVGTY1jhLW7sXo2KxOeGAhttCN4ZtuXq0qYucXNJlxeALiMbQyadRV+5bAepwipRciDUJmGHgoypfalUBqog65LHk7N5NlT8X9mfIYvdjb+2usUnLBhjRPoUmIqMXMvpWeFG9l8PoXmNKAfZNLQqw7zSjjImIS3m2B4O4AVGoe4vZT2Y/XPhw3B9PtbM0l3gb97rSlrqaWM5nj21s8sPyD+CZ/hs9G0WU2HJsbUEiVUFBiavSvVTo4vueapI8SaY1CiKEN2MjMehpLi2b09dgmrqt5Uu8Gt25nYrMk2X5U4LqvlOqDDqFXWyPrwHXCXx9QoidgFlO3JFsOf6bQjLDQR86VGUJtWyB3GNUeW2rV3nyJGaCsjmJEQv44oa/MM9EuGioW7wt7lsS9HQAcrARIXPBgYL6JpvRxFaW1TlaA0oMxTKgLBgr2Fil3PfVXUpNAm2nYygfvTIwSvhi2StgytnGm8mV6lWe1KMp+AveKd16o+hUxFC9ilkmi96tTpeWHchHGBTNSwXk0gxKCZjxtWqjK3FVyHIFg9YgPXlAmDrBfn/QygmOVgvITJhtcc4crqTH6oNLA0Mk8o1/jt3IFXmnfuIDrfRxLAOjnxjnlCo0FCZrDPq4MQUTa0XQu3qj+lRb8r0kNh5Q6teHc32yicsIbXj41KevfTdH8GZigDiAxp/9Y5JEn6H6qi9c2Ft2X6Hrp84a23Oh1 lIJXuTX8 6vneDCOE4VVNL58oewJaaLGnYl3gfvVln4gwMn4gd9X386Jl3B9pq1KGzNeK3tXOF3QgF6XnTdCLeGN19lqRizMekWSzJojXnNJtwKNeY13dad/iRoC+zh0BkESncnmd0E0j/VU/VbOnDCmvDdyJ9oZNBhakY0iqQUHWnmUYr32ArFRyYFqC9TSevScUTEvWSN8qh4mx/P7YSWAdzUHNp2c4y1QlBNjgKJBeF5d/jxRYFHFh4Gdw3xhtQTVgd3JU3KIzAzoh4nVusO7QVyDk+cnYNRU7jpg4Bqp2EgODVtSx7TZ3t6JLp8ZdlsNIUoOLcQ7zWMZ5avecRQTwOEs6XhSBvts8DV9zjHaW9VKu1PJMTQ9vCLStLouUFFRw82GTrj6XYs4SGlf4kJe7/KPV5+wH0OzGZHmBYV0FySQOfFYcl15w1HbIKKpzUD3s4E8w2zMInnNulRcNNcKOjq0P9Tux9Rg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Allowing override of global THP policy per process allows workloads that have shown to benefit from hugepages to do so, without regressing workloads that wouldn't benefit. This will allow such types of workloads to be run/stacked on the same machine. It also helps in rolling out hugepages in hyperscaler configurations for workloads that benefit from them, where a single THP policy is likely to be used across the entire fleet, and prctl will help override it. An advantage of doing it via prctl vs creating a cgroup specific option (like /sys/fs/cgroup/test/memory.transparent_hugepage.enabled) is that this will work even when there are no cgroups present, and my understanding is there is a strong preference of cgroups controls being hierarchical which usually means them having a numerical value. The output and code of test program is below: [root@vm4 vmuser]# echo madvise > /sys/kernel/mm/transparent_hugepage/enabled [root@vm4 vmuser]# echo inherit > /sys/kernel/mm/transparent_hugepage/hugepages-2048kB/enabled [root@vm4 vmuser]# ./a.out Default THP setting: THP is not set to 'always'. PR_SET_THP_ALWAYS = 1 THP is set to 'always'. PR_SET_THP_ALWAYS = 0 THP is not set to 'always'. #include #include #include #include #include #include #define PR_SET_THP_ALWAYS 78 #define SIZE 12 * (2 * 1024 * 1024) // 24 MB void check_smaps(void) { FILE *file = fopen("/proc/self/smaps", "r"); if (!file) { perror("fopen"); return; } char line[256]; int is_hugepage = 0; while (fgets(line, sizeof(line), file)) { // if (strstr(line, "AnonHugePages:")) // printf("%s\n", line); if (strstr(line, "AnonHugePages:") && strstr(line, "24576 kB")) { // printf("%s\n", line); is_hugepage = 1; break; } } fclose(file); if (is_hugepage) { printf("THP is set to 'always'.\n"); } else { printf("THP is not set to 'always'.\n"); } } void test_mmap_thp(void) { char *buffer = (char *)mmap(NULL, SIZE, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (buffer == MAP_FAILED) { perror("mmap"); return; } // Touch the memory to ensure it's allocated memset(buffer, 0, SIZE); check_smaps(); munmap(buffer, SIZE); } int main() { printf("Default THP setting: \n"); test_mmap_thp(); printf("PR_SET_THP_ALWAYS = 1 \n"); prctl(PR_SET_THP_ALWAYS, 1, NULL, NULL, NULL); test_mmap_thp(); printf("PR_SET_THP_ALWAYS = 0 \n"); prctl(PR_SET_THP_ALWAYS, 0, NULL, NULL, NULL); test_mmap_thp(); return 0; } Usama Arif (1): prctl: allow overriding system THP policy to always per process include/linux/huge_mm.h | 3 ++- include/linux/mm_types.h | 7 ++----- include/uapi/linux/prctl.h | 3 +++ kernel/sys.c | 16 ++++++++++++++++ tools/include/uapi/linux/prctl.h | 3 +++ .../perf/trace/beauty/include/uapi/linux/prctl.h | 3 +++ 6 files changed, 29 insertions(+), 6 deletions(-) -- 2.47.1