Hi,

Isn't 64 input/output queues quite low? Typically, the number of queues is the 
same as the number of virtual CPUs. Considering that typical high-end CPUs have 
10 cores and HyperThreading (20 virtual CPUs total) and that high-end servers 
can have two CPU sockets (40 virtual CPUs total), the limit is quite close on 
high-end servers.

According to some quick googling, for 82599 the maximum number of RX and TX 
queues is 128 each, higher than 64. For XL710, the maximum number of TX and RX 
queues is 1536.

One can get dual-processor Xeon E5-2699 v4 CPUs that have 22 cores and 
HyperThreading, and if there's two such processors, it's 88 queues. There's 
also Xeon E7-8895 v3 octa-processor that has 18 cores, and if there's eight 
such processors, it's 288 queues. Yes, these are really top of the line models, 
so most users won't have such powerful machines, but some may have. As a matter 
of fact, newer RHEL versions do support 288 CPUs.

I would therefore consider much higher values for the constant, although I only 
have 40 virtual CPUs (and therefore 40 queues) on the most powerful of my 
systems.

Of course, if you're running multiple threads and have the custom netmap 
drivers, actually mapping all of the queues takes so long that you may want to 
reduce the queue count to a more manageable level.

-----Original Message-----
From: lng-odp [mailto:[email protected]] On Behalf Of EXT Maxim 
Uvarov
Sent: Wednesday, March 02, 2016 12:38 PM
To: [email protected]
Subject: Re: [lng-odp] [PATCH] linux-generic: netmap: increase maximum 
descriptor count

Merged,
Maxim.

On 02/26/16 17:02, Matias Elo wrote:
> Increase maximum descriptor count to support NICs with up to
> 64 input/output queues. Related debug messages are also
> improved.
>
> Signed-off-by: Matias Elo <[email protected]>
> ---
>   platform/linux-generic/include/odp_packet_netmap.h | 2 +-
>   platform/linux-generic/pktio/netmap.c              | 6 ++++--
>   2 files changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/platform/linux-generic/include/odp_packet_netmap.h 
> b/platform/linux-generic/include/odp_packet_netmap.h
> index 26a8da1..b7990d9 100644
> --- a/platform/linux-generic/include/odp_packet_netmap.h
> +++ b/platform/linux-generic/include/odp_packet_netmap.h
> @@ -17,7 +17,7 @@
>   #include <linux/if_ether.h>
>   #include <net/if.h>
>   
> -#define NM_MAX_DESC 32
> +#define NM_MAX_DESC 64
>   
>   /** Ring for mapping pktin/pktout queues to netmap descriptors */
>   struct netmap_ring_t {
> diff --git a/platform/linux-generic/pktio/netmap.c 
> b/platform/linux-generic/pktio/netmap.c
> index 0554171..168b76a 100644
> --- a/platform/linux-generic/pktio/netmap.c
> +++ b/platform/linux-generic/pktio/netmap.c
> @@ -288,7 +288,8 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, 
> pktio_entry_t *pktio_entry,
>               goto error;
>       }
>       if (desc->nifp->ni_rx_rings > NM_MAX_DESC) {
> -             ODP_ERR("Unable to store all rx rings\n");
> +             ODP_ERR("Unable to store all %" PRIu32 " rx rings (max %d)\n",
> +                     desc->nifp->ni_rx_rings, NM_MAX_DESC);
>               nm_close(desc);
>               goto error;
>       }
> @@ -298,7 +299,8 @@ static int netmap_open(odp_pktio_t id ODP_UNUSED, 
> pktio_entry_t *pktio_entry,
>               pkt_nm->capa.max_input_queues = desc->nifp->ni_rx_rings;
>   
>       if (desc->nifp->ni_tx_rings > NM_MAX_DESC) {
> -             ODP_ERR("Unable to store all tx rings\n");
> +             ODP_ERR("Unable to store all %" PRIu32 " tx rings (max %d)\n",
> +                     desc->nifp->ni_tx_rings, NM_MAX_DESC);
>               nm_close(desc);
>               goto error;
>       }

_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to