From: Matthew Hall <mhall-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org>
To: dev-VfR2kkLFssw@public.gmane.org
Subject: Re: Possible bug in eal_pci pci_scan_one
Date: Mon, 13 Oct 2014 22:47:12 -0700 [thread overview]
Message-ID: <20141014054711.GB16919@mhcomputing.net> (raw)
In-Reply-To: <20141006091344.GA14759-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org>
Hi,
Did anybody get a chance to look what might be going on in this weird NUMA
bug? I could use some help to understand how you're supposed to make code that
will work right on both NUMA and non-NUMA. Otherwise it's hard to make a
bulletproof DPDK based app that will be able to reliably init on single
socket, dual socket non-NUMA, and dual socket NUMA boxes.
Thanks,
Matthew.
On Mon, Oct 06, 2014 at 02:13:44AM -0700, Matthew Hall wrote:
> Hi Guys,
>
> I'm doing my development on kind of a cheap machine with no NUMA support...
> but several years ago I used DPDK to build a NUMA box that could do 40 gbits
> bidirectional L4-L7 stateful traffic replay.
>
> So given the past experiences I had before, I wanted to clean the code up so
> it'd work well if some crazy guy tried my code on one of these huge boxes,
> too, but then I ran into some weird issues.
>
> 1) When I call rte_eth_dev_socket_id() I get back -1. But the call can return
> -1 if the port_id is bogus or if pci_scan_one didn't get a numa_node (because
> you're on a non-NUMA box for example).
>
> int rte_eth_dev_socket_id(uint8_t port_id)
> {
> if (port_id >= nb_ports)
> return -1;
> return rte_eth_devices[port_id].pci_dev->numa_node;
> }
>
> So you couldn't tell the different between non-NUMA or a bad port value, etc.
>
> 2) The code's behavior and comments disagree with one another. In the
> pci_scan_one function, there's this code:
>
> /* get numa node */
> snprintf(filename, sizeof(filename), "%s/numa_node",
> dirname);
> if (access(filename, R_OK) != 0) {
> /* if no NUMA support just set node to 0 */
> dev->numa_node = -1;
> } else {
> if (eal_parse_sysfs_value(filename, &tmp) < 0) {
> free(dev);
> return -1;
> }
> dev->numa_node = tmp;
> }
>
> It says, just use NUMA node 0 if there is no NUMA support. But then proceeds
> to set the value to -1 in disagreement with the comment, and also stomping on
> the other meaning for -1 in the higher function rte_eth_dev_socket_id.
>
> 3) In conclusion, it seems like some stuff is missing... first there needs to
> be a function that will tell you the number of NUMA nodes present on the box
> so you can create the right number of mbuf_pools, but I couldn't find that function.
>
> Then if you have the function, you can do some magic and shuffle the NICs
> around to get them hooked to a core on the same NUMA, and the mbuf_pool on the
> same NUMA.
>
> When NUMA is not present, can we return 0 instead of -1, or return a specific
> error code that the client can use to know he should just use Socket 0? Right
> now I can't tell apart any potential errors or weird values from correct
> values.
>
> 4) I'm willing to help make and test some patches... but first I want to
> understand what is happening with these funny functions before doing things
> blindly.
>
> Thanks,
> Matthew.
next prev parent reply other threads:[~2014-10-14 5:47 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-06 9:13 Possible bug in eal_pci pci_scan_one Matthew Hall
[not found] ` <20141006091344.GA14759-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org>
2014-10-14 5:47 ` Matthew Hall [this message]
[not found] ` <20141014054711.GB16919-Hv3ogNYU3JfZZajBQzqCxQ@public.gmane.org>
2014-10-23 0:44 ` Matthew Hall
2014-10-24 13:06 ` Stephen Hemminger
[not found] ` <20141024183629.0740fd72-CA4OZQ/Yy2Lykuyl+CZolw@public.gmane.org>
2014-10-24 19:03 ` Matthew Hall
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=20141014054711.GB16919@mhcomputing.net \
--to=mhall-hv3ognyu3jfzzajbqzqcxq@public.gmane.org \
--cc=dev-VfR2kkLFssw@public.gmane.org \
/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.