Vertigo — How does queueing work?

The Basics

To run a simulation in Vertigo, you must decide how many threads and how much RAM your simulation needs. Once you've decided, you can schedule it. Vertigo will then add it to the queue, and it will run it when the necessary resources are available.

YOU SHOULD NEVER RUN CODE DIRECTLY ON VERTIGO. Doing so could cause somebody else's simulations to crash!

The Queues

We use a system of several queues (or "partitions"), each intended for different uses, and each with different priorities:

  • The Debug Queue

    If you're running a small test before scheduling the big simulation, this queue is for you. This queue has the highest priority: jobs in this queue will always run first. However, jobs sent to this queue have a time limit of 1 hour. If your job needs more time to run, you should submit it to one of the other queues.

  • The Standard Queue

    This is the default queue. It has medium priority: if there are no debug jobs pending, jobs in this queue will run first. However, jobs sent to this queue can only use 1 thread. If you need multiple threads, you should submit your job to the parallel queue.

  • The Parallel Queue

    This queue has the lowest priority, since multithreaded jobs often take up many of Vertigo's resources. If somebody else schedules jobs in the standard queue, theirs will run first. However, jobs sent to this queue can use as many threads and as much RAM as needed.

    If you use the parallel queue, make sure your code is capable of running in parallel. Simply adding multiple threads is not enough to make code run in parallel!

Queuing Fairness

The scheduler prioritises the queues as detailed above. Within each queue, the order in which the jobs will run is not "first come, first served". The scheduler's first priority is to ensure that Vertigo is in continuous use: for instance, if there are 10 threads idle, a job that requires 8 threads will immediately start, even if there is an older 12-thread job still queued.

Whenever there's a choide between multiple jobs that could be started, Vertigo tries to share usage fairly among users. If you have recently completed many jobs, another user's jobs will be prioritised for a while, to ensure everyone's simulations get a turn.

My Job Won't Start

Have you exceeded the system's resources? If you request 100 threads, your job will never start, since there are only 96 available.

Is Vertigo really busy? Use the commands to check if other jobs are running.