[libvirt] [PATCH v3] qemu: Support numad
Osier Yang
jyang at redhat.com
Fri Mar 16 04:49:55 UTC 2012
On 03/16/2012 06:12 AM, Eric Blake wrote:
> On 03/08/2012 06:36 AM, Osier Yang wrote:
>> numad is an user-level daemon that monitors NUMA topology and
>> processes resource consumption to facilitate good NUMA resource
>> alignment of applications/virtual machines to improve performance
>> and minimize cost of remote memory latencies. It provides a
>> pre-placement advisory interface, so significant processes can
>> be pre-bound to nodes with sufficient available resources.
>
> Better late than never, but here's a few things you might want to tweak:
>
>
>> +#if defined(NUMAD)
>> +static char *
>> +qemuGetNumadAdvice(virDomainDefPtr def)
>> +{
>> + virCommandPtr cmd = NULL;
>> + char *args = NULL;
>> + char *output = NULL;
>> +
>> + if (virAsprintf(&args, "%d:%lu", def->vcpus, def->mem.cur_balloon)< 0) {
>> + virReportOOMError();
>> + goto out;
>> + }
>
> This prints into a temporary,
>
>> + cmd = virCommandNewArgList(NUMAD, "-w", args, NULL);
>
> only to then copy it to cmd and have to free the temporary. It's fewer
> lines of code, and less malloc pressure, to avoid the temporary by
> printing directly into cmd:
>
> cmd = virCommandNewArgList(NUMAD, "-w", NULL);
> virCommandAddArgFormat(&cmd, "%d:%llu", def->vcpus, def->mem.cur_balloon);
>
>> + if (vm->def->cpumask) {
>> + /* XXX why don't we keep 'cpumask' in the libvirt cpumap
>> + * format to start with ?!?! */
>> + for (i = 0 ; i< maxcpu&& i< vm->def->cpumasklen ; i++)
>> + if (vm->def->cpumask[i])
>> + VIR_USE_CPU(cpumap, i);
>
> This comment just verbalizes what has already been bothering me. It
> would be really nice if someone could convert all of our internal uses
> of cpumask (with its inefficient one-byte-per-cpu representation) into
> virBitmask(), as well as making virBitmask provide convenience functions
> for converting to and from our stringized format as well as from the
> public api cpumap (8 cpus per byte).
I will do these work in seperate patches. Thanks.
Osier
More information about the libvir-list
mailing list