SGE - Attribuer des quotas

Les quotas sour SGE permettent d’appliquer des limites à plusieurs types de ressources en fonctions des consommateurs.

Types de ressources et types de consommateurs

Ressources

Les ressources peuvent être des :

  • slots (coeurs)
  • arch (architectures)
  • mem_total (mémoire)
  • num_proc (nombre de processeur)
  • swap_total (mémoire swap)
  • built-in resources (ressources interne)
  • custom-defined resource (ressources ajoutées, comme un compilateur de licence)

Consommateurs

Les consommateurs de ressources peuvent êtres des :

  • users
  • queues
  • hosts
  • projects
  • parallel environments *

Environnement parallèle (PE) : progiciel (software package) permettant un traitement distribué et parallèle sur diverses plates-formes matérielles. Exemples : Machine virtuelle parallèle (PVM)

Configurer les quotas des ressources

Visualiser les quotas en place

La commande qquota permet de voir les quotas en place sur le serveur :

# qquota
resource quota rule limit filter
--------------------------------------------------------------------------------
max_slots_per_hosts/1 slots=8/40 hosts mynode04
max_slots_per_hosts/1 slots=6/40 hosts mynode05
max_slots_per_hosts/1 slots=7/40 hosts mynode06

Lister les quotas définis

La commande qconf permet de visualiser, d’ajouter, de modifier ou de supprimer les quotas.

Voir tous les quotas existants :

# qconf -srqsl

Voir de façon détaillé des quotas existants :

# qconf -srqs [name_list]

Lister les quotas pour un utilisateur

Affichee les informations sur les quotas qui s’appliquent à l’utilisateur marty :

$ qquota -u marty
resource quota limit filter
-------------------------------------------------------
max_jobs/1 slots=5/20 -
max_linux/1 slots=5/5 particule @linux
max_per_host/1 slots=1/2 john marty particule quantique

Ajouter des quotas

Pour ajouter un quota :

# qconf -arqs [name]

Pour ajouter des informations dans un quota depuis un autre quota existant :

# qconf -Mrqs [nameQuota] [nameNewQuota]

Utiliser la commande -mrqs ou -Mrqs sans mettre de nom remplacera tous les quotas actuellement configurés.

Modifier des quotas

Pour modifier un quota déjà existant :

# qconf -mrqs [name]

/_!_\ Attention : utiliser la commande -mrqs ou -Mrqs sans mettre de nom remplacera tous les quotas actuellement configurés.

Appliquer des quotas

Pour appliquer un quota qui a déjà été défini :

# qconf -Arqs [name]

Supprimer des quotas

Pour supprimer un quota :

# qconf -drqs [name_list]

Exemples

Espace virtuel

L’exemple suivant limite les utilisateurs Emmet et Marty à 2Go d’espace virtuel libre sur chaque hôte du groupe d’hôtes TimeExp.

{
name max_virtual_free_on_TimeExp
description "resource quota for virtual_free restriction"
enabled true
limit users {Emmet,Marty} hosts {@lx_host} to virtual_free=2g
}

Limites dynamiques

L’exemple suivant illustre l’utilisation des limites dynamiques. Les utilisateurs sont autorisés à utiliser 5 slots par processeur sur tous les hôtes Linux.

{
name limit_host_all
description "resource quota for virtual_free restriction"
enabled true
limit hosts {@linux_hosts} to slots=$num_proc*5
}

Nombre maximum de slots

Les exemples suivants définissent le nombre maximum de slots même si le nœud se trouve dans plusieurs queues

{
name max_slots_per_hosts
description Set max slots to num_proc even if node is in multiple queues
enabled FALSE
limit hosts {@noeud10_36} to slots=$num_proc
}
{
name max_slots_per_hosts
description Set max slots to num_proc even if node is in multiple queues
enabled TRUE
limit hosts {*} to slots=$num_proc
}
{
name user_job_limit
description "Limit a 25 slot"
enabled FALSE
limit pes {mpich} to slots=180
}
{
name user_slot_limit
description "Limit a 180 slot"
enabled TRUE
limit users {*} pes mpich to slots=180
limit users {*} to slots=25
}

Cas concret

L’exemple suivant appliquent les limites suivantes :

  • L’ensemble de tous les utilisateurs ne doit pas prendre plus de 20 slots.
  • Tous les utilisateurs doivent prendre au maximum 5 slots sur tous les hôtes Linux.
  • Chaque utilisateur est limité à 1 slot par hôte Linux, sauf Emmet qui est limité à 2 slots, tous les autres slots sur les hôtes sont limités à 0.
  • Le groupe d’hôtes @linux comprend particule et quantique.
{
name max_u_jobs
limit users * to slots=20
}

{
name max_linux
limit users * hosts @linux to slots=5
}

{
name max_per_host
limit users Emmet hosts {@linux} to slots=2
limit users {*} hosts {@linux} to slots=1
limit users * hosts * to slots=0
}

Vérification :

$ qquota # as user Emmet
resource quota rule limit filter
----------------------------------------------------------------
max_u_jobs/1 slots=5/20 -
max_linux/1 slots=5/5 hosts @linux
max_per_host/1 slots=2/2 users Emmet hosts quantique
max_per_host/1 slots=2/2 users Emmet hosts particule

$ qquota -h quantique # as user Emmet
resource quota limit filter
----------------------------------------------------------
max_u_jobs/1 slots=5/20 -
max_linux/1 slots=5/5 hosts @linux
max_per_host/1 slots=2/2 users Emmet hosts quantique

$ qquota -u marty
resource quota limit filter
------------------------------------------------------------
max_u_jobs/1 slots=5/20 -
max_linux/1 slots=5/5 hosts @linux
max_per_host/1 slots=1/2 users marty hosts quantique

$ qquota -u *
resource quota limit filter
-----------------------------------------------------------
max_u_jobs/1 slots=5/20 -
max_linux/1 slots=5/5 hosts @linux
max_per_host/1 slots=2/2 users Emmet hosts particule
max_per_host/1 slots=2/2 users Emmet hosts quantique
max_per_host/1 slots=1/2 users marty hosts quantique

Documentation

https://docs.oracle.com/cd/E19957-01/820-0698/gehwk/index.html
https://linuxcertif.com/man/1/qconf/
http://talby.rcs.manchester.ac.uk/~ri/_danzek_sge/resource_quotas.html

> Partager <