From: Yin Fengwei <fengwei.yin@intel.com>
To: linux-mm@kvack.org, akpm@linux-foundation.org, jack@suse.cz,
hughd@google.com, kirill.shutemov@linux.intel.com,
mhocko@suse.com, ak@linux.intel.com, aarcange@redhat.com,
npiggin@gmail.com, mgorman@techsingularity.net,
willy@infradead.org, rppt@kernel.org, dave.hansen@intel.com,
ying.huang@intel.com, tim.c.chen@intel.com
Cc: fengwei.yin@intel.com
Subject: [RFC PATCH 4/4] mcpage: get_unmapped_area return mcpage size aligned addr
Date: Mon, 9 Jan 2023 15:22:32 +0800 [thread overview]
Message-ID: <20230109072232.2398464-5-fengwei.yin@intel.com> (raw)
In-Reply-To: <20230109072232.2398464-1-fengwei.yin@intel.com>
For x86_64, let mmap start from mcpage size aligned address.
Using firefox with one tab to access the entry page of
"www.lwn.net" as workload. With mcpage set to 2, collected the
count about the mcpage can't be used because mcpage is out of
VMA range:
run1 run2 run3 avg stddev
With this patch: 1453, 1434, 1428 1438 13.0%
Without this patch: 1536, 1467, 1493 1498 34.8%
It shows that the chance of using mcpage for anonymous mapping
is increased 4.2% with the patch.
For general possible impact because the virtual address space is
more sparse, run will-it-scale:malloc1, will-it-scale:page_fault1
and kernel build w/o the change based on v6.1-rc7. The result shows
no performance change introduced by this change:
malloc1:
v6.1-rc7 v6.1-rc7 + this patch
---------------- ---------------------------
23338 -0.5% 23210 will-it-scale.per_process_ops
page_fault1:
v6.1-rc7 v6.1-rc7 + this patch
---------------- ---------------------------
96322 -0.1% 96222 will-it-scale.per_process_ops
kernel build:
v6.1-rc7 v6.1-rc7 + this patch
---------------- ---------------------------
28.45 +0.2% 28.52 kbuild.buildtime_per_iteration
One drawback of the change is that the effective ASLR bits is reduced
by mcpage_order bits.
Signed-off-by: Yin Fengwei <fengwei.yin@intel.com>
---
arch/x86/kernel/sys_x86_64.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/arch/x86/kernel/sys_x86_64.c b/arch/x86/kernel/sys_x86_64.c
index 8cc653ffdccd..9b5617973e81 100644
--- a/arch/x86/kernel/sys_x86_64.c
+++ b/arch/x86/kernel/sys_x86_64.c
@@ -154,6 +154,10 @@ arch_get_unmapped_area(struct file *filp, unsigned long addr,
info.align_mask = get_align_mask();
info.align_offset += get_align_bits();
}
+
+ if (info.align_mask < ~MCPAGE_MASK)
+ info.align_mask = ~MCPAGE_MASK;
+
return vm_unmapped_area(&info);
}
@@ -212,6 +216,10 @@ arch_get_unmapped_area_topdown(struct file *filp, const unsigned long addr0,
info.align_mask = get_align_mask();
info.align_offset += get_align_bits();
}
+
+ if (info.align_mask < ~MCPAGE_MASK)
+ info.align_mask = ~MCPAGE_MASK;
+
addr = vm_unmapped_area(&info);
if (!(addr & ~PAGE_MASK))
return addr;
--
2.30.2
next prev parent reply other threads:[~2023-01-09 7:19 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-09 7:22 [RFC PATCH 0/4] Multiple consecutive page for anonymous mapping Yin Fengwei
2023-01-09 7:22 ` [RFC PATCH 1/4] mcpage: add size/mask/shift definition for multiple consecutive page Yin Fengwei
2023-01-09 13:24 ` Matthew Wilcox
2023-01-09 16:30 ` Dave Hansen
2023-01-09 17:01 ` Matthew Wilcox
2023-01-10 2:53 ` Yin, Fengwei
2023-01-09 7:22 ` [RFC PATCH 2/4] mcpage: anon page: Use mcpage for anonymous mapping Yin Fengwei
2023-01-09 7:22 ` [RFC PATCH 3/4] mcpage: add vmstat counters for mcpages Yin Fengwei
2023-01-09 7:22 ` Yin Fengwei [this message]
2023-01-09 8:37 ` [RFC PATCH 0/4] Multiple consecutive page for anonymous mapping Kirill A. Shutemov
2023-01-11 6:13 ` Yin, Fengwei
2023-01-09 17:33 ` David Hildenbrand
2023-01-09 19:11 ` Matthew Wilcox
2023-01-10 14:13 ` David Hildenbrand
2023-01-10 3:57 ` Yin, Fengwei
2023-01-10 14:40 ` David Hildenbrand
2023-01-11 6:12 ` Yin, Fengwei
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20230109072232.2398464-5-fengwei.yin@intel.com \
--to=fengwei.yin@intel.com \
--cc=aarcange@redhat.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=dave.hansen@intel.com \
--cc=hughd@google.com \
--cc=jack@suse.cz \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-mm@kvack.org \
--cc=mgorman@techsingularity.net \
--cc=mhocko@suse.com \
--cc=npiggin@gmail.com \
--cc=rppt@kernel.org \
--cc=tim.c.chen@intel.com \
--cc=willy@infradead.org \
--cc=ying.huang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox