[dpdk-dev,1/2] Fix CPU and memory parameters on IBM POWER8

Message ID 1458893513-22406-2-git-send-email-chaozhu@linux.vnet.ibm.com (mailing list archive)
State Changes Requested, archived
Delegated to: Thomas Monjalon
Headers

Commit Message

Chao Zhu March 25, 2016, 8:11 a.m. UTC
  This patch fixes the max logic number and memory channel number settings
on IBM POWER8 platform.
1. The max number of logic cores of a POWER8 processor is 96. Normally,
   there are two sockets on a server. So the max number of logic cores
   are 192. So this parch set CONFIG_RTE_MAX_LCORE to 256.
2. Currently, the max number of memory channels are hardcoded to 4. However,
   on a POWER8 machine, the max number of memory channels are 8. To fix this,
   CONFIG_RTE_MAX_NCHANNELS is added to do the configuration.

Signed-off-by: Chao Zhu <chaozhu@linux.vnet.ibm.com>
---
 config/common_base                         |    3 ++-
 lib/librte_eal/common/eal_common_options.c |    2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)
  

Comments

David Marchand March 25, 2016, 8:48 a.m. UTC | #1
On Fri, Mar 25, 2016 at 9:11 AM, Chao Zhu <chaozhu@linux.vnet.ibm.com> wrote:
> This patch fixes the max logic number and memory channel number settings
> on IBM POWER8 platform.
> 1. The max number of logic cores of a POWER8 processor is 96. Normally,
>    there are two sockets on a server. So the max number of logic cores
>    are 192. So this parch set CONFIG_RTE_MAX_LCORE to 256.

This is a power8 configuration item, this should go to power8 config
file, not common_base.

> 2. Currently, the max number of memory channels are hardcoded to 4. However,
>    on a POWER8 machine, the max number of memory channels are 8. To fix this,
>    CONFIG_RTE_MAX_NCHANNELS is added to do the configuration.

I don't see any reason why we would need a max value for force_nchannel.
We should just get rid of this check, this is an obscure parameter for
most people, so people playing with it know what they are doing
(hopefully ?).

On the other hand, if power8 has some specifics about it, maybe we
should introduce some default value in a arch eal header for other
dpdk components to use (like in mempool).
Thoughts ?
  
Thomas Monjalon March 30, 2016, 10:52 a.m. UTC | #2
2016-03-25 09:48, David Marchand:
> On Fri, Mar 25, 2016 at 9:11 AM, Chao Zhu <chaozhu@linux.vnet.ibm.com> wrote:
> > This patch fixes the max logic number and memory channel number settings
> > on IBM POWER8 platform.
> > 1. The max number of logic cores of a POWER8 processor is 96. Normally,
> >    there are two sockets on a server. So the max number of logic cores
> >    are 192. So this parch set CONFIG_RTE_MAX_LCORE to 256.
> 
> This is a power8 configuration item, this should go to power8 config
> file, not common_base.
> 
> > 2. Currently, the max number of memory channels are hardcoded to 4. However,
> >    on a POWER8 machine, the max number of memory channels are 8. To fix this,
> >    CONFIG_RTE_MAX_NCHANNELS is added to do the configuration.
> 
> I don't see any reason why we would need a max value for force_nchannel.
> We should just get rid of this check, this is an obscure parameter for
> most people, so people playing with it know what they are doing
> (hopefully ?).
> 
> On the other hand, if power8 has some specifics about it, maybe we
> should introduce some default value in a arch eal header for other
> dpdk components to use (like in mempool).
> Thoughts ?

Chao? We are running out of time for 16.04.
  
Chao Zhu March 31, 2016, 1:44 a.m. UTC | #3
Thomas,

Seems I didn't get the messages from David. Anyway, I sent out an updated
patch.
Thanks for reminder!

-----Original Message-----
From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com] 
Sent: 2016年3月30日 18:53
To: Chao Zhu <chaozhu@linux.vnet.ibm.com>
Cc: dev@dpdk.org; David Marchand <david.marchand@6wind.com>; Richardson,
Bruce <bruce.richardson@intel.com>; Panu Matilainen <pmatilai@redhat.com>
Subject: Re: [dpdk-dev] [PATCH 1/2] Fix CPU and memory parameters on IBM
POWER8

2016-03-25 09:48, David Marchand:
> On Fri, Mar 25, 2016 at 9:11 AM, Chao Zhu <chaozhu@linux.vnet.ibm.com>
wrote:
> > This patch fixes the max logic number and memory channel number 
> > settings on IBM POWER8 platform.
> > 1. The max number of logic cores of a POWER8 processor is 96. Normally,
> >    there are two sockets on a server. So the max number of logic cores
> >    are 192. So this parch set CONFIG_RTE_MAX_LCORE to 256.
> 
> This is a power8 configuration item, this should go to power8 config 
> file, not common_base.
> 
> > 2. Currently, the max number of memory channels are hardcoded to 4.
However,
> >    on a POWER8 machine, the max number of memory channels are 8. To fix
this,
> >    CONFIG_RTE_MAX_NCHANNELS is added to do the configuration.
> 
> I don't see any reason why we would need a max value for force_nchannel.
> We should just get rid of this check, this is an obscure parameter for 
> most people, so people playing with it know what they are doing 
> (hopefully ?).
> 
> On the other hand, if power8 has some specifics about it, maybe we 
> should introduce some default value in a arch eal header for other 
> dpdk components to use (like in mempool).
> Thoughts ?

Chao? We are running out of time for 16.04.
  

Patch

diff --git a/config/common_base b/config/common_base
index dbd405b..1beea32 100644
--- a/config/common_base
+++ b/config/common_base
@@ -83,10 +83,11 @@  CONFIG_RTE_CACHE_LINE_SIZE=64
 # Compile Environment Abstraction Layer
 #
 CONFIG_RTE_LIBRTE_EAL=y
-CONFIG_RTE_MAX_LCORE=128
+CONFIG_RTE_MAX_LCORE=256
 CONFIG_RTE_MAX_NUMA_NODES=8
 CONFIG_RTE_MAX_MEMSEG=256
 CONFIG_RTE_MAX_MEMZONE=2560
+CONFIG_RTE_MAX_NCHANNELS=8
 CONFIG_RTE_MAX_TAILQ=32
 CONFIG_RTE_LOG_LEVEL=8
 CONFIG_RTE_LOG_HISTORY=256
diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c
index 29942ea..6c268c1 100644
--- a/lib/librte_eal/common/eal_common_options.c
+++ b/lib/librte_eal/common/eal_common_options.c
@@ -798,7 +798,7 @@  eal_parse_common_option(int opt, const char *optarg,
 	case 'n':
 		conf->force_nchannel = atoi(optarg);
 		if (conf->force_nchannel == 0 ||
-		    conf->force_nchannel > 4) {
+		    conf->force_nchannel > RTE_MAX_NCHANNELS) {
 			RTE_LOG(ERR, EAL, "invalid channel number\n");
 			return -1;
 		}