Reviewed-by: Nicholas Pratte <npra...@iol.unh.edu>
On Wed, Jan 15, 2025 at 9:19 AM Luca Vizzarro <luca.vizza...@arm.com> wrote: > > From: Nicholas Pratte <npra...@iol.unh.edu> > > To further the simplification of the user configuration, use_first_core > can be inferred from the lcores. If the user explicitly includes the > core 0 in the lcores range, it will only then be used. > > Bugzilla ID: 1360 > > Signed-off-by: Nicholas Pratte <npra...@iol.unh.edu> > Signed-off-by: Luca Vizzarro <luca.vizza...@arm.com> > Reviewed-by: Paul Szczepanek <paul.szczepa...@arm.com> > --- > dts/conf.yaml | 3 +-- > dts/framework/config/__init__.py | 19 ++++++++++++------- > dts/framework/testbed_model/node.py | 9 +++++++++ > 3 files changed, 22 insertions(+), 9 deletions(-) > > diff --git a/dts/conf.yaml b/dts/conf.yaml > index 4b6965b3d7..c93eedbc94 100644 > --- a/dts/conf.yaml > +++ b/dts/conf.yaml > @@ -40,8 +40,7 @@ nodes: > hostname: sut1.change.me.localhost > user: dtsuser > os: linux > - lcores: "" # use all the available logical cores > - use_first_core: false # tells DPDK to use any physical core > + lcores: "" # use all available logical cores (Skips first core) > memory_channels: 4 # tells DPDK to use 4 memory channels > hugepages_2mb: # optional; if removed, will use system hugepage > configuration > number_of: 256 > diff --git a/dts/framework/config/__init__.py > b/dts/framework/config/__init__.py > index 3fa8f4fa8f..5dfa0cf0d4 100644 > --- a/dts/framework/config/__init__.py > +++ b/dts/framework/config/__init__.py > @@ -138,12 +138,12 @@ class > ScapyTrafficGeneratorConfig(TrafficGeneratorConfig): > #: A union type discriminating traffic generators by the `type` field. > TrafficGeneratorConfigTypes = Annotated[ScapyTrafficGeneratorConfig, > Field(discriminator="type")] > > -#: Comma-separated list of logical cores to use. An empty string means use > all lcores. > +#: Comma-separated list of logical cores to use. An empty string or > ```any``` means use all lcores. > LogicalCores = Annotated[ > str, > Field( > - examples=["1,2,3,4,5,18-22", "10-15"], > - pattern=r"^(([0-9]+|([0-9]+-[0-9]+))(,([0-9]+|([0-9]+-[0-9]+)))*)?$", > + examples=["1,2,3,4,5,18-22", "10-15", "any"], > + > pattern=r"^(([0-9]+|([0-9]+-[0-9]+))(,([0-9]+|([0-9]+-[0-9]+)))*)?$|any", > ), > ] > > @@ -161,15 +161,20 @@ class NodeConfiguration(FrozenModel): > password: str | None = None > #: The operating system of the > :class:`~framework.testbed_model.node.Node`. > os: OS > - #: A comma delimited list of logical cores to use when running DPDK. > - lcores: LogicalCores = "1" > - #: If :data:`True`, the first logical core won't be used. > - use_first_core: bool = False > + #: A comma delimited list of logical cores to use when running DPDK. > ```any```, an empty > + #: string or omitting this field means use any core except for the first > one. The first core > + #: will only be used if explicitly set. > + lcores: LogicalCores = "" > #: An optional hugepage configuration. > hugepages: HugepageConfiguration | None = Field(None, > alias="hugepages_2mb") > #: The ports that can be used in testing. > ports: list[PortConfig] = Field(min_length=1) > > + @property > + def use_first_core(self) -> bool: > + """Returns :data:`True` if `lcores` explicitly selects the first > core.""" > + return "0" in self.lcores > + > > class SutNodeConfiguration(NodeConfiguration): > """:class:`~framework.testbed_model.sut_node.SutNode` specific > configuration.""" > diff --git a/dts/framework/testbed_model/node.py > b/dts/framework/testbed_model/node.py > index 08328ee482..b08b1cf14d 100644 > --- a/dts/framework/testbed_model/node.py > +++ b/dts/framework/testbed_model/node.py > @@ -91,6 +91,15 @@ def __init__(self, node_config: NodeConfiguration): > self.lcores, LogicalCoreList(self.config.lcores) > ).filter() > > + if LogicalCore(lcore=0, core=0, socket=0, node=0) in self.lcores: > + self._logger.info( > + """ > + WARNING: First core being used; > + using the first core is considered risky and should only > + be done by advanced users. > + """ > + ) > + > self._other_sessions = [] > self._init_ports() > > -- > 2.43.0 >