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 4700CC83F17 for ; Tue, 15 Jul 2025 20:12:18 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id DE3268D0002; Tue, 15 Jul 2025 16:12:17 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D93BC8D0001; Tue, 15 Jul 2025 16:12:17 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C82518D0002; Tue, 15 Jul 2025 16:12:17 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id B329F8D0001 for ; Tue, 15 Jul 2025 16:12:17 -0400 (EDT) Received: from smtpin15.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 63C1C1D712B for ; Tue, 15 Jul 2025 20:12:17 +0000 (UTC) X-FDA: 83667595914.15.617A6A2 Received: from tor.source.kernel.org (tor.source.kernel.org [172.105.4.254]) by imf06.hostedemail.com (Postfix) with ESMTP id C9545180007 for ; Tue, 15 Jul 2025 20:12:15 +0000 (UTC) Authentication-Results: imf06.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Phh0UF8h; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf06.hostedemail.com: domain of namhyung@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=namhyung@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752610335; a=rsa-sha256; cv=none; b=pH0FeRwnxoBD4SON8R4Uzz9ClR4j8zAMr47l/94VNpzxaoKpFlulz/cHB1KR5eJiETDL1a 99NdTIChBitlArDBxkDaKFxno6ywqZ8dmMo2KHzpIYMnQJxWEbAVqwdXg8jt5I6y6mtYiN Q1mCmEbvdBpaOKSUnakEMuUo6qU6T4k= ARC-Authentication-Results: i=1; imf06.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=Phh0UF8h; dmarc=pass (policy=quarantine) header.from=kernel.org; spf=pass (imf06.hostedemail.com: domain of namhyung@kernel.org designates 172.105.4.254 as permitted sender) smtp.mailfrom=namhyung@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752610335; 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-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=E7BsZEHLuU3hfgqGXfsWMzAPyveWYLqS8eDzgBNwF8M=; b=offVjkrhvxSfIcuMNeWsWiOec+PJ7TGh+GO8pwXJGlG8l9xnfufFi2lsOhOAArrgUOYzXu iUm9xkr1Bgl8sQxt1ViU7a24QVerKC1U0y18q0tsJe7MFkdT6p9x+k1kdyrJfDSQg0KZtX 7fLRlT24GsWy4EYMt6qADniCSoNq/G8= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 2959F61466; Tue, 15 Jul 2025 20:12:15 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id CF399C4CEE3; Tue, 15 Jul 2025 20:12:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1752610334; bh=Ugj3SvyZeQC/ZYk7Yjls7+GuE+Ryu5ToxJ5cbuJU0Hs=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=Phh0UF8hnir7yoDF8nMzQrr9gLcs5wJi+PfJm2hyasiCV39b8bvPjsG7rZx8C8osq smDi4x1lcZqYGB6QuqG1PsPATyY3QJNgkLAQVCWDjinX1MBrJgPPvp9DoAu9nwI0te kEv5HKyfmd5obpA6C5uNJHNdom4Oz+27N+hRmTr1c/5TIgqWaPZFVeT1LNKmP8OFng NT6fzcDCHnul2v4VE0kySQLhE1A6cOhVAgkzzmpNB8juCuOYkHWRJqTTVjrcFfqTU9 EUtc7HZmRRlDeqadzTihCqf6Ui3SFtuOeQsRq5VM1adRdVO45KmgerdfM1NQCPqTKe Xtv5LNKxgDaVQ== Date: Tue, 15 Jul 2025 13:12:12 -0700 From: Namhyung Kim To: Ankur Arora Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, x86@kernel.org, akpm@linux-foundation.org, david@redhat.com, bp@alien8.de, dave.hansen@linux.intel.com, hpa@zytor.com, mingo@redhat.com, mjguzik@gmail.com, luto@kernel.org, peterz@infradead.org, acme@kernel.org, tglx@linutronix.de, willy@infradead.org, raghavendra.kt@amd.com, boris.ostrovsky@oracle.com, konrad.wilk@oracle.com Subject: Re: [PATCH v5 06/14] perf bench mem: Allow mapping of hugepages Message-ID: References: <20250710005926.1159009-1-ankur.a.arora@oracle.com> <20250710005926.1159009-7-ankur.a.arora@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <20250710005926.1159009-7-ankur.a.arora@oracle.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: C9545180007 X-Stat-Signature: 5d5uj5a45xbzpbaypx9fpwtbt5g4f1h4 X-HE-Tag: 1752610335-977 X-HE-Meta: U2FsdGVkX1/FOL4db6L1sdQ3g8W8ch1i0sbVifcyxetjlcxCEA8pVoNaISl9Tw6XJaxg9UJyjiSztZIZ7k5YSrrU1xx/9qx6jrjPnXvyfGIgo7JYW4HM8maEjXynj+wgS/JVPylFfWU5L2S3cMhmyEjfzqlcftTI09JtBoKPmL+9WzvU533Cr1AvjIbNFn5NrUxqskqgnvq6ghkrwy7AtxC2zc2c9ltMW2McHEd/UIlcq256a6WArllxTH5FGz9zu5YeK7t3+hfMkvMh3IzbqEMtdEz8f4J2yuNUPN9dCa0/WOBv57q+O3JHaQpCeBHi009EmbsjQBhesURkfDHuHU9K2ZL6cIdpzfzLwuXmBCOWGm0XdTlzTJYKXTj451vDYTNSZt4CMZaoXNRhhC6+l0TcIfYY0xoC6hzJGJOcZMbHI7AcvzwZp6hYkcIaJNW+lYrO+b879eRPgQSGVvMRW1nLKB6yIXI2T5IywSBHXdeMFldYUh0aHWjTYKWO6/S9I5uJBdcwheJdfQqu2go1h6LbXvVUfHWLiNQyYIGXSgmAD2FYlPAjon1PnrwggMtphh6pLa+BXo97kcTEnBo1khARL0r84zOROmyZ220FcdbmP2d6Lq2HEjhcEjWRY8a2Wy6hwN3/a0JeQnoY0radHjjWQBxYlDkJN51/HtGxulclL9IUsu7F4aTG4mNkEJ/JE6HprtPbfwGWUIKur8OnvD8bNAAyUQamX5NA8dWstV+srICrYAHwyjrKnsZFGIUshj4Pnkp7KDFkqbK0n9QW9JFR1ZPEMIOj1hwSmRDteVU2u9QLrDnDlMWnfMqZ4XBtYDFQ+W/g+Ylu268nW+bAvYGrNkx1pDWYRYAgqwypd/eqcgBzv5uyMnMUrDxiYJnG8ClMW80nG4Ri6zpq20kyb5X2fpQCj4mVpgK/PJZraflStqnjAmKB2VWHh45VLOmvIN/LYLU05rBQxhQdLe9 Syc+E5x3 nP9XImNdJDSonfu9pzHDdN2xdbI/gCUc4duSQVZ79JKeckENPkdllD+L/4FHmsMhA46Wy5fcLmVeyPUWSSyHTdIeQa3hmrVi5x6wJDT+UIoHsH+JZ9lKkkvPF9OY+U+vnCZUD73TI651gNFhVLkQ4YQCUR+xxCd+VxX+tO8t8XSgGEDidfKK8OOdw+DBzhWSNekqaaoiPiMTr3nDhBEfUviRk7zK1n8ygh76qyrpWXtf25Biqhuz5ktAE+XDw2BjKgOGOG1jf1R+2gmoQ4MrZfhuzh8cxxeKL++f6KDGNpHdy9JlYyyUwmpYeDg== 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: On Wed, Jul 09, 2025 at 05:59:18PM -0700, Ankur Arora wrote: > Page sizes that can be selected: 4KB, 2MB, 1GB. > > Both the reservation and node from which hugepages are allocated > from are expected to be addressed by the user. It'd be nice if you could provide an example in the commit message when you introduce a new command line option. Also please update Documentation/perf-bench.txt. Thanks, Namhyung > > Signed-off-by: Ankur Arora > --- > tools/perf/bench/mem-functions.c | 33 ++++++++++++++++++++++++++++---- > 1 file changed, 29 insertions(+), 4 deletions(-) > > diff --git a/tools/perf/bench/mem-functions.c b/tools/perf/bench/mem-functions.c > index 914f9048d982..e4d713587d45 100644 > --- a/tools/perf/bench/mem-functions.c > +++ b/tools/perf/bench/mem-functions.c > @@ -25,11 +25,17 @@ > #include > #include > #include > +#include > > #define K 1024 > > +#define PAGE_SHIFT_4KB 12 > +#define PAGE_SHIFT_2MB 21 > +#define PAGE_SHIFT_1GB 30 > + > static const char *size_str = "1MB"; > static const char *function_str = "all"; > +static const char *page_size_str = "4KB"; > static unsigned int nr_loops = 1; > static bool use_cycles; > static int cycles_fd; > @@ -39,6 +45,10 @@ static const struct option options[] = { > "Specify the size of the memory buffers. " > "Available units: B, KB, MB, GB and TB (case insensitive)"), > > + OPT_STRING('p', "page", &page_size_str, "4KB", > + "Specify page-size for mapping memory buffers. " > + "Available sizes: 4KB, 2MB, 1GB (case insensitive)"), > + > OPT_STRING('f', "function", &function_str, "all", > "Specify the function to run, \"all\" runs all available functions, \"help\" lists them"), > > @@ -60,6 +70,7 @@ struct bench_params { > size_t size; > size_t size_total; > unsigned int nr_loops; > + unsigned int page_shift; > }; > > struct bench_mem_info { > @@ -202,7 +213,8 @@ static void __bench_mem_function(struct bench_mem_info *info, struct bench_param > if (r->fn.fini) r->fn.fini(info, p, &src, &dst); > return; > out_init_failed: > - printf("# Memory allocation failed - maybe size (%s) is too large?\n", size_str); > + printf("# Memory allocation failed - maybe size (%s) %s?\n", size_str, > + p->page_shift != PAGE_SHIFT_4KB ? "has insufficient hugepages" : "is too large"); > goto out_free; > } > > @@ -210,6 +222,7 @@ static int bench_mem_common(int argc, const char **argv, struct bench_mem_info * > { > int i; > struct bench_params p = { 0 }; > + unsigned int page_size; > > argc = parse_options(argc, argv, options, info->usage, 0); > > @@ -229,6 +242,15 @@ static int bench_mem_common(int argc, const char **argv, struct bench_mem_info * > } > p.size_total = (size_t)p.size * p.nr_loops; > > + page_size = (unsigned int)perf_atoll((char *)page_size_str); > + if (page_size != (1 << PAGE_SHIFT_4KB) && > + page_size != (1 << PAGE_SHIFT_2MB) && > + page_size != (1 << PAGE_SHIFT_1GB)) { > + fprintf(stderr, "Invalid page-size:%s\n", page_size_str); > + return 1; > + } > + p.page_shift = ilog2(page_size); > + > if (!strncmp(function_str, "all", 3)) { > for (i = 0; info->functions[i].name; i++) > __bench_mem_function(info, &p, i); > @@ -285,11 +307,14 @@ static int do_memcpy(const struct function *r, struct bench_params *p, > return 0; > } > > -static void *bench_mmap(size_t size, bool populate) > +static void *bench_mmap(size_t size, bool populate, unsigned int page_shift) > { > void *p; > int extra = populate ? MAP_POPULATE : 0; > > + if (page_shift != PAGE_SHIFT_4KB) > + extra |= MAP_HUGETLB | (page_shift << MAP_HUGE_SHIFT); > + > p = mmap(NULL, size, PROT_READ|PROT_WRITE, > extra | MAP_PRIVATE | MAP_ANONYMOUS, 0, 0); > > @@ -307,11 +332,11 @@ static bool mem_alloc(struct bench_mem_info *info, struct bench_params *p, > { > bool failed; > > - *dst = bench_mmap(p->size, true); > + *dst = bench_mmap(p->size, true, p->page_shift); > failed = *dst == NULL; > > if (info->alloc_src) { > - *src = bench_mmap(p->size, true); > + *src = bench_mmap(p->size, true, p->page_shift); > failed = failed || *src == NULL; > } > > -- > 2.43.5 >