On 01/05/2011 02:00 PM, Alexander Graf wrote:
On 05.01.2011, at 20:54, Andrea Arcangeli wrote:
Hello everyone,
On Wed, Jan 05, 2011 at 08:44:38PM +0100, Alexander Graf wrote:
On 05.01.2011, at 19:02, Michael Roth wrote:
On 01/05/2011 09:10 AM, Andrea Arcangeli wrote:
The bug is still there so I rediffed the old patch against current
code.
On a related topic: could somebody give me advice on how to implement
a command line (command line seems enough, the other option would be
monitor command) to make the MADV_MERGEABLE conditional? I got KSM on
THP working fine but KSM may decrease performance by increasing the
number of copy on write and by splitting hugepages, so we'd like to be
able to turn off KSM on a per-VM basis (not on the whole host, which
of course we already can by setting /sys/kernel/mm/ksm/run to 0) so
that high perf VMs will keep running at maximum speed with KSM off but
others may still benefit from KSM. For that I need to make the below
MADV_MERGEABLE madvise conditional to something and the code itself
will be trivial, we've just to converge on a command line option
(hopefully quickly ;).
There was a -mem_prealloc option added a while back to set MAP_POPULATE on
memory mapped in via the -mem-path option. So an analogous -mem_nomerge option
or something along that line seems reasonable for conditionally unsetting
QEMU_MADV_MERGEABLE.
And for consistency you should probably make both your proposed changes for
-mem-path'd memory as well.
Why not clean up all that mess and introduce a new -mem option that would just
take all of the several options as parameters?
-mem size=512,populate=on,ksm=off
and default -m to something reasonable with the new syntax.
I'm neutral... so feel free to decide what I should implement ;).
One comment on combining -m ksm=off (or -mem_nomerge) with
-mem-path. It seems unnecessary because ksm can't be turned on on
VM_HUGETLB vmas (MADV_MERGEABLE will return -EINVAL) and mem-path only
makes sense if used in combination with hugetlbfs (which sets
VM_HUGETLB of course).
Sure, not all combinations make sense. But "-mem
size=1G,path=/dev/shm/vm1.ram,populate=on" would make sense, no? TPH should go along the same
lines here too. It'd just be a flag "tph" that defaults to on if available.
That way we could also do all the sanity checks in a single place. I really
like the idea of combining memory management command line parameters into a
single option :). In the end I'd assume it's Anthony's call though.
Where it's really helpful is in the ever elusive configuration file
format. -mem becomes:
[mem]
size=1G
path=/dev/shm/vm1.ram
populate=on
Which is nice from a grouping perspective.
Regards,
Anthony Liguori
Alex