All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Laszlo Ersek <lersek@redhat.com>
Cc: aliguori@us.ibm.com, ehabkost@redhat.com,
	peter.huangpeng@huawei.com, qemu-devel@nongnu.org,
	bsd@redhat.com, y-goto@jp.fujitsu.com, lcapitulino@redhat.com,
	afaerber@suse.de, Wanlong Gao <gaowanlong@cn.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH V5 01/12] NUMA: add NumaOptions, NumaNodeOptions and NumaMemOptions
Date: Wed, 17 Jul 2013 17:26:20 +0200	[thread overview]
Message-ID: <51E6B79C.4040909@redhat.com> (raw)
In-Reply-To: <51E6B73C.4060003@redhat.com>

Il 17/07/2013 17:24, Laszlo Ersek ha scritto:
> On 07/17/13 16:44, Paolo Bonzini wrote:
>> Il 17/07/2013 16:33, Laszlo Ersek ha scritto:
>>>>>>> opts-visitor can handle lists of simple scalar types. Ie. it can do
>>>>>>> -numa node,nodeid=3,cpus=3-4,cpus=9-10. It can't save the parsing of
>>>>>>> intervals (eg. 3-4).
>>>>>
>>>>> Saving the parsing of intervals is not necessary for this use case.  So
>>>>> if we can make it '*cpus':['int'], we should.
>>>>>
>>>>> But is it the opts-visitor "can handle" lists of integers, or does code
>>>>> have to be written?  If the latter, can you whip up a prototype?
>>> No extra code needs to be written. The current use case is
>>> NetdevUserOptions.{dnssearch,hostfwd,guestfwd}; see commit 094f15c5, and
>>> (by Klaus Stengel) commit 63d2960b.
>>
>> This is to handle lists, but want about converting
>>
>>   cpus=3-4,cpus=9-10
>>
>> to
>>
>>   'cpus': [3,4,9,10]
> 
> Oh, that. :) That does need extra code. Something along the lines of:
> 
> (a), in the JSON, reuse the existing String wrapper type, and make
> "cpus" an optional list of String[s]:
> 
> { 'type': 'NumaNodeOptions',
>   'data': {
>    '*nodeid':		'uint16',
>    '*cpus':		['String'] }}
> 
> (b) in the code, traverse the StringList like net_init_slirp_configs()
> or slirp_dnssearch() does. Parse each element as an interval, set bit
> ranges / report errors.
> 
>     static int numa_node_parse_cpu_range(int nodeid,
>                                          const char *cpu_range)
>     {
>         /* what numa_node_parse_cpus() does in 02/12 */
>     }
> 
>     static int numa_node_parse(const NumaNodeOptions *opts)
>     {
>         const StringList *cpu_range;
> 
>         /* not sure how to handle the (!opts->has_nodeid) case; let's
>          * assume we have a nodeid here */
> 
>         if (opts->nodeid >= MAX_NODES) {
>             fprintf(stderr,
>                     "NUMA nodeid %d reaches / exceeds maximum %d\n",
>                     opts->nodeid, MAX_NODES);
>             return -1;
>         }
> 
>         for (cpu_range = opts->cpus;
>              cpu_range != NULL;
>              cpu_range = cpu_range->next) {
>             int ret;
> 
>             ret = numa_node_parse_cpu_range(opts->nodeid,
>                                             cpu_range->value->str);
>             if (ret < 0) {
>                 return ret;
>             }
>         }
>         return 0;
>     }
> 
> Did you mean something like this by prototype?

Yes, though I guess Wanlong could do this by himself.  A more
interesting prototype is "how to add code to OptsVisitor that parses
intervals when it sees ['int']", and this where you can help the most.

Paolo

  reply	other threads:[~2013-07-17 15:26 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-17  9:29 [Qemu-devel] [PATCH V5 00/12] Add support for binding guest numa nodes to host numa nodes Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 01/12] NUMA: add NumaOptions, NumaNodeOptions and NumaMemOptions Wanlong Gao
2013-07-17 10:35   ` Laszlo Ersek
2013-07-17 11:11     ` Paolo Bonzini
2013-07-17 13:16       ` Wanlong Gao
2013-07-17 12:24     ` Eric Blake
2013-07-17 13:57       ` Laszlo Ersek
2013-07-17 14:20         ` Paolo Bonzini
2013-07-17 14:33           ` Laszlo Ersek
2013-07-17 14:44             ` Paolo Bonzini
2013-07-17 15:24               ` Laszlo Ersek
2013-07-17 15:26                 ` Paolo Bonzini [this message]
2013-07-17 15:45                   ` Laszlo Ersek
2013-07-17 15:54                     ` Paolo Bonzini
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 02/12] NUMA: split -numa option Wanlong Gao
2013-07-17 11:00   ` Laszlo Ersek
2013-07-17 11:14     ` Paolo Bonzini
2013-07-17 11:13   ` Paolo Bonzini
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 03/12] NUMA: move numa related code to numa.c Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 04/12] NUMA: Add numa_info structure to contain numa nodes info Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 05/12] NUMA: Add Linux libnuma detection Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 06/12] NUMA: parse guest numa nodes memory policy Wanlong Gao
2013-07-17 12:31   ` Eric Blake
2013-07-17 13:12     ` Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 07/12] NUMA: split out the common range parser Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 08/12] NUMA: set guest numa nodes memory policy Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 09/12] NUMA: add qmp command set-mem-policy to set memory policy for NUMA node Wanlong Gao
2013-07-17 12:36   ` Eric Blake
2013-07-17 13:22     ` Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 10/12] NUMA: add hmp command set-mem-policy Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 11/12] NUMA: add qmp command query-numa Wanlong Gao
2013-07-17 12:41   ` Eric Blake
2013-07-17 13:24     ` Wanlong Gao
2013-07-17  9:29 ` [Qemu-devel] [PATCH V5 12/12] NUMA: convert hmp command info_numa to use qmp command query_numa Wanlong Gao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=51E6B79C.4040909@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=afaerber@suse.de \
    --cc=aliguori@us.ibm.com \
    --cc=bsd@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=gaowanlong@cn.fujitsu.com \
    --cc=lcapitulino@redhat.com \
    --cc=lersek@redhat.com \
    --cc=peter.huangpeng@huawei.com \
    --cc=qemu-devel@nongnu.org \
    --cc=y-goto@jp.fujitsu.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.