Main(rus) Documets(rus) Screenshots Examples(rus) About(rus)

Cleo batch system


If you want to use it, please fill the registration form. It is absolutelly free.

What is it.

Cleo batch system is purposed to control parallel tasks on computer clusters. It controls one or more task queues.


  • tasks sceduling (all MPI implemetations are supported, most other parallel environments are supported too)
  • task processes terminating on compute nodes
  • automatic dead nodes blocking
  • programmable free nodes distribution between tasks
  • cluster using policy control
  • controllable user limits (max used cpus, task work time, etc.)
  • customizable graphical or text queue and tasks info (via qs-web package)
  • Extensions: custom cpu distriburors and scedulers


Cleo requires: perl 5.6 or higher, and modules Storable, Fcntl, Time, POSIX and IO; Linux 2.4 or better.


Cleo consists of:

  • server (controls queues)
  • agets (runs on nodes, are optional)
  • client software

You mustn't create task file for every new task. You simply can use mpirun programm. This programm is a wrapper, which emulates standard mpirun and understand some additional options. For example:

  mpirun -np 4 my_program arg1 arg2

You can view queues by tasks command or via web-interface.

  > tasks
Queue: main
Running: 1; Queued: 0; Pre-runned: 0; Free: 8 of 9+1 (0 blocked)
ID : User: NP: Time : Timelimit: Task
1635 : user1: 2: 20:07:41 :Mar 25 15:25:39: my_task

Tasks deleting is repformed by tasks command with -d key:

  > tasks -d 1635

Administrative cleo commands:

  • cleo-priority - change task priority. Is available for users too (only for own tasks)
  • cleo-blocktask - tasks (un)blocking. Available for users too
  • cleo-autoblock - set autoblock policy for one, all users or users group
  • cleo-blockcpu - (un)block cpu(s)
  • cleo-mode - check or set operation mode
  • cleo-stat - generate statistics report

Task queues can be independet or hierarchical. For example:

long short
cpu1 cpu2 cpu3 cpu4 cpu5 cpu6 cpu7 cpu8 cpu9 cpu10

Here long and short are independent - all tasks from one do not influence to other. But both are daughter to main. Any task in main will be queued to daughter queues if there aren't enough free own cpus (not shared with daughters). When daughter queues will get enough cpus for this task, it will be runned in main.

There is special featire in standatd sceduler. All "short" tasks will be runned before its order, if there are enough free cpus and no new cpus are planned to be freed while "short" task will run.

You can read about more features (such as autoblocking, profiles, etc.) in the Cleo documentation.

Here the last Cleo version is available for download.