Repository navigation
Description
It takes a few minutes now to even list the tests for all tests in the test suite. Looking at the logs, I noticed the following:
[2026-07-10T14:03:42] debug: reframe: Validating '/home/casparvl/rfm.GkAMf7TaDb/test-suite/eessi/testsuite/tests/apps/walberla/__init__.py': not a test file
[2026-07-10T14:03:42] debug: reframe: Validating '/home/casparvl/rfm.GkAMf7TaDb/test-suite/eessi/testsuite/tests/apps/walberla/walberla.py': OK
[2026-07-10T14:03:42] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:42] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:42] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:42] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:42] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:43] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:43] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:43] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:43] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:44] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:44] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:44] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:44] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:44] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:44] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:44] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:45] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:45] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:45] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:45] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:46] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:46] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:46] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:46] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:46] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:47] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:47] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:47] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:47] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:47] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:47] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:47] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:48] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:48] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:48] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:48] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:49] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:49] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:49] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:49] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:49] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:50] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:50] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:50] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:50] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06'
[2026-07-10T14:03:50] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2022b with regex waLBerla
[2026-07-10T14:03:50] debug: reframe: [find_modules]: Matched module waLBerla/6.1-foss-2023a with regex waLBerla
[2026-07-10T14:03:50] debug: reframe: [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2025.06'
[2026-07-10T14:03:51] verbose: reframe: Scales supported by EESSI_WALBERLA_BACKWARD_FACING_STEP: ('8_cores', '1_8_node', '1_4_node', '1_2_node', '1_node', '2_nodes')
[2026-07-10T14:03:51] debug: reframe: [filter_supported_scales]: valid_systems set to ['+8_cores']
[2026-07-10T14:03:51] debug: reframe: [set_module_names]: module_names set to ['waLBerla/6.1-foss-2022b']
[2026-07-10T14:03:51] debug: reframe: [filter_valid_systems_by_device_type]: valid_systems set to ['+8_cores +cpu'] for device type cpu
[2026-07-10T14:03:51] debug: reframe: [set_tag_scale]: tags set to {'8_cores'}
[2026-07-10T14:03:51] debug: reframe: [filter_supported_scales]: valid_systems set to ['+8_cores']
[2026-07-10T14:03:51] debug: reframe: [set_module_names]: module_names set to ['waLBerla/6.1-foss-2023a']
[2026-07-10T14:03:51] debug: reframe: [filter_valid_systems_by_device_type]: valid_systems set to ['+8_cores +cpu'] for device type cpu
[2026-07-10T14:03:51] debug: reframe: [set_tag_scale]: tags set to {'8_cores'}
...
[2026-07-10T14:03:52] debug: reframe: [set_module_names]: module_names set to ['waLBerla/6.1-foss-2023a']
[2026-07-10T14:03:52] debug: reframe: [filter_valid_systems_by_device_type]: valid_systems set to ['+2_nodes +cpu'] for device type cpu
[2026-07-10T14:03:52] debug: reframe: [set_tag_scale]: tags set to {'2_nodes'}
[2026-07-10T14:03:52] debug: reframe: > Loaded 144 test(s)
In other words, just for waLBerla, it takes 10 seconds. Out of those 10 seconds, 8 seconds seem to be spent in find_modules, specifically (I think) in running [CMD] '/cvmfs/software.eessi.io/versions/2025.06/compat/linux/aarch64/usr/share/Lmod/libexec/lmod python load EESSI/2023.06' and similar. This command is executed 12 times, probably once per partition listed for this system.
I'm wondering if we can still optimize on this and make sure this doesn't happen.
Another thing to note is that even after that, it takes 2 more seconds to instantiate the 144 test instances (and some tests have way more instances, e.g. 1008 for MetalWalls, taking a whopping 10 seconds). OSU has over 5000 instances and takes a whopping minute to instantiate. I'm not sure if there is anything we can optimize here, maybe we can make sure that instantiation is skipped earlier in the pipeline for some very simple cases...
One potential point for improvement is that if someone asks -t 1_node that not all the scales are generated first... Another idea - although I know we've had issues with these in the past combined with EESSI_Mixin - is that we could make a hierarchy using fixtures. If the base class only does the scaling, and then already eliminates all but the 1_node scale before any of the more complex/heavy instantiation happens, that might save substantial time.
Activity
casparvl commentedon Jul 10, 2026
At
test-suite/eessi/testsuite/utils.py
Line 177 in b29d3cf
Why is the
rt.loadenv(part.local_env, env)outside of the if-block there? Don't we only need to load the environment ifenv.nameis NOT in he cache yet? It also saves us thesnap0.restore()I suppose.casparvl commentedon Jul 10, 2026
A bit more fine-grained log, and with https://github.com/EESSI/test-suite/pull/345/changes shows
Great, no longer loading the programming environments every time when they are already cached. We also see better how long it takes to generate a single test instance: about 10ms. About 5ms happens after
EESSI_mixin_set_tag_ci.casparvl commentedon Jul 10, 2026
Hm, there are many instances for which
EESSI_mixin_set_tag_cidoesn't get executed. Maybe those are the ones that are filtered?casparvl commentedon Jul 10, 2026
Ah, no, those are the tests not marekd with the CI tag, of course :) The time it takes per instance is still the same, about 10ms.
casparvl commentedon Jul 10, 2026
Ah, I might misinterpret things: that 5ms may not so muhc happen after
EESSI_mixin_set_tag_ci, but more beforefilter_supported_scales.casparvl commentedon Jul 10, 2026
We should really profile the
initphase (and post-init phase) I guess. Since this happens before the tests are filtered, it takes a lot of time.Note that I also see:
I think this is really the ReFrame runtime. This is taking another 10ms per test case - even the ones that eventually get filtered out.
That means that with 1152 test case (like I have here) both the
inithooks from us plus the runtime take 20ms per test case, thus already accounting for 23 seconds of the total 35s runtime.