{"id":24562628,"url":"https://github.com/humanbrainproject/coallocation-slurm-plugin","last_synced_at":"2026-01-03T14:16:53.136Z","repository":{"id":74588405,"uuid":"237415921","full_name":"HumanBrainProject/coallocation-slurm-plugin","owner":"HumanBrainProject","description":null,"archived":false,"fork":false,"pushed_at":"2023-10-16T14:49:52.000Z","size":117,"stargazers_count":1,"open_issues_count":0,"forks_count":2,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-01-23T09:16:35.085Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"M4","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HumanBrainProject.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-01-31T11:22:56.000Z","updated_at":"2023-10-16T14:49:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"fdb8255c-5e06-4047-bcef-670fe828b90d","html_url":"https://github.com/HumanBrainProject/coallocation-slurm-plugin","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HumanBrainProject%2Fcoallocation-slurm-plugin","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HumanBrainProject%2Fcoallocation-slurm-plugin/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HumanBrainProject%2Fcoallocation-slurm-plugin/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HumanBrainProject%2Fcoallocation-slurm-plugin/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HumanBrainProject","download_url":"https://codeload.github.com/HumanBrainProject/coallocation-slurm-plugin/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243945623,"owners_count":20372897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-01-23T09:16:36.872Z","updated_at":"2026-01-03T14:16:53.108Z","avatar_url":"https://github.com/HumanBrainProject.png","language":"M4","funding_links":[],"categories":[],"sub_categories":[],"readme":"How-to-use instructions\r\n=======================\r\nTo use our plugin in a multi-tiered storage cluster, we describe how to install and use our plugin as follows. We have considered two storage tiers, called low-performance storage (LPS) and high-performance storage (HPS).\r\n\r\nInstallation guide\r\n------------------\r\nFollow the steps on https://slurm.schedmd.com/add.html under _Adding a Plugin to Slurm_ to install the provided plugin (tested with Slurm version 20.02.5). The provided `Vagrantfile` automates this process for our virtual testbed.\r\n\r\nUser guide\r\n----------\r\nWhen submitting jobs with the `sbatch` command, users can use the `--bb` argument to specify job storage requirements. The plugin expects two arguments passed to the `--bb` argument in quotation marks:\r\n- `capacity`: the high-performance storage capacity required by the job\r\n- `io`: the intermediate data read and written to the high-performance storage during the runtime of the job\r\n\r\nThe current version of the plugin implements the scheduling mechanism published by our paper [[1]](#1).\r\n\r\nTo We provide a simple job script called sample_job.sh as follows:\r\n```\r\n#!/bin/bash\r\n#\r\n#SBATCH --job-name=sample_job\r\n#SBATCH --output=sample_job_%j.out\r\n#SBATCH --ntasks=1\r\n#SBATCH --time=05:00\r\n#SBATCH --mem-per-cpu=512\r\n\r\ndd if=/dev/zero of=\"$SLURM_STORAGE_TIER/testfile_$SLURM_JOBID.dat\" bs=1M count=1024\r\nrm \"$SLURM_STORAGE_TIER/testfile_$SLURM_JOBID.dat\"\r\n\r\n#end of job script\r\n```\r\nThis job creates and removes a 1.0 GiB test file called `testfile_\u003cSlurm_Job_ID\u003e.dat` on the storage tier selected by the plugin. Submit the job using `sbatch` as follows:\r\n```\r\nsbatch --bb=\"capacity=1024 io=8192\" sample_job.sh\r\n```\r\n\r\nSetup the virtual testbed\r\n-------------------------\r\n\r\nWe have used a virtual cluster for our development and test purposes. To make this environment easily usable for everybody, we automated the setup process by Vagrant Software. To complete all requirements for producing the virtual cluster and testing the plugin, the following steps are sufficient:\r\n\r\n1. Install both **VirtualBox** and **Vagrant** software inside a Linux system.\r\n2. Clone the repository of the project, to setup the virtual cluster.\r\n3. Clone Slurm (https://github.com/SchedMD/slurm.git) in the same folder.\r\n4. Checkout the Slurm version **slurm-21-08-8-2**\r\n5. Run `vagrant up`.\r\n6. Run `vagrant ssh controller`.\r\n7. Run `start_slurm`.\r\n8. Run `vagrant ssh server1` in a separate session.\r\n9. Run `start_slurm`.\r\n10. Repeat steps 8 and 9 for **server2** VM.\r\n11. Make sure that **server1** and **server2** are in idle state and ready to accept jobs, by running `sinfo` on the **controller** VM.\r\n\r\nWith this setup, Vagrant creates three machines (two compute nodes and a single control daemon server) and two 5 GiB shared storage tiers (**LPS** and **HPS**). Jobs are submitted using the `sbatch` command. By passing the job storage requirements of jobs (e.g. `sbatch --bb=\"capacity=1024 io=8192\" sample_job.sh`), as discussed in the previous section, Slurm will decide which compute and data resources are assigned to the job. \r\n\r\n## References\r\n\u003ca id=\"1\"\u003e[1]\u003c/a\u003e\r\nLeah E. Lackner, Hamid Mohammadi Fard, Felix Wolf: Efficient Job Scheduling for Clusters with Shared Tiered Storage. In Proc. of the 19th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing (CCGrid), Larnaca, Cyprus, pages 321–330, IEEE, May 2019.\r\n\r\n## Acknowledgements\r\nThis open source software was supported by the EBRAINS research infrastructure, funded from the European Union’s Horizon 2020 Framework Programme for Research and Innovation under the Specific Grant Agreement No. 785907 and No. 945539 (Human Brain Project SGA2 and SGA3).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhumanbrainproject%2Fcoallocation-slurm-plugin","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhumanbrainproject%2Fcoallocation-slurm-plugin","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhumanbrainproject%2Fcoallocation-slurm-plugin/lists"}