
Il 05/03/2014 09:01, Zhanghailiang ha scritto:
Hi all:
Currently, we use cgroup(memory) to support memory QoS on KVM platform, and use "mlock" on qemu to support "memory reserved".
The "mlock" seems to be not appropriate.
Now qemu "mlock" memory in the main thread, which would lock iothread (qemu_mutex_lock_iothread), if the memory size is large, that will consume lots of time.
It means whenever we want to set a new 'mlock', the VM would be blocked for a while.
I'm not sure I understand how the mlock-ed memory is used. Are you using a custom malloc, for example with g_mem_set_vtable?
Paolo
Hi Paolo: Thanks for your reply. As you know qemu has an option "-mlock", I think it has some problems. If we set "-realtime mlock=on", then qemu will mlockall vm's memory, It is a very time consuming action, and it will block the libvirt api until it finished. so I think it is better to do 'mlock' asynchronously, the flow chart can be described like below. Is it ok? Flow chart: main funciton qmp command "set_ram_minguarantee" | | | | create "mlock" thread change value of lock_ram_size | | | | |------>thread wait<-------------wake up "mlock" thread | | | | | | |-------mlock(lock_ram_zie) zhanghailiang