qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v3] rcu: reduce more than 7MB heap memory by mal


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH v3] rcu: reduce more than 7MB heap memory by malloc_trim()
Date: Wed, 6 Dec 2017 10:48:45 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.4.0

On 06/12/2017 10:26, Yang Zhong wrote:
>   Hello Paolo,
> 
>   The best option is only trim one time after guest kernel bootup or VM 
> bootup, and as for
>   hotplug/unhotplug operations during the VM running, the trim still can do 
> for each batch
>   memory free because trim will not impact VM performance during VM running 
> status.
> 
>   So, the key point is qemu is hard to know when guest ernel bootup is over. 
> If you have some 
>   suggestions, please let me know. thanks!

It shouldn't be hard.  Does QEMU's RCU thread actually get any
significant activity after bootup?  Hence the suggestion of keeping
malloc_trim in the RCU thread, but only do it if some time has passed
since the last time.

Maybe something like this every time the RCU thread runs:

 static uint64_t next_trim_time, last_trim_time;
 if (current time < next_trim_time) {
     next_trim_time -= last_trim_time / 2    /* or higher */
     last_trim_time -= last_trim_time / 2    /* same as previous line */
 } else {
     trim_start_time = current time
     malloc_trim(...)
     last_trim_time = current time - trim_start_time
     next_trim_time = current time + last_trim_time
 }

Where the "2" factor should be tuned so that both your and Shannon's
scenario work fine.

Thanks,

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]