From 4bdf7022388575b4d5b2095fb10a65cdb8d77acd Mon Sep 17 00:00:00 2001 From: Gil Bregman Date: Wed, 17 Jan 2024 20:25:34 +0200 Subject: [PATCH] Add log messages for huge pages count. Fixes #378 Signed-off-by: Gil Bregman --- Dockerfile | 8 ++++++-- control/grpc.py | 37 +++++++++++++++++++++++++++++++++++++ docker-compose.yaml | 4 ++++ 3 files changed, 47 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8c5b168b..743ee972 100644 --- a/Dockerfile +++ b/Dockerfile @@ -58,7 +58,9 @@ ARG NVMEOF_NAME \ NVMEOF_GIT_MODIFIED_FILES \ SPDK_GIT_REPO \ SPDK_GIT_BRANCH \ - SPDK_GIT_COMMIT + SPDK_GIT_COMMIT \ + HUGEPAGES \ + HUGEPAGES_DIR ENV NVMEOF_VERSION="${NVMEOF_VERSION}" \ NVMEOF_GIT_REPO="${NVMEOF_GIT_REPO}" \ @@ -70,7 +72,9 @@ ENV NVMEOF_VERSION="${NVMEOF_VERSION}" \ NVMEOF_GIT_MODIFIED_FILES="${NVMEOF_GIT_MODIFIED_FILES}" \ SPDK_GIT_REPO="${SPDK_GIT_REPO}" \ SPDK_GIT_BRANCH="${SPDK_GIT_BRANCH}" \ - SPDK_GIT_COMMIT="${SPDK_GIT_COMMIT}" + SPDK_GIT_COMMIT="${SPDK_GIT_COMMIT}" \ + HUGEPAGES="${HUGEPAGES}" \ + HUGEPAGES_DIR="${HUGEPAGES_DIR}" # Generic labels LABEL name="$NVMEOF_NAME" \ diff --git a/control/grpc.py b/control/grpc.py index ed6e9968..c8acd132 100644 --- a/control/grpc.py +++ b/control/grpc.py @@ -82,6 +82,43 @@ def __init__(self, config, gateway_state, omap_lock, spdk_rpc_client) -> None: git_spdk_commit = os.getenv("NVMEOF_GIT_COMMIT") if git_spdk_commit: self.logger.info(f"SPDK Git commit: {git_spdk_commit}") + hugepages_file = os.getenv("HUGEPAGES_DIR") + hugepages_file = hugepages_file.strip() + requested_hugepages_val = os.getenv("HUGEPAGES") + if requested_hugepages_val == None: + self.logger.warning("Can't get requested huge pages count") + else: + requested_hugepages_val = requested_hugepages_val.strip() + try: + requested_hugepages_val = int(requested_hugepages_val) + self.logger.info(f"Requested huge pages count is {requested_hugepages_val}") + except ValueError: + self.logger.warning(f"Requested huge pages count value {requested_hugepages_val} is not numeric") + requested_hugepages_val = None + if hugepages_file == None: + hugepages_file = "/sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages" + self.logger.warning("No huge pages file defined, will use /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages") + if os.access(hugepages_file, os.F_OK): + try: + hugepages_val = "" + with open(hugepages_file) as f: + hugepages_val = f.readline() + hugepages_val = hugepages_val.strip() + if hugepages_val: + try: + hugepages_val = int(hugepages_val) + self.logger.info(f"Actual huge pages count is {hugepages_val}") + except ValueError: + self.logger.warning(f"Actual huge pages count value {hugepages_val} is not numeric") + hugepages_val = "" + if requested_hugepages_val and hugepages_val != "" and requested_hugepages_val != hugepages_val: + self.logger.warning(f"The actual huge page count {hugepages_val} differs from the requested value of {requested_hugepages_val}") + else: + self.logger.warning(f"Can't read actual huge pages count value from {hugepages_file}") + except Exception as ex: + self.logger.exception(f"Can't read actual huge pages count value from {hugepages_file}") + else: + self.logger.warning(f"Can't find huge pages file {hugepages_file}") self.config = config config.dump_config_file(self.logger) self.rpc_lock = threading.Lock() diff --git a/docker-compose.yaml b/docker-compose.yaml index ccec1878..f09a573d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -105,6 +105,8 @@ services: SPDK_GIT_REPO: SPDK_GIT_BRANCH: SPDK_GIT_COMMIT: + HUGEPAGES: + HUGEPAGES_DIR: labels: io.ceph.nvmeof: volumes: @@ -218,6 +220,8 @@ services: SPDK_GIT_REPO: SPDK_GIT_BRANCH: SPDK_GIT_COMMIT: + HUGEPAGES: + HUGEPAGES_DIR: labels: io.ceph.nvmeof: volumes: