OAR: Resource and task manager for HPC clusters and other computing infrastructures

Introduction

OAR est un gestionnaire de tâches et de ressources (appelé "batch scheduler"), pour les grosses infrastructures distribuées. Il est actuellement utilisé par la plateforme française Grid'5000, soit par 21 laboratoires de recherche dans 10 villes en France. Il est également installé sur le centre de calcul grenoblois CIMENT. Le développement d'OAR a démarré en 2003, la version actuelle est 2.5.3 (2013-06-25).

Le système est composé de modules, articulés autour d'une base de données. Les différents modules communiquent uniquement en utilisant la base de données, ce qui permet une grande souplesse pour l'implémentation de modules, qui peuvent être écrits dans n'importent quel langage supportant une base de données.

Composition

Une architecture OAR est composée des élements suivants :

- Un nœud serveur, qui contient "l'intelligence".

- Des nœuds "frontend", sur lesquels les utilisateurs se connectent.

- Des nœuds sur lesquels les calculs vont s'exécuter.

Des packets sont disponibles sous la distribution Debian et sur les distributions RPM-based pour faciliter l'instalation. Les différents nœuds communiquent avec le protocole SSH. Pour les nœuds de calcul, le seul prérequis est la présence de OpenSSH.

Utilisation

Pour pouvoir utiliser OAR, il est nécessaire de se connecter sur un des nœuds "frontend". L'utilisateur peut ensuite utiliser les commandes suivantes :

Consultation des ressources

On peut afficher l'état des ressources avec la commande oarnodes. On y trouve des informations, et notamment l'état, pour chaque nœud. L'état peut avoir les valeurs suivantes :

- Alive : Le nœud est prêt à recevoir une tâche.

- Absent : L'administrateur a temporairement retiré le nœud.

- Suspected : Le système OAR a détecté un problème sur le nœud.

- Dead : Le nœud va être prochainement enlevé du système

Réserver des ressources

OAR fonctionne avec un système de jobs. Un job est caractérisé par une tâche a effectuer (un script ou un programme), et la liste des ressources dont l'utilisateur a besoin pour effectuer cette tâche.

Pour soumettre une tâche au système, on utilise la commande oarsub. Par défaut, il faut spécifier un script a exécuter sur les ressources que l'on a réservés. Il est également possible d'accéder directement au terminal des ressources réservés en utilisant l'option -I (Si l'on a réservé plusieurs machines, le terminal s'ouvre sur la première réservée).

L'option -l permet de spécifier les ressources dont on a besoin. L'avantage de OAR est de pouvoir spécifier très précisément les ressources dont on a besoin, selon une hiérarchie déterminée par l'administrateur. Il est possible de réserver des ressources a une très grande échelle, comme par exemple un cluster entier. Il est également possible d'être très spécifique sur les ressources que l'on souhaite réserver, grâce à la hiérarchie. Par exemple de réserver seulement certains cœurs sur une machine, pour laisser les ressources libres pour les autres utilisateurs.

Imaginons la hiérarchie suivante : Switch / Node / CPU / Core.

Réserver un nœud :

- oarsub -l node=1"

Réserver 4 coeurs sur 1 processeurs de 2 machines sur 2 réseaux différents d'un même cluster :

- oarsub -l switch=2/node=2/cpu=1/core=4

Réserver 1 réseau entèrement, et deux machines sur un autre réseau

- oarsub -l switch=1+node=2

Il est a noter que OAR ne gère pas dirèctement les infrastructures multi-clusteurs répartis sur plusieurs sites. Pour cela, il faut utiliser le module OARGRID qui fait le lien entre les différents sites OAR. Son utilisation est similaire à oarsub.

On peut également spécifier la durée de réservation des ressources. avec l'option "-l walltime=H:MM:SS". Si l'on ne spécifie pas de durée, les ressources seront réservés pendant une durée par défaut, configurée par l'administrateur du cluster.

Par défaut, la réservation de ressources est immédiate. On peut spécifier la date de la réservation avec l'option "-r "AAAA-MM-DD HH:MM:SS" "

OAR peut également être utilisé pour réserver des ressources virtuelles, comme des licences de logiciel par exemple.

Libérer les ressources

Les ressources sont immédiatement libérées lorsque le temps spécifié dans le walltime expire (même si la tâche n'est pas terminée). Il est également possible de libérer manuellement une ressource avec la commande oardel

Interfaces graphiques

Il existe également des outils offrant une interface graphique pour simplifier l'utilisation d'OAR par des non-informaticiens. Monika permets d'afficher l'état des ressources sous forme de page html (exemple à Grenoble), et DrawOARGantt sous forme de diagramme de Gant.

OARRestAPI est une API écrite en REST, qui permets de créer facilement des interfaces web de réservation, administration, visualisation, ...

Avantages / Pourquoi utiliser OAR ?

- Comme dit précédemment, OAR permets une grande flexibilité dans la gestion des ressources, il est possible de gérer des grosses infrastructures telles des multi-clusters, et de pouvoir être précis au niveau du nombre de cœurs à utiliser sur une machine. Les versions plus récentes d'OAR utilisent cpuset, une nouvelle fonctionnalité du noyeau Linux qui permets de gérer et de permettre la spéaration des ressources d'une machine pour différents utilisateurs

- De nombreuses fonctionnalités simplifient l'utilisation de OAR. OAR est utilisé par des scientifiques dans différents domaines, tels la biologie ou la chimie. Il n'est donc pas nécessaire d'avoir des compétences poussées en informatique pour s'en servir.

- Pas daemon ni de mises à jour à installer sur les nœuds.

- Il est possible d'éteindre et d'allumer dynamiquement les machines pour réduire la consommation énergétique du cluster (module Hulot).