From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1FED444183; Fri, 7 Jun 2024 16:59:47 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 29E1042DB1; Fri, 7 Jun 2024 16:59:37 +0200 (CEST) Received: from mail-vs1-f52.google.com (mail-vs1-f52.google.com [209.85.217.52]) by mails.dpdk.org (Postfix) with ESMTP id 28B3042D97 for ; Fri, 7 Jun 2024 16:59:35 +0200 (CEST) Received: by mail-vs1-f52.google.com with SMTP id ada2fe7eead31-48bc3f5ae38so45929137.1 for ; Fri, 07 Jun 2024 07:59:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iol.unh.edu; s=unh-iol; t=1717772374; x=1718377174; darn=dpdk.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Lw8tduGVkg362CegXvD87iX7E0OHkDWbfTlvpF1PAO0=; b=blmU6tkrz0Xv2RqlD1HudU2zvOYPumpX1OZv5lF5SACo2xcHnU7IOGFTGVnC4nzGtI P2xLDrLzpZSvVgymrV6JzxvDBVvXWZCou2HiJhcum3YtjZRCJU9FEWbnStZg4IU0NaTF wAgAKjNKBQl4j6OB8IAEf5mBEDfyXtzI0CzR0= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717772374; x=1718377174; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Lw8tduGVkg362CegXvD87iX7E0OHkDWbfTlvpF1PAO0=; b=OLqWx0vLmnOiTTIoN5uW5S40kXWSsoLLHeZnSxIz1Ql0IiUYYofAqIpxIHcvLXR5fY dGuRHeNqfscir6Z3ham6oJYWUHG+d0xrPKncuZ+U3fzZ9WVA1mfJRLtQrLGspb7It6ex LYOs5ctHh634o0nQ6WC7ZdAmfmWA4Z9eyfg3/+fW1eZ2NieBQ3KOhm1bx+0zqptkkaMW kFog/3Xa4lSuXLMZgeXYFtsM0E0GjDh9G0Ix9vnZdoKdmGOfUNFEqoCFi84whZNDE+YX QRX+fZBWrtzMcySpKWbUtKt8yH1siANcnncQ60+YyJ8gDuiPSigOpAKHZ30ql6eA860z MOxg== X-Gm-Message-State: AOJu0YwXrdwj7GVr4fbLb1WeKD+BHq1XWa5GjJEv+2+nQmELr9X+qvsp WM0UpOGQY2WtkdRoJeOQ4qm3NOQmPzOO7Rn15fOyW64Zk1qxWqxq7eUIO0hx3bs= X-Google-Smtp-Source: AGHT+IFO93O7IaN++dv3SFlPvoXyT8d111vtQmmFIpq7OT6UlY4bmLjVRRFRwGtec5kmO4R8ULq3iw== X-Received: by 2002:a67:e283:0:b0:48c:3428:7994 with SMTP id ada2fe7eead31-48c34287bbdmr1141300137.0.1717772374326; Fri, 07 Jun 2024 07:59:34 -0700 (PDT) Received: from localhost.unh.edu ([2606:4100:3880:1271:e2f8:4ec3:8bf3:864c]) by smtp.gmail.com with ESMTPSA id af79cd13be357-795330b2217sm174751485a.87.2024.06.07.07.59.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Jun 2024 07:59:33 -0700 (PDT) From: Nicholas Pratte To: yoan.picchi@foss.arm.com, paul.szczepanek@arm.com, luca.vizzarro@arm.com, Honnappa.Nagarahalli@arm.com, jspewock@iol.unh.edu, bruce.richardson@intel.com, juraj.linkes@pantheon.tech, probb@iol.unh.edu Cc: dev@dpdk.org, Nicholas Pratte Subject: [PATCH v9 2/2] dts: Change hugepage 'amount' to a different term Date: Fri, 7 Jun 2024 10:59:24 -0400 Message-ID: <20240607145925.27566-3-npratte@iol.unh.edu> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240607145925.27566-1-npratte@iol.unh.edu> References: <20240430184533.29247-4-npratte@iol.unh.edu> <20240607145925.27566-1-npratte@iol.unh.edu> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org The term 'amount' is used for uncountable nouns. Since total hugepages is a discrete value (i.e. countable), the declaration of the 'amount' key value pair should be changes to a different term in both the config and the rest of the code. Bugzilla ID: 1370 Signed-off-by: Nicholas Pratte Reviewed-by: Jeremy Spewock --- dts/conf.yaml | 4 ++-- dts/framework/config/__init__.py | 4 ++-- dts/framework/config/conf_yaml_schema.json | 6 +++--- dts/framework/config/types.py | 2 +- dts/framework/testbed_model/linux_session.py | 12 +++++------- dts/framework/testbed_model/node.py | 2 +- dts/framework/testbed_model/os_session.py | 8 +++----- 7 files changed, 17 insertions(+), 21 deletions(-) diff --git a/dts/conf.yaml b/dts/conf.yaml index 56c3ae6f4c..ce475776a7 100644 --- a/dts/conf.yaml +++ b/dts/conf.yaml @@ -36,7 +36,7 @@ nodes: use_first_core: false # tells DPDK to use any physical core memory_channels: 4 # tells DPDK to use 4 memory channels hugepages_2mb: # optional; if removed, will use system hugepage configuration - amount: 256 + number_of: 256 force_first_numa: false ports: # sets up the physical link between "SUT 1"@000:00:08.0 and "TG 1"@0000:00:08.0 @@ -72,7 +72,7 @@ nodes: peer_node: "SUT 1" peer_pci: "0000:00:08.1" hugepages_2mb: # optional; if removed, will use system hugepage configuration - amount: 256 + number_of: 256 force_first_numa: false traffic_generator: type: SCAPY diff --git a/dts/framework/config/__init__.py b/dts/framework/config/__init__.py index b6f820e39e..81dd321b18 100644 --- a/dts/framework/config/__init__.py +++ b/dts/framework/config/__init__.py @@ -127,11 +127,11 @@ class HugepageConfiguration: r"""The hugepage configuration of :class:`~framework.testbed_model.node.Node`\s. Attributes: - amount: The number of hugepages. + number_of: The number of hugepages to allocate. force_first_numa: If :data:`True`, the hugepages will be configured on the first NUMA node. """ - amount: int + number_of: int force_first_numa: bool diff --git a/dts/framework/config/conf_yaml_schema.json b/dts/framework/config/conf_yaml_schema.json index f4d7199523..71c893662a 100644 --- a/dts/framework/config/conf_yaml_schema.json +++ b/dts/framework/config/conf_yaml_schema.json @@ -150,9 +150,9 @@ "type": "object", "description": "Optional hugepage configuration. If not specified, hugepages won't be configured and DTS will use system configuration.", "properties": { - "amount": { + "number_of": { "type": "integer", - "description": "The amount of hugepages to configure. Hugepage size will be the system default." + "description": "The number of hugepages to configure. Hugepage size will be the system default." }, "force_first_numa": { "type": "boolean", @@ -161,7 +161,7 @@ }, "additionalProperties": false, "required": [ - "amount" + "number_of" ] }, "mac_address": { diff --git a/dts/framework/config/types.py b/dts/framework/config/types.py index 016e0c3dbd..5c9d659901 100644 --- a/dts/framework/config/types.py +++ b/dts/framework/config/types.py @@ -37,7 +37,7 @@ class HugepageConfigurationDict(TypedDict): """Allowed keys and values.""" #: - amount: int + number_of: int #: force_first_numa: bool diff --git a/dts/framework/testbed_model/linux_session.py b/dts/framework/testbed_model/linux_session.py index d0f7cfa77c..99abc21353 100644 --- a/dts/framework/testbed_model/linux_session.py +++ b/dts/framework/testbed_model/linux_session.py @@ -84,9 +84,7 @@ def get_dpdk_file_prefix(self, dpdk_prefix: str) -> str: """Overrides :meth:`~.os_session.OSSession.get_dpdk_file_prefix`.""" return dpdk_prefix - def setup_hugepages( - self, hugepage_count: int, hugepage_size: int, force_first_numa: bool - ) -> None: + def setup_hugepages(self, number_of: int, hugepage_size: int, force_first_numa: bool) -> None: """Overrides :meth:`~.os_session.OSSession.setup_hugepages`.""" self._logger.info("Getting Hugepage information.") hugepages_total = self._get_hugepages_total(hugepage_size) @@ -97,10 +95,10 @@ def setup_hugepages( raise ConfigurationError("hugepage size not supported by operating system") self._numa_nodes = self._get_numa_nodes() - if force_first_numa or hugepages_total < hugepage_count: + if force_first_numa or hugepages_total < number_of: # when forcing numa, we need to clear existing hugepages regardless # of size, so they can be moved to the first numa node - self._configure_huge_pages(hugepage_count, hugepage_size, force_first_numa) + self._configure_huge_pages(number_of, hugepage_size, force_first_numa) else: self._logger.info("Hugepages already configured.") self._mount_huge_pages() @@ -138,7 +136,7 @@ def _supports_numa(self) -> bool: # there's no reason to do any numa specific configuration) return len(self._numa_nodes) > 1 - def _configure_huge_pages(self, amount: int, size: int, force_first_numa: bool) -> None: + def _configure_huge_pages(self, number_of: int, size: int, force_first_numa: bool) -> None: self._logger.info("Configuring Hugepages.") hugepage_config_path = f"/sys/kernel/mm/hugepages/hugepages-{size}kB/nr_hugepages" if force_first_numa and self._supports_numa(): @@ -149,7 +147,7 @@ def _configure_huge_pages(self, amount: int, size: int, force_first_numa: bool) f"/hugepages-{size}kB/nr_hugepages" ) - self.send_command(f"echo {amount} | tee {hugepage_config_path}", privileged=True) + self.send_command(f"echo {number_of} | tee {hugepage_config_path}", privileged=True) def update_ports(self, ports: list[Port]) -> None: """Overrides :meth:`~.os_session.OSSession.update_ports`.""" diff --git a/dts/framework/testbed_model/node.py b/dts/framework/testbed_model/node.py index 3f2a727c3b..6818a057d0 100644 --- a/dts/framework/testbed_model/node.py +++ b/dts/framework/testbed_model/node.py @@ -266,7 +266,7 @@ def _setup_hugepages(self) -> None: """ if self.config.hugepages: self.main_session.setup_hugepages( - self.config.hugepages.amount, + self.config.hugepages.number_of, self.main_session.hugepage_size, self.config.hugepages.force_first_numa, ) diff --git a/dts/framework/testbed_model/os_session.py b/dts/framework/testbed_model/os_session.py index 19dcf5f963..bba4aca9ce 100644 --- a/dts/framework/testbed_model/os_session.py +++ b/dts/framework/testbed_model/os_session.py @@ -347,18 +347,16 @@ def get_dpdk_file_prefix(self, dpdk_prefix: str) -> str: """ @abstractmethod - def setup_hugepages( - self, hugepage_count: int, hugepage_size: int, force_first_numa: bool - ) -> None: + def setup_hugepages(self, number_of: int, hugepage_size: int, force_first_numa: bool) -> None: """Configure hugepages on the node. Get the node's Hugepage Size, configure the specified count of hugepages if needed and mount the hugepages if needed. Args: - hugepage_count: Configure this many hugepages. + number_of: Configure this many hugepages. hugepage_size: Configure hugepages of this size. - force_first_numa: If :data:`True`, configure hugepages just on the first numa node. + force_first_numa: If :data:`True`, configure just on the first numa node. """ @abstractmethod -- 2.44.0