-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add script to test S1 performance #24
base: main
Are you sure you want to change the base?
Conversation
# Edit the config file to point to a single S1 option, e.g., | ||
echo 'CVMFS_SERVER_URL="'"$s1server"'"' | sudo tee /etc/cvmfs/domain.d/eessi-hpc.org.local > /dev/null | ||
# Reconfigure CVMFS | ||
sudo cvmfs_config setup |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should have a way to check the user has the required sudo
rights
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Wasn't the idea to run this in a container, with bind mounts to empty directories for /var/lib/cvmfs
& co (so empty cache), which would totally alleviate the need for sudo
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It wasn't my idea...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It actually doesn't seem like running it in a container can work:
Apptainer> cvmfs_config stat pilot.eessi-hpc.org
pilot.eessi-hpc.org not mounted
Apptainer> source /cvmfs/pilot.eessi-hpc.org/latest/init/bash
Found EESSI pilot repo @ /cvmfs/pilot.eessi-hpc.org/versions/2021.12!
archspec says aarch64/graviton2
Using aarch64/graviton2 as software subdirectory.
Using /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/aarch64/graviton2/modules/all as the directory to be added to MODULEPATH.
Found Lmod configuration file at /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/aarch64/graviton2/.lmod/lmodrc.lua
Initializing Lmod...
Prepending /cvmfs/pilot.eessi-hpc.org/versions/2021.12/software/linux/aarch64/graviton2/modules/all to $MODULEPATH...
Environment set up to use EESSI pilot software stack, have fun!
[EESSI pilot 2021.12] $ cvmfs_config stat pilot.eessi-hpc.org
pilot.eessi-hpc.org not mounted
[EESSI pilot 2021.12] $ cvmfs_config wipecache
root privileges required
[EESSI pilot 2021.12] $ cvmfs_config setup
root privileges required
I can get away with not wiping the cache since I control it, and I guess I can just overwrite the EESSI configuration file with a bind mount, but I am only left with timing the command if I can't run cvmfs_config stat
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually, more than that, I need to be able to run cvmfs_config setup
to put the new configuration in place. Otherwise I need to bind mount a new configuration and run each S1 in a separate container execution step.
I really don't see the worth, we would lose a lot of valuable info and this implementation will run just fine as a CI job.
Should we make this more self-contained to the point of running in a container that has CVMFS? Right now, we assume the machine doing the testing either has CVMFS installed or that we run this into a container. I'd love it if this was a job I could run on a server that has very little of anything installed, but rather pulls a container and uses that to do the work. |
scripts/test_S1_performance.sh
Outdated
realtime=$({ ./run.sh > /dev/null ; } 2> >(grep real | awk '{print $2}')) | ||
KB_per_sec=$(cvmfs_config stat pilot.eessi-hpc.org | column -t -H 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20 | tail -1) | ||
# Print json output | ||
json_array+=("{\"$s1server\": [{\"time\":\"$realtime\"},{\"speed\":\"${KB_per_sec}KB/sec\"}]}") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For parsing reasons, could we do something like this instead?
json_array+=("{\"$s1server\": [{\"time\":\"$realtime\"},{\"speed\":\"${KB_per_sec}\",{\"speed_units\":\"KB/sec}\"}]}")
(I'm not sold on using JSON in command line environments though, I fear the parsing in general.)
@terjekv I tried to get this working inside apptainer but the relevant |
Meh, yeah, I was afraid of that. Another option is to dedicate a VM to run these tests and leave it at that. |
I think we can do better than that, we will probably use our own GitHub runner soon, and can just run the tests in CI from this repo then and upload a json artifact. |
I'm included to take this as is, and go with the proposed solution of an action. At least that gives us a starting point and we can always work around that later if need be. |
We still don't have any testing for measuring S1 performance, so I'm reopening this until it is replaced |
Example (pretty-printed) output