Batsim is a Batch scheduler simulator. A batch scheduler -- AKA Resources and Jobs Management System (RJMS) -- is a system that manages resources in large-scale computing centers, notably by scheduling and placing jobs, and by setting up energy policies. Batsim is open source and distributed under LGPL-3.0 license. See copyright for more details.
Batsim simulates a computing center behavior. It is made such that any event-based scheduling algorithm can be plugged to it. Thus, it allows to compare decision algorithms coming from production and academics worlds.
First install batsim and batsched using one of the methods defined the install and Run documentation page.
You will also need a platform file that defines the cluster hardware and topology, and a workload that defines the set of jobs that will be submitted to the scheduler and when they will be submitted. Some examples are available in this repository so you can grab individual files or clone the whole repo:
git clone https://gitlab.inria.fr/batsim/batsim.git
cd batsim
Now, you can run batsim for a simple workload:
batsim -p platforms/small_platform.xml -w workload_profiles/test_workload_profile.json
Then in an other terminal execute the scheduler:
batsched
Note: Others workloads and platforms examples can be found in the current repository. More sophisticated (and more up-to-date) platforms can be found in the SimGrid repository.
-
Chapters 2 and 3 of Millian Poquet's PhD manuscript explain in detail some of Batsim design choices and how Batsim works internally. The corresponding defense slides may also interest you.
-
Batsim scientific publication pre-print is available on HAL: https://hal.inria.fr/hal-01333471v1. The corresponding slides may also interest you for a better understanding of what Batsim is and for seeking whether it may be interesting for you. These slides have been made for the JSSPP 2016 IPDPS workshop.
-
Batsim internal documentation can be found there.
- Please read our contribution guidelines if you want to contribute to Batsim
- The changelog summarizes information about the project evolution.
- Tutorials shows how to use Batsim and how it works:
- The usage tutorial explains how to execute a Batsim simulation, and how to setup a development docker environment
- The time tutorial explains how the time is managed in a Batsim simulation, shows essential protocol communications and gives an overview of how Batsim works internally
- The protocol documentation defines the protocol used between Batsim and the scheduling algorithms
master | upstream_sg (recent SimGrid) | codacy |
---|---|---|
Batsim uses Gitlab CI as its continuous integration system. Build status of the different commits can be found CI pipline page. More information about our CI setup can be found in the continuous intefgration documentation.
Batsim output files can be visualised using external tools:
- Evalys can be used to visualise Gantt chart from the Batsim job.csv files and SWF files
- Vite for the Pajé traces
As Batsim simulation involve multiple processes, they may be tricky to manage.
Some tools already exist to achieve this goal:
- python tools are located there
- a more robust and modular approach is conducted there and is expected to deprecate aforementioned python tools.
You can also find other tools in the tools directory, for example to conduct convertions between SWF and Batsim workload formats.
Schedulers must follow a text-based protocol to communicate with Batsim. More details about the protocol can be found in the protocol description.
You may also base your work on existing Batsim-compatible schedulers:
You can install batsim (and batsched) using one of the methods defined the install and Run documentation page.
It is highly recommended to use the method describe in the Development environment page to get everything setup and running: from compilation to tests.
If you want to run more complex scenarios, giving a look at our experiment tools may save you some time! (May be deprecated in the future by batexpe)