diff --git a/src/tests/ftest/soak/harassers.yaml b/src/tests/ftest/soak/harassers.yaml index c609fd34ada..3db577325fb 100644 --- a/src/tests/ftest/soak/harassers.yaml +++ b/src/tests/ftest/soak/harassers.yaml @@ -10,8 +10,7 @@ orterun: allow_run_as_root: true # This timeout must be longer than the test_timeout param (+15minutes) -timeout: 24H30M - +timeout: 72H30M setup: start_servers: true start_agents: true @@ -47,14 +46,12 @@ pool_jobs: size: 90% rebuild_timeout: 600 pool_query_timeout: 120 - properties: rd_fac:0,space_rb:0 - + properties: "scrub:timed,scrub_freq:120,space_rb:8" pool_reserved: size: 5% rebuild_timeout: 600 pool_query_timeout: 120 - properties: rd_fac:0,space_rb:0 - + properties: "scrub:timed,scrub_freq:120,space_rb:8" container: type: POSIX properties: cksum:crc16,cksum_size:16384,srv_cksum:on @@ -84,13 +81,18 @@ soak_harassers: # harasser test timeout in hours single_test_pool: false test_timeout: - test_soak_online_harassers: 24 - test_soak_offline_harassers: 24 + test_soak_online_harassers: 72 + test_soak_offline_harassers: 72 # maximum timeout for a single job in test in minutes joblist: - ior_harasser - fio_harasser - mdtest_harasser + #- vpic_harasser + - lammps_harasser + - macsio_harasser + - datamover_harasser + - e3smio_harasser # one harrasser is run during each pass of soak jobs harasserlist: test_soak_offline_harassers: @@ -148,8 +150,8 @@ ior_harasser: - '4k' segment_count: 1 dfs_oclass: - - ["EC_2P2GX", "RP_3GX"] - - ["EC_4P2GX", "RP_3GX"] + - ["EC_2P2GX"] + - ["EC_4P2GX"] dfuse: mount_dir: "/tmp/soak_dfuse_ior" disable_caching: true @@ -186,7 +188,60 @@ fio_harasser: dfuse: mount_dir: "/tmp/soak_dfuse_fio/" disable_caching: true - +vpic_harasser: + # Requires opeapi + job_timeout: 20 + nodesperjob: + - 1 + taskspernode: + - 32 + cmdline: "${DAOS_TEST_APP_DIR}/vpic-install/bin/harris.Linux" + api: + - POSIX + - POSIX-LIBIOIL + - POSIX-LIBPIL4DFS + workdir: "/tmp/soak_dfuse_vpic/" + dfuse: + mount_dir: "/tmp/soak_dfuse_vpic/" + disable_caching: true + oclass: + - ["EC_2P1GX", "RP_2GX"] +lammps_harasser: + job_timeout: 55 + nodesperjob: + - 8 + taskspernode: + - 32 + cmdline: "${DAOS_TEST_APP_DIR}/lammps/src/lmp_mpi -i ${DAOS_TEST_APP_DIR}/lammps/bench/in.lj" + api: + - POSIX + - POSIX-LIBIOIL + - POSIX-LIBPIL4DFS + workdir: "/tmp/soak_dfuse_lammps/" + dfuse: + mount_dir: "/tmp/soak_dfuse_lammps/" + disable_caching: true + thread_count: 8 + cores: '0-7' + oclass: + - ["EC_2P1GX", "RP_2GX"] +e3smio_harasser: + job_timeout: 20 + nodesperjob: + - 4 + taskspernode: + - 32 + cmdline: "e3sm_io -r 10 -o can_I_out.h5 -a hdf5 -x canonical -k " + api: + - POSIX-LIBPIL4DFS + workdir: "/tmp/soak_dfuse_e3smio/" + dfuse: + mount_dir: "/tmp/soak_dfuse_e3smio/" + disable_caching: true + thread_count: 8 + cores: '0-7' + oclass: + - ["EC_2P1GX", "RP_2GX"] mdtest_harasser: # maximum timeout for a single job in test in minutes job_timeout: 30 @@ -219,7 +274,75 @@ mdtest_harasser: dfuse: mount_dir: "/tmp/soak_dfuse_mdtest/" disable_caching: true - +macsio_harasser: + job_timeout: 30 + nodesperjob: + - 1 + - 4 + - 8 + taskspernode: + - 16 + api: + - HDF5 + - HDF5-VOL + interface: hdf5 + parallel_file_mode: SIF 1 + filebase: daos + units_prefix_system: decimal + part_size: 10M + avg_num_parts: 2.5 + num_dumps: 2 + debug_level: 1 + oclass: + - ["SX","SX"] + - ["EC_2P1GX", "RP_2GX"] + # - ["EC_4P1G1", "RP_2GX"] + - ["EC_4P2GX", "RP_3GX"] + # - ["EC_8P2G1", "RP_3GX"] + # - ["EC_16P2GX", "RP_3GX"] + dfuse: + mount_dir: "/tmp/soak_dfuse_macsio/" + disable_caching: true + thread_count: 8 + cores: '0-7' +datamover_harasser: + job_timeout: 10 + nodesperjob: + - 8 + taskspernode: + - 16 + oclass: + - ["SX","SX"] + - ["EC_2P1GX", "RP_2GX"] + # - ["EC_4P1G1", "RP_2GX"] + - ["EC_4P2GX", "RP_3GX"] + # - ["EC_8P2G1", "RP_3GX"] + # - ["EC_16P2GX", "RP_3GX"] + dcp: + bufsize: 1M + chunksize: 1M + ior_write: + api: + - DFS + flags: "-w -F -k" + signature: "5" + transfer_size: + - 1M + block_size: + - 2G + test_file: "daos:/testFile" + dfs_destroy: false + ior_read: + api: + - DFS + flags: "-r -R -F -k" + signature: "5" + transfer_size: + - 1M + block_size: + - 2G + test_file: "daos:/testFile" + dfs_destroy: false hdf5_vol: plugin_path: "/usr/lib64/mpich/lib" diff --git a/src/tests/ftest/soak/smoke.yaml b/src/tests/ftest/soak/smoke.yaml index 1aed9c61257..fc07456b096 100644 --- a/src/tests/ftest/soak/smoke.yaml +++ b/src/tests/ftest/soak/smoke.yaml @@ -46,16 +46,13 @@ server_config: # pool_params - attributes of the pools to create; Currently only create one pool_jobs: size: 90% - properties: rd_fac:0,space_rb:0 - + properties: "scrub:timed,scrub_freq:120,space_rb:8" pool_reserved: size: 5% - properties: rd_fac:0,space_rb:0 - + properties: "scrub:timed,scrub_freq:120,space_rb:8" pool_racer: size: 5% - properties: rd_fac:0,space_rb:0 - + properties: "scrub:timed,scrub_freq:120,space_rb:8" container: type: POSIX properties: cksum:crc16,cksum_size:16384,srv_cksum:on @@ -93,6 +90,7 @@ smoke: - lammps_smoke - macsio_smoke - datamover_smoke + - e3smio_smoke # num of bytes to write to reserved container resv_bytes: 500 enable_intercept_lib: true @@ -215,7 +213,23 @@ lammps_smoke: cores: '0-7' oclass: - ["EC_2P1GX", "RP_2GX"] - +e3smio_smoke: + job_timeout: 20 + nodesperjob: + - 4 + taskspernode: + - 32 + cmdline: "e3sm_io -r 10 -o can_I_out.h5 -a hdf5 -x canonical -k " + api: + - POSIX-LIBPIL4DFS + workdir: "/tmp/soak_dfuse_e3smio/" + dfuse: + mount_dir: "/tmp/soak_dfuse_e3smio/" + disable_caching: true + thread_count: 8 + cores: '0-7' + oclass: + - ["EC_2P1GX", "RP_2GX"] mdtest_smoke: # maximum timeout for a single job in test in minutes job_timeout: 10 diff --git a/src/tests/ftest/util/soak_test_base.py b/src/tests/ftest/util/soak_test_base.py index 71c3296f236..138d66d715d 100644 --- a/src/tests/ftest/util/soak_test_base.py +++ b/src/tests/ftest/util/soak_test_base.py @@ -1,6 +1,6 @@ """ (C) Copyright 2019-2024 Intel Corporation. -(C) Copyright 2025 Hewlett Packard Enterprise Development LP +(C) Copyright 2025-2026 Hewlett Packard Enterprise Development LP SPDX-License-Identifier: BSD-2-Clause-Patent """ @@ -448,6 +448,8 @@ def job_setup(self, jobs, pool): commands = create_app_cmdline(self, job, pool, ppn, npj) elif "lammps" in job: commands = create_app_cmdline(self, job, pool, ppn, npj) + elif "e3smio" in job: + commands = create_app_cmdline(self, job, pool, ppn, npj) elif "macsio" in job: commands = create_macsio_cmdline(self, job, pool, ppn, npj) elif "datamover" in job: diff --git a/src/tests/ftest/util/soak_utils.py b/src/tests/ftest/util/soak_utils.py index 3991b810f31..6f8dea2c3ea 100644 --- a/src/tests/ftest/util/soak_utils.py +++ b/src/tests/ftest/util/soak_utils.py @@ -1532,20 +1532,37 @@ def create_app_cmdline(self, job_spec, pool, ppn, nodesperjob): mpirun_cmd.get_params(self) env = EnvironmentVariables() env["D_LOG_FILE_APPEND_PID"] = "1" - if "mpich" in mpi_module: + if "mpich" in mpi_module and "e3smio" not in job_spec: # Pass pool and container information to the commands env["DAOS_UNS_PREFIX"] = format_path(pool, self.container[-1]) if self.enable_il and api == "POSIX-LIBPIL4DFS": env["LD_PRELOAD"] = os.path.join(self.prefix, 'lib64', 'libpil4dfs.so') if self.enable_il and api == "POSIX-LIBIOIL": env["LD_PRELOAD"] = os.path.join(self.prefix, 'lib64', 'libioil.so') + self.log.info(f"<