diff --git a/docs/admin/performance_tuning.md b/docs/admin/performance_tuning.md index 95025a2a4d3..9279a03bd0c 100644 --- a/docs/admin/performance_tuning.md +++ b/docs/admin/performance_tuning.md @@ -409,16 +409,16 @@ to the next section for more information. ### SSDs -Performance of SSDs can be measured directly with SPDK via the spdk_nvme_perf +Performance of SSDs can be measured directly with SPDK via the daos_spdk_nvme_perf tool. It can be run to test bandwidth in a non-destructive way as follows: ```bash -spdk_nvme_perf -q 16 -o 1048576 -w read -c 0xff -t 60 +daos_spdk_nvme_perf -q 16 -o 1048576 -w read -c 0xff -t 60 ``` IOPS can be measured with the following command: ```bash -spdk_nvme_perf -q 16 -o 4096 -w read -c 0xff -t 60 +daos_spdk_nvme_perf -q 16 -o 4096 -w read -c 0xff -t 60 ``` `-q` is used to control the queue depth, `-o` for the I/O size, `-w` is the @@ -438,7 +438,7 @@ form of a core mash. `-c 0xff` uses the first 8 cores. !!! note On storage node using Intel VMD, the `--enable-vmd` option must be specified. -Many more options are available. Please run `spdk_nvme_perf` to see the list of +Many more options are available. Please run `daos_spdk_nvme_perf` to see the list of parameters that can be tweaked. ## End-to-end Performance diff --git a/docs/admin/predeployment_check.md b/docs/admin/predeployment_check.md index 67addee72eb..f7e48879c76 100644 --- a/docs/admin/predeployment_check.md +++ b/docs/admin/predeployment_check.md @@ -406,18 +406,18 @@ able to use with DPDK and VFIO if run as user "daos". To change this, please adjust limits.conf memlock limit for user "daos". ``` -Now the SSDs can be accessed by SPDK we can use the `spdk_nvme_manage` tool to format +Now the SSDs can be accessed by SPDK we can use the `daos_spdk_nvme_manage` tool to format the SSDs with a 4K block size. -`spdk_nvme_manage` tool is provided by SPDK and will be found in the following locations: +`daos_spdk_nvme_manage` tool is provided by SPDK and will be found in the following locations: -- `/usr/bin/spdk_nvme_manage` if DAOS-maintained spdk-21.07-10 (or greater) RPM is installed -- `/install/prereq/release/spdk/bin/spdk_nvme_manage` after build from DAOS source +- `/usr/bin/daos_spdk_nvme_manage` if DAOS-maintained spdk-21.07-10 (or greater) RPM is installed +- `/install/prereq/release/spdk/bin/daos_spdk_nvme_manage` after build from DAOS source Choose to format a SSD, use option "6" for formatting: ```bash -$ sudo /usr/bin/spdk_nvme_manage +$ sudo /usr/bin/daos_spdk_nvme_manage NVMe Management Options [1: list controllers] [2: create namespace] diff --git a/site_scons/components/__init__.py b/site_scons/components/__init__.py index 4d8292e3d3a..bca79db04ca 100644 --- a/site_scons/components/__init__.py +++ b/site_scons/components/__init__.py @@ -1,5 +1,5 @@ # Copyright 2016-2024 Intel Corporation -# Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025-2026 Hewlett Packard Enterprise Development LP # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -419,6 +419,8 @@ def define_components(reqs): headers=['spdk/nvme.h'], pkgconfig='daos_spdk', patch_rpath=['lib64/daos_srv', 'bin'], + patch_rpath_exclusions=['libspdk.so', 'spdk_cli', 'spdk_rpc', 'spdk-mcp', + 'spdk-sma'], requires=spdk_reqs) reqs.define('protobufc', diff --git a/site_scons/prereq_tools/base.py b/site_scons/prereq_tools/base.py index 5c124045339..67e157a071e 100644 --- a/site_scons/prereq_tools/base.py +++ b/site_scons/prereq_tools/base.py @@ -1,5 +1,5 @@ # Copyright 2016-2024 Intel Corporation -# Copyright 2025 Google LLC +# Copyright 2025-2026 Google LLC # Copyright 2025-2026 Hewlett Packard Enterprise Development LP # # Permission is hereby granted, free of charge, to any person obtaining a copy @@ -768,6 +768,8 @@ def define(self, name, **kw): build_env -- Environment variables to set for build skip_arch -- not required on this architecture static_libs -- Static libraries only, no published install + patch_rpath -- Patch the rpath in specified directories + patch_rpath_exclusions -- Exclude listed binaries from rpath patching """ use_installed = False if not kw.get('static_libs', False): @@ -994,7 +996,7 @@ def get_config(self, section, name): return self._configs.get(section, name) -class _Component(): +class _Component(): # pylint: disable=too-many-instance-attributes """A class to define attributes of an external component Args: @@ -1015,10 +1017,16 @@ class _Component(): extra_lib_path -- Subdirectories to add to dependent component path extra_include_path -- Subdirectories to add to dependent component path out_of_src_build -- Build from a different directory if set to True - patch_rpath -- Add appropriate relative rpaths to binaries + patch_rpath -- Patch the rpath in specified directories + patch_rpath_exclusions -- Exclude listed binaries from rpath patching build_env -- Environment variable(s) to add to build environment skip_arch -- not required on this platform static_libs -- Static libraries only, no public install + + Note: + This class has 31 instance attributes which exceeds the pylint default + of 30. This is justified as it manages complex external component + configuration with many inter-related settings. """ def __init__(self, @@ -1045,6 +1053,7 @@ def __init__(self, self.required_progs = kw.get("required_progs", []) if kw.get("patch_rpath", []): self.required_progs.append("patchelf") + self.patch_rpath_exclusions = kw.get("patch_rpath_exclusions", []) self.defines = kw.get("defines", []) self.headers = kw.get("headers", []) self.requires = kw.get("requires", []) @@ -1486,7 +1495,7 @@ def _patch_rpaths(self): cmd = ['patchelf', '--set-rpath', ':'.join(rpath), full_lib] res = RUNNER.run_commands([cmd]) if not res: - if lib in ('libspdk.so', 'spdk_cli', 'spdk_rpc', 'spdk-mcp', 'spdk-sma'): + if lib in self.patch_rpath_exclusions: print(f'Skipped patching {full_lib}') else: raise BuildFailure(f'Error running patchelf on {full_lib}') diff --git a/utils/rpms/daos-spdk.changelog b/utils/rpms/daos-spdk.changelog index 811e1a04c41..b2a3b90c626 100644 --- a/utils/rpms/daos-spdk.changelog +++ b/utils/rpms/daos-spdk.changelog @@ -1,3 +1,7 @@ +* Fri May 22 2026 Signed-off-by: Jeff Olivier - 26.01-2 +- Fix daos_spdk_nvme_perf binary in rpm +- Adjust how we exclude packages to make it generic and not hardcoded + * Thu May 12 2026 Signed-off-by: Tom Nabarro - 26.01-1 - Upgrade to SPDK v26.01, update version number to match SPDK release version - Update external ISA-L patch for v26.01 compatibility diff --git a/utils/rpms/daos-spdk.sh b/utils/rpms/daos-spdk.sh index fc60b3d5523..4e76dc5fe55 100755 --- a/utils/rpms/daos-spdk.sh +++ b/utils/rpms/daos-spdk.sh @@ -1,5 +1,5 @@ #!/bin/bash -# (C) Copyright 2025 Google LLC +# (C) Copyright 2025-2026 Google LLC set -eEuo pipefail root="$(realpath "$(dirname "${BASH_SOURCE[0]}")")" . "${root}/fpm_common.sh" @@ -22,7 +22,7 @@ RPM_CHANGELOG="daos-spdk.changelog" files=() TARGET_PATH="${bindir}" list_files files "${SL_SPDK_PREFIX}/bin/daos_spdk*" -clean_bin "${files[@]}" +NO_STRIP=y clean_bin "${files[@]}" append_install_list "${files[@]}" BASE_PATH="${tmp}/${datadir}/daos/spdk" diff --git a/utils/rpms/fpm_common.sh b/utils/rpms/fpm_common.sh index 918d56cfad2..96c9bfe5213 100644 --- a/utils/rpms/fpm_common.sh +++ b/utils/rpms/fpm_common.sh @@ -1,5 +1,5 @@ #!/bin/bash -# (C) Copyright 2025 Google LLC +# (C) Copyright 2025-2026 Google LLC root="$(realpath "$(dirname "$(dirname "$(dirname "${BASH_SOURCE[0]}")")")")" . "${root}/utils/sl/setup_local.sh" > /dev/null unset tmp @@ -126,7 +126,9 @@ clean_bin() { dbgpath="${dbgroot}/${dname}" cp "${file}" "${dbgpath}" strip --only-keep-debug "${dbgpath}" > /dev/null 2>&1 - strip "${file}" > /dev/null 2>&1 || true + if [[ -z "${NO_STRIP:-}" ]]; then + strip "${file}" > /dev/null 2>&1 || true + fi dbg_list+=("${dbgpath}") done } diff --git a/utils/rpms/package_info.sh b/utils/rpms/package_info.sh index 51d4d01be33..cd69c385c89 100644 --- a/utils/rpms/package_info.sh +++ b/utils/rpms/package_info.sh @@ -1,6 +1,6 @@ #!/bin/bash # -# (C) Copyright 2025 Google LLC +# (C) Copyright 2025-2026 Google LLC # Copyright 2025-2026 Hewlett Packard Enterprise Development LP # # SPDX-License-Identifier: BSD-2-Clause-Patent @@ -61,7 +61,7 @@ export isal_crypto_release="1${distro_name}" export isal_crypto_full="${isal_crypto_version}-${isal_crypto_release}" export spdk_major_version="26.01" export daos_spdk_version=${spdk_major_version} -export daos_spdk_release="1${distro_name}" +export daos_spdk_release="2${distro_name}" export daos_spdk_full="${daos_spdk_version}-${daos_spdk_release}" export fused_version="1.0.0" export fused_release="3${distro_name}"