From: Wanlong Gao <gaowanlong@cn.fujitsu.com>
To: Andrew Jones <drjones@redhat.com>
Cc: aliguori@us.ibm.com, ehabkost@redhat.com, qemu-devel@nongnu.org,
hutao@cn.fujitsu.com,
peter huangpeng <peter.huangpeng@huawei.com>,
lcapitulino@redhat.com, bsd@redhat.com, pbonzini@redhat.com,
y-goto@jp.fujitsu.com, lersek@redhat.com, afaerber@suse.de,
Wanlong Gao <gaowanlong@cn.fujitsu.com>
Subject: Re: [Qemu-devel] [PATCH V8 07/11] NUMA: set guest numa nodes memory policy
Date: Wed, 21 Aug 2013 15:23:40 +0800 [thread overview]
Message-ID: <52146AFC.1050509@cn.fujitsu.com> (raw)
In-Reply-To: <791179793.1629753.1377069307325.JavaMail.root@redhat.com>
On 08/21/2013 03:15 PM, Andrew Jones wrote:
>
>
> ----- Original Message -----
>> On 08/20/2013 09:41 PM, Andrew Jones wrote:
>>>> +
>>>> + /* This is a workaround for a long standing bug in Linux'
>>>> + * mbind implementation, which cuts off the last specified
>>>> + * node. To stay compatible should this bug be fixed, we
>>>> + * specify one more node and zero this one out.
>>>> + */
>>>> + clear_bit(numa_num_configured_nodes() + 1, numa_info[i].host_mem);
>>>> + if (mbind(ram_ptr + ram_offset, len, bind_mode,
>>>> + numa_info[i].host_mem, numa_num_configured_nodes() + 1, 0)) {
>>>> + perror("mbind");
>>>> + return -1;
>>>> + }
>>>
>>> >From my quick read of this patch series, I think these two calls of
>>> numa_num_configured_nodes() are the only places that libnuma is used.
>>> Is it really worth the new dependency? Actually libnuma will only calculate
>>> what it returns from numa_num_configured_nodes() once, because it simply
>>> counts bits in a bitmask that it only initializes at library load time. So
>>> it would be more robust wrt to node onlining/offlining to avoid libnuma and
>>> to just fetch information from sysfs as needed anyway. In this particular
>>> code though, I think replacing numa_num_configured_nodes() with a maxnode,
>>> where
>>>
>>> unsigned long maxnode = find_last_bit(numa_info[i].host_mem,
>>> MAX_CPUMASK_BITS)
>>
>> Sorry I can't understand this since numa_numa_configured_nodes() is for host,
>> but why could we find the last bit of guest setting to replace it?
>>
>
> You're not using numa_numa_configured_nodes() to index _the_ host's nodemask,
> you're using it to find the highest possible bit set in _a_ nodemask,
> numa_info[i].host_mem. mbind doesn't need its 'maxnode' param to be
> the highest possible host node bit, but rather just the highest possible bit
> set in the nodemask passed to it. find_last_bit will find that bit. You still
> need to add 1 to it as you do with numa_numa_configured_nodes() though, due
> to the kernel decrementing it by one erroneously as you've pointed out in your
> comment.
Thank you very much for your explanation, I'll change as you said. ;)
Regards,
Wanlong Gao
>
> drew
>
next prev parent reply other threads:[~2013-08-21 7:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-20 1:07 [Qemu-devel] [PATCH V8 00/11] Add support for binding guest numa nodes to host numa nodes Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 01/11] NUMA: add NumaOptions, NumaNodeOptions and NumaMemOptions Wanlong Gao
2013-08-21 20:59 ` Eric Blake
2013-08-22 1:12 ` Wanlong Gao
2013-08-22 2:29 ` Eric Blake
2013-08-22 3:16 ` Wanlong Gao
2013-08-22 8:46 ` Laszlo Ersek
2013-08-22 16:14 ` Eric Blake
2013-08-22 16:36 ` Laszlo Ersek
2013-08-22 19:21 ` Paolo Bonzini
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 02/11] NUMA: split -numa option Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 03/11] NUMA: move numa related code to numa.c Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 04/11] NUMA: Add numa_info structure to contain numa nodes info Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 05/11] NUMA: Add Linux libnuma detection Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 06/11] NUMA: parse guest numa nodes memory policy Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 07/11] NUMA: set " Wanlong Gao
2013-08-20 13:41 ` Andrew Jones
2013-08-21 2:43 ` Wanlong Gao
2013-08-21 7:15 ` Andrew Jones
2013-08-21 7:23 ` Wanlong Gao [this message]
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 08/11] NUMA: add qmp command set-mem-policy to set memory policy for NUMA node Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 09/11] NUMA: add hmp command set-mem-policy Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 10/11] NUMA: add qmp command query-numa Wanlong Gao
2013-08-20 1:07 ` [Qemu-devel] [PATCH V8 11/11] NUMA: convert hmp command info_numa to use qmp command query_numa Wanlong Gao
2013-08-20 13:43 ` [Qemu-devel] [PATCH V8 00/11] Add support for binding guest numa nodes to host numa nodes Paolo Bonzini
2013-08-21 1:22 ` Wanlong Gao
2013-08-21 9:00 ` Paolo Bonzini
2013-08-21 9:08 ` Wanlong Gao
2013-08-21 9:22 ` Paolo Bonzini
2013-08-21 9:34 ` Wanlong Gao
2013-08-21 10:00 ` Paolo Bonzini
2013-08-21 9:33 ` Laszlo Ersek
2013-08-21 9:37 ` 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=52146AFC.1050509@cn.fujitsu.com \
--to=gaowanlong@cn.fujitsu.com \
--cc=afaerber@suse.de \
--cc=aliguori@us.ibm.com \
--cc=bsd@redhat.com \
--cc=drjones@redhat.com \
--cc=ehabkost@redhat.com \
--cc=hutao@cn.fujitsu.com \
--cc=lcapitulino@redhat.com \
--cc=lersek@redhat.com \
--cc=pbonzini@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).