[PATCH v2] dts: Change hugepage runtime config to 2MB Exclusively
Juraj Linkeš
juraj.linkes at pantheon.tech
Wed Apr 10 12:43:47 CEST 2024
> diff --git a/dts/framework/testbed_model/linux_session.py b/dts/framework/testbed_model/linux_session.py
> index 5d24030c3d..37f5eacb21 100644
> --- a/dts/framework/testbed_model/linux_session.py
> +++ b/dts/framework/testbed_model/linux_session.py
> @@ -15,7 +15,7 @@
>
> from typing_extensions import NotRequired
>
> -from framework.exception import RemoteCommandExecutionError
> +from framework.exception import ConfigurationError, RemoteCommandExecutionError
> from framework.utils import expand_range
>
> from .cpu import LogicalCore
> @@ -87,25 +87,22 @@ def get_dpdk_file_prefix(self, dpdk_prefix: str) -> str:
> def setup_hugepages(self, hugepage_count: int, force_first_numa: bool) -> None:
> """Overrides :meth:`~.os_session.OSSession.setup_hugepages`."""
> self._logger.info("Getting Hugepage information.")
> - hugepage_size = self._get_hugepage_size()
> + if "hugepages-2048kB" not in self.send_command("ls /sys/kernel/mm/hugepages").stdout:
I have one extra point on top of Morten's suggestions (which I like).
Let's create a class variable where we store the hugepage size (2048)
and use that across the code.
> + raise ConfigurationError("2MB hugepages not supported by operating system")
> hugepages_total = self._get_hugepages_total()
> self._numa_nodes = self._get_numa_nodes()
>
> - if force_first_numa or hugepages_total != hugepage_count:
> + if force_first_numa or hugepages_total < hugepage_count:
> # 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(hugepage_count, 2048, force_first_numa)
> else:
> self._logger.info("Hugepages already configured.")
> self._mount_huge_pages()
>
> - def _get_hugepage_size(self) -> int:
> - hugepage_size = self.send_command("awk '/Hugepagesize/ {print $2}' /proc/meminfo").stdout
> - return int(hugepage_size)
> -
> def _get_hugepages_total(self) -> int:
> hugepages_total = self.send_command(
> - "awk '/HugePages_Total/ { print $2 }' /proc/meminfo"
> + "cat /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages"
> ).stdout
> return int(hugepages_total)
>
> --
> 2.44.0
>
More information about the dev
mailing list