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