Giter VIP home page Giter VIP logo

batsim's Introduction

Batsim

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 overview figure

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.

Getting started

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.

External References

  • 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.

Quick links

  • 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

Build and code status

master upstream_sg (recent SimGrid) codacy
master-badge upstream_sg-badge codacy-badge

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.

Visualisation

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

Tools

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.

Write your own scheduler (or adapt an existing one)

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:

Installation

For users

You can install batsim (and batsched) using one of the methods defined the install and Run documentation page.

For developers

It is highly recommended to use the method describe in the Development environment page to get everything setup and running: from compilation to tests.

Executing complete experiments

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)

batsim's People

Contributors

adfaure avatar augu5te avatar henricasanova avatar mickours avatar mpoquet avatar pfdutot avatar stlackner avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.