On 22.05.2013 18:58, Stefano Stabellini wrote:
On Wed, 22 May 2013, Jim Fehlig wrote:
> Marek Marczykowski wrote:
>> On 19.04.2013 13:10, Stefano Stabellini wrote:
>>
>>> On Thu, 11 Apr 2013, Marek Marczykowski wrote:
>>>
>>>> On 11.04.2013 09:52, Ian Campbell wrote:
>>>>
>>>>> On Thu, 2013-04-11 at 05:09 +0100, Jim Fehlig wrote:
>>>>>
>>>>>>> + /* This will fill xenstore info about free and dom0
memory - if missing,
>>>>>>> + * should be called before starting first domain */
>>>>>>> + if (libxl_get_free_memory(libxl_driver->ctx,
&free_mem)) {
>>>>>>> + VIR_ERROR(_("cannot get free memory
info"));
>>>>>>> + goto error;
>>>>>>> + }
>>>>>>>
>>>>>>>
>>>>>> Should failure of libxl_get_free_memory() really be fatal and
prevent
>>>>>> the driver from loading?
>>>>>>
>>>>> I'm not sure it is intended to be called like this...
>>>>>
>>>>> I think it is intended to be called as part of starting every domain,
to
>>>>> check if there is enough free memory for that domain, rather than
>>>>> calling it once at start of day.
>>>>>
>>>>> In that context if it fails or returns less than the required amount
of
>>>>> memory then that would be fatal for starting that domain.
>>>>>
>>>>> In xl we use this as part of the auto balloon of dom0, see
>>>>> xl_cmdimplg.c:freemem. Does libvirt do autoballooning or does it
require
>>>>> dom0_mem? Perhaps this is handled at a higher level?
>>>>>
>>>> The problem is how libxl set initial value for freemem-slack. If, for
any
>>>> reason, dom0 hasn't (almost) all memory assigned before creating
first domain,
>>>> 15% of host memory will no longer be used at all. This "any
reason" can be
>>>> dom0_mem, which is covered by "auto" value for autoballoon in
xen-unstable
>>>> (actually only for xl, not libxl in general).
>>>>
>>> This is the (in)famous incompatibility between autoballoon and dom0_mem.
>>>
>>>
>>>
>>>> But this can also happen if
>>>> somebody calls xl set-mem 0 <some value>. The later case
doesn't mean the user
>>>> want to disable autoballoon completely.
>>>>
>>> Calling "xl set-mem 0" manually should be compatible with
>>> autoballoon.
>>>
>>
>> Unless it is called before first domain start (which case is covered by my
patch).
>>
>>
>>> However it wouldn't work with dom0_mem.
>>>
>>>
>>>
>>>> And to answer you question - libvirt rely on libxl autoballoon.
>>>>
>>> Could we introduce something similar to autoballoon=auto to libvirt?
>>>
>>> Maybe we should push down the autoballoon option to libxl: we should
>>> probably rename autoballoon to libxl_memory_management, enable it
>>> automatically during initialization (and call
>>> libxl__fill_dom0_memory_info) unless dom0_mem has been passed as an
>>> option, in which case we would disable it. If we do it at the libxl
>>> level we would cover xl as well as libvirt and also fix the "xl set-mem
>>> 0" case.
>>>
>>
>> Looks good for me, but IIUC it's too late for such change in 4.3 and it
>> doesn't qualify for later backport, right? If so, some approach still is
>> needed in libvirt for xen 4.2 and 4.3 (like my simple patch). This still
>> doesn't make libvirt compatible with dom0_mem, but at least cover one
>> (independent) case. Perhaps additionally autoballoon=auto code should be
>> copied from xl to libvirt to cover dom0_mem case with xen 4.2 and 4.3?
>>
>
> After reading this thread again, it sounds like the best option is to
> support the autoballoon option in libvirt, e.g. in
> /etc/libvirt/libxl.conf. (We currently don't have a config file for the
> libxl driver, but I think we'll need one anyhow for other knobs, similar
> to qemu.conf.) As you note, even if autoballoon is pushed down to
> libxl, libvirt would need to handle it for older libxl. And libvirt
> needs to handle the dom0_mem case...
Given all the troubles that we had with the autoballoon option in
xl/libxl and how it clashes with dom0_mem, I would strongly advise to
consider implementing something like autoballoon=auto from the start.
Ok, will send such patch (almost ready). For now it will contain copy&paste
auto_autobaloon() from xl.c, so the same logic. Can be easily extended to
config option in the future, but probably I will not have time for this.
--
Best Regards,
Marek Marczykowski
Invisible Things Lab