[LTP] [PATCH] mem/lib: Keep KSM off when child_alloc() allocate memory in single thread

Jan Stancek jstancek@redhat.com
Tue Jun 21 10:39:50 CEST 2016



----- Original Message -----
> From: "Li Wang" <liwang@redhat.com>
> To: "Jan Stancek" <jstancek@redhat.com>
> Cc: ltp@lists.linux.it
> Sent: Tuesday, 21 June, 2016 9:56:13 AM
> Subject: Re: [PATCH] mem/lib: Keep KSM off when child_alloc() allocate memory in single thread
> > What if KSM was enabled before test started?
> 
> From what I know about KSM, if a memory area affected by function
> madvise(..., MADV_MERGEABLE), the samepages located in that merory will be
> easily merged by ksmd as long as we turn it on (echo 1
> >/sys/kernel/mm/ksm/run).
> 
> And the ".../ksm/run" default value is 0, it means if we just affect
> the memory area by madvise() function but with ksmd off, there won't
> have any samepages be merged.

True, but there's no guarantee that every distro and every user will
keep the default set to 0. As I recall IBM's PowerKVM has KSM enabled
by default.

> > I'd skip this entire else block if lite == 1. With KSM off, it's nearly
> > identical to oom(NORMAL).
> 
> Hmm, actually there still have a little bit difference from
> oom(NORMALNORMAL).
> 
> In alloc_mem() function, if testcase == KSM, the memory area will do
> madvise operation like:
> 	madvise(s, length, MADV_MERGEABLE)

That's what I meant by "nearly identical". Looking at kernel,
only ksm seems to care about that flag, and we turn KSM off:

$ grep -l MADV_MERGEABLE -r mm/
mm/Kconfig
mm/madvise.c
mm/ksm.c

Regards,
Jan


More information about the ltp mailing list