On 01/06/2015 16:33, Rodrigo Trujillo wrote:
On 06/01/2015 09:24 AM, Aline Manera wrote:
>
>
> On 28/05/2015 10:59, Rodrigo Trujillo wrote:
>> In order to support memory hotplug, guest must have maxMemory and NUMA
>> configured in the xml.
>> For maxMemory, this patch changes xml generation at guest creation
>> time, adding maxMemory equals to host total memory and memory slots as
>> the integer number of GiB that fit inside maxMemory (by design users
>> will be allowed to add only memory chunks of 1GB).
>> For NUMA, this patch adds the simplest configuration possible, creating
>> only one node with all vcpus and memory set in the template.
>>
>> Signed-off-by: Rodrigo Trujillo <rodrigo.trujillo(a)linux.vnet.ibm.com>
>> ---
>> src/kimchi/model/vms.py | 8 ++++++++
>> src/kimchi/vmtemplate.py | 29 +++++++++++++++++++----------
>> 2 files changed, 27 insertions(+), 10 deletions(-)
>>
>> diff --git a/src/kimchi/model/vms.py b/src/kimchi/model/vms.py
>> index f0182b9..dc7f91f 100644
>> --- a/src/kimchi/model/vms.py
>> +++ b/src/kimchi/model/vms.py
>> @@ -94,6 +94,14 @@ class VMsModel(object):
>> if pool_uri:
>> vm_overrides['storagepool'] = pool_uri
>> vm_overrides['fc_host_support'] =
>> self.caps.fc_host_support
>> +
>
>> + # Setting maxMemory and slots parameter values
>> + # getInfo memory value comes in MiB, so dividing by 1024
>> integer,
>> + # gives the interger maximum number of slots to use in
>> chunks of
>> + # 1 GB
>> + vm_overrides['max_memory'] = self.conn.get().getInfo()[1] *
>> 1024
>> + vm_overrides['slots'] = self.conn.get().getInfo()[1] / 1024
>> +
>
> As those values are the same to every guest and will never change (at
> least by now) I suggest insert it to the 'defaults' in the osinfo.py
Yes, I can move to there. Just a doubt, is osinfo instantiated once ?
Because I coded in VM create function to catch the case where the host
had its memory increased on-the-fly.
The 'defaults' in osinfo is a dict. The dict is built on server start up.
To make it "refreshable" you will need to change the osinfo.lookup()
which is called on every Template creation.
>
>> t = TemplateModel.get_template(t_name, self.objstore,
>> self.conn,
>> vm_overrides)
>>
>> diff --git a/src/kimchi/vmtemplate.py b/src/kimchi/vmtemplate.py
>> index e047228..a20098d 100644
>> --- a/src/kimchi/vmtemplate.py
>> +++ b/src/kimchi/vmtemplate.py
>> @@ -270,17 +270,25 @@ class VMTemplate(object):
>> return input_output
>>
>> def _get_cpu_xml(self):
>
>> -
>> + # NUMA configuration. Necessary for memory hotplug
>> + cpus = self.info.get('cpus') - 1
>
> Just curious about the count above. What is it for?
I am getting the total number of CPUS to set below in the NUMA node.
We are going to have only one node, so, all cpus must be
set in that node, such as "cpus=0-3", if guest has 4 cpus ; or
"cpus=0" if the guest has 1 cpu. Actually I am setting the "cpu
ID",
starting from zero to X-1.
Thanks for the explanation.
>
>> + xml = E.cpu(E.numa(E.cell(
>> + id='0',
>> + cpus='0-' + str(cpus) if cpus > 0 else '0',
>> + memory=str(self.info.get('memory') << 10),
>> + unit='KiB')))
>> +
>> + # Include CPU topology, if provided
>> cpu_info = self.info.get('cpu_info')
>> - if cpu_info is None:
>> - return ""
>> - cpu_topo = cpu_info.get('topology')
>> - if cpu_topo is None:
>> - return ""
>> - return etree.tostring(E.cpu(E.topology(
>> - sockets=str(cpu_topo['sockets']),
>> - cores=str(cpu_topo['cores']),
>> - threads=str(cpu_topo['threads']))))
>> + if cpu_info is not None:
>> + cpu_topo = cpu_info.get('topology')
>> + if cpu_topo is not None:
>> + xml.insert(0, E.topology(
>> + sockets=str(cpu_topo['sockets']),
>> + cores=str(cpu_topo['cores']),
>> + threads=str(cpu_topo['threads'])))
>> +
>> + return etree.tostring(xml)
>>
>> def to_vm_xml(self, vm_name, vm_uuid, **kwargs):
>> params = dict(self.info)
>> @@ -313,6 +321,7 @@ class VMTemplate(object):
>> %(qemu-stream-cmdline)s
>> <name>%(name)s</name>
>> <uuid>%(uuid)s</uuid>
>> + <maxMemory slots='%(slots)s'
>> unit='KiB'>%(max_memory)s</maxMemory>
>> <memory unit='MiB'>%(memory)s</memory>
>> <vcpu>%(cpus)s</vcpu>
>> %(cpu_info)s
>
> _______________________________________________
> Kimchi-devel mailing list
> Kimchi-devel(a)ovirt.org
>
http://lists.ovirt.org/mailman/listinfo/kimchi-devel
>
_______________________________________________
Kimchi-devel mailing list
Kimchi-devel(a)ovirt.org
http://lists.ovirt.org/mailman/listinfo/kimchi-devel