Numerosos miembros del iC1 y sus colaboradores utilizan simultáneamente PROTEUS en su labor investigadora. Para que todos tengan oportunidad de usarlo y los recursos se repartan de la forma más equitativa posible, se utiliza el algoritmo Fair Tree Fairshare del gestor de colas Slurm.
Sin entrar en detalles técnicos, el procedimiento para elegir el próximo trabajo a ejecutar es el siguiente:
- Se ordenan todos los trabajos en espera (estado PD) según su prioridad
- Se ejecuta el trabajo con mayor prioridad
- Se repiten los dos puntos anteriores mientras haya recursos disponibles y trabajos en espera
Cálculo de la prioridad
La prioridad de cada trabajo viene dada una serie de métricas multiplicadas por un factor, siguiendo la siguiente fórmula:
Prioridadtrabajo = 90000·Fairshareowner + 5000·TiempoEnEspera + 5000·Tamaño
Donde:
- Fairshare es el ratio de recursos consumidos por el propietario del trabajo durante los últimos 21 días
- TiempoEnCola se refiere al periodo que lleva el trabajo pendiente de ser ejecutado (a mayor tiempo en espera, mayor prioridad, con un máximo de 14 días)
- Tamaño es la cantidad de recursos solicitados, por ejemplo: número de procesadores
Cada uno de estas métricas se evalúa asignándole un valor entre [0,…1]. La métrica Fairshare es la que tiene mayor peso en el cálculo de la prioridad al estar multiplicada por un factor 90000 y es la que va a determinar la prioridad del trabajo. Solo en el caso de que dos o más usuarios tuvieran el mismo Fairshare, el resto de las expresiones tendrían relevancia en el cómputo global.
Familias de nodos y Fairshare
PROTEUS está formado por nodos de distintas familias de CPUs, fruto de distintas actualizaciones a lo largo de los últimos 15 años. La potencia de cálculo de estos nodos varía sustancialmente según estas familias. Para intentar que el acceso a los recursos sea lo más equitativo posible, se han ponderado según su potencia, de acuerdo a pruebas de rendimiento realizadas (más info aquí).
El gestor de colas registra el uso realizado por cada usuario, calculado como el valor ponderado de los recursos solicitados por sus trabajos por el tiempo de uso, y este valor se emplea para determinar la prioridad de cada usuario para el reparto equitativo de recursos. Para llevar a cabo estos cambios, han sido necesarias nuevas particiones, que se corresponden a cada tipo de nodo.
En la siguiente tabla se pueden consultar las particiones y el coste que tienen sus recursos:
Partición | Coste por CPU | Coste por GB de RAM |
---|---|---|
calypso16G | 1.0 | 0.5 |
calypso08G | 1.0 | 1 |
kratos96G | 1.5 | 0.125 |
kratos48G | 1.5 | 0.25 |
hermesv1 | 4.4 | 0.3125 |
hermesv2 | 3.9 | 0.3125 |
hermesBigMem | 4.4 | 0.125 |
metis | 8.8 | 0.25 |
metisBigMem | 8.8 | 0.0625 |
short | 8.5 | 0.294 |
gpgpu | 1.5 | 0.083 |