Diferencia entre las páginas «Glosario» y «Monitoreo»

De NLHPC
(Diferencia entre las páginas)
 
 
Línea 1: Línea 1:
== Introducción ==
== ¿Como listo las tareas? ==
El presente documento contiene un listado de términos y palabras que son utilizadas en el ámbito de las presentaciones y cursos que dicta el NLHPC, como también en la wiki y en nuestros distintos sitios.
Ejecuto el comando [https://slurm.schedmd.com/squeue.html squeue] para conocer por ejemplo el estado, tiempo de ejecución e identificador de los trabajos [https://wiki.nlhpc.cl/SISTEMA_GESTOR_DE_RECURSOS SLURM]
<pre>
[usuario@leftraru1 ~]$ squeue -o "%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.2t %.10q %.4C %.2D %.7W %N " -S -t,-Q


Al poder entregar una definición transversal a las instancias mencionadas y a las relacionadas con el quehacer del NLHPC podremos comprender de mejor manera lo que deseamos expresar.
JOBID    PARTIT  NAME    START_TIME          TIME      TIME_LEFT  SUBMIT_TIME        ST  QOS CPUS NO LICENSE NODELIST
12863561  slims  test04  2018-07-08T13:57:53  1-20:25:20 1-03:34:40 2018-07-08T13:57:26  R  120  5  1  (null)  cn000
12864082  slims  test02  2018-07-09T10:44:15    23:38:58 2-00:21:02 2018-07-09T10:43:51  R  120  10  1  (null)  cn001
12865333  slims  test01  2018-07-10T17:16:38        0:00 3-00:00:00 2018-07-10T09:30:22  PD 120  10  1  (null) 
12865334  slims  test06  2018-07-10T17:49:42        0:00 3-00:00:00 2018-07-10T09:38:13  PD 120  10  1  (null) 
12865335  slims  test09  2018-07-11T07:42:16        0:00 3-00:00:00 2018-07-10T09:28:05  PD 120  20  1  (null)
</pre>


== Glosario ==
== ¿Como monitoreo los recursos utilizados por mi tarea? ==
=== A ===
=== Conectándose al nodo ===
* '''Acceso SSH''': Referencia al uso mediante protocolo de seguridad SSH. Usualmente utilizado en terminales, como en aplicaciones como Putty.
Siempre y cuando tengamos tareas corriendo en un nodo, podemos entrar en este vía SSH.


=== B ===
==== * uptime ====
* '''Bash/Shell''': Intérprete de comandos que permite la interacción interactiva con el usuario. Desde este intérprete de comandos es posible ejecutar comandos, programas y ejecutar simulaciones en el Gestor de Tareas del Cluster.
Para conocer la carga del nodo, cuantos procesos por core existen actualmente.
* '''Batch/Batch script/Script''': Archivo de texto con un conjunto de instrucciones. A diferencia de un código fuente, estas instrucciones son ejecutadas por el sistema operativo o un programa interprete como por ejemplo Python.
<pre>
[usuario@leftraru1 ~]# ssh cn109
usuario@cn000 s password:
[usuario@cn000 ~]# uptime
10:40:59 up 27 days, 16:46,  1 user,  load average: 17.04, 13.76, 13.09
</pre>


=== C ===
==== * User Stats ====
* '''Cache:''' Una caché es un componente de hardware o software que guarda datos para que las solicitudes futuras de esos datos se puedan atender con mayor rapidez.
Este script permite revisar:
* '''Cambio de Contexto:''' Consiste en la ejecución de una rutina perteneciente al núcleo del sistema operativo multitarea de una computadora, cuyo propósito es parar la ejecución de un hilo o proceso para dar paso a la ejecución de otro distinto.
* '''Cluster:''' Conjunto de computadores y servidores interconectados que se ven como una sola máquina. En nuestro caso tenemos los clusters Leftraru y Guacolda.
* '''Código Fuente/Source code:''' Conjunto de archivos de texto que contienen las instrucciones computacionales que una vez que son compiladas generan un archivo de tipo binario que será el programa a ejecutar.
* '''Cola/Cola de Trabajo/Queue:''' Listado de trabajos asociados a un usuario y/o partición que se encuentran en distintos estados. La cola se organiza por orden de llegada.
* '''Compilador:''' En informática, un compilador es un tipo de traductor que transforma un programa entero de un lenguaje de programación (llamado código fuente) a otro.
* '''Core/CPU:''' Unidad de procesamiento, circuito electrónico que ejecuta las instrucciones de un programa.


=== E ===
===== La memoria por core (en kb) =====
* '''Estado de Nodo:''' Referido a la situación en particular de un nodo. Un nodo puede encontrarse Disponible(IDLE), No Disponible(Down), Ocupado(Allocated), Ocupado Parcial(MIX).
<pre>
* '''Estado de Tarea:''' Referido a la situación en particular de una tarea enviada al Gestor de Tareas. Una tarea puede encontrarse en Pendiende(Pending), En Ejecución(Running), Finalizada(Completed), Cancelada(Cancelled), entre otros.
[usuario@cn000 ~]$ /home/apps/nlhpc/bin/user_stats.sh mem
00 371695616
01 373268480
02 367038464
03 363290624
04 367382528
</pre>


=== G ===
===== Cantidad de procesos por core =====
* '''Gestor/Gestor Slurm/Slurm:''' Organizador de recursos computacionales, particiones y colas de trabajo. Permite la organización y correcta asignación de recursos necesarios para que los usuarios puedan ejecutar sus simulaciones.
<pre>
[usuario@cn000 ~]$ /home/apps/nlhpc/bin/user_stats.sh load
00 1
01 2
02 1
03 1
04 1
</pre>


=== H ===
==== * htop ====
* '''Hardware:''' En informática se refiere a las partes físicas, tangibles, de un sistema informático; sus componentes eléctricos, electrónicos, electromecánicos y mecánicos.
Es un visor de procesos en linux, basado en ncurses.
* '''Hilo/Thread:''' Un hilo dentro de un procesador es la forma en que cada uno de los núcleos del CPU recibirá y procesará la información. Cada core puede atender un hilo a la vez.
<pre>
* '''HPC:''' La computación de alto rendimiento (High performance Computing o HPC en inglés) es la agregación de potencia de cálculo para resolver problemas complejos en ciencia, ingeniería o gestión.
[usuario@cn109 ~]# htop
</pre>


=== I ===
[[Archivo:Htop.png|no|htop]]
* '''Identificador de Tarea/Job ID:''' Número único e irrepetible asignado a una tarea. Permite la identificación de una Tarea enviada al Gestor Slurm.
* '''IP:''' Una dirección IP es un número que identifica de forma única a una interfaz en red de cualquier dispositivo conectado a ella que utilice el protocolo IP (Internet Protocol), que corresponde al nivel de red del modelo TCP/IP.


=== L ===
* '''Login/Inicio de Sesión:''' Dícese de la acción de ingresar su nombre de usuario y clave personal para acceder a una instancia computacional, como una terminal o a un servicio que requiera validación.


=== M ===
.
* '''Memoria Compartida/Shared Memory:''' En informática, la memoria compartida es aquel tipo de memoria que puede ser accedida por múltiples programas, ya sea para comunicarse entre ellos o para evitar copias redundantes.
* '''MPI:''' (interfaz de paso de mensajes) es la API de comunicación estándar para trabajos paralelos de memoria distribuida capaz de implementarse en un clúster. Las tareas se pueden ejecutar en múltiples nodos.
* '''Multi Core:''' Un procesador multinúcleo es aquel que combina dos o más microprocesadores independientes en un solo paquete, a menudo un solo circuito integrado.
* '''Multi Hilo/Multi-Threaded:''' Las unidades centrales de procesamiento con capacidad para multihilo (multithreading en inglés) tienen soporte en hardware para ejecutar eficientemente múltiples hilos de ejecución.


=== N ===
=== A través de Ganglia ===
* '''Nodo:''' Unidad de hardware perteneciente a un cluster. Esta unidad tiene CPU y memoria RAM.
Ganglia es un sistema de monitoreo distribuido para sistemas HPC, por cada uno de los nodos de cómputo de las diferentes particiones están disponibles los gráficos de memoria, carga, porcentaje de cpu usada, tráfico, etc.


=== O ===
[[Archivo:Ganglia.png|no|300px]]
* '''OpenMP:''' Es una interfaz de programación de aplicaciones (API) para la programación multiproceso de memoria compartida en múltiples plataformas. Las tareas se ejecutan en un único nodo.


=== P ===
=== A través de [http://dashboard.nlhpc.cl/ Dashboard] ===
* '''Partición:''' En el ámbito del NLHPC, una partición es un conjunto de recursos físicos que incluye memoria RAM, procesadores y almacenamiento para la ejecución de tareas.
Panel de visualización del estado de los nodos. Muestra una vista rápida del estado de los nodos (de login y de cómputo) y uso general del cluster, ademas de encontrar el listado de tareas en ejecución, pendientes, históricos.


=== R ===
=== En el correo de notificación ===
* '''RAM:''' La memoria de acceso aleatorio (Random Access Memory, RAM) se utiliza como memoria de trabajo de computadoras y otros dispositivos para el sistema operativo.
Al terminar una tarea se adjuntan las siguientes gráficas:


=== S ===
==== Porcentaje de uso por core ====
* '''Socket:''' Cantidad de procesadores que tiene un nodo. Un procesador puede tener n cores
[[Archivo:300px-Correo CPU.png|izquierda]]
* '''Software:''' Se conoce como software al soporte lógico de un sistema informático, que comprende el conjunto de los componentes lógicos necesarios que hacen posible la realización de tareas específicas.
* '''SSH:''' (Secure SHell) es el nombre de un protocolo y del programa que lo implementa cuya principal función es el acceso remoto a un servidor por medio de un canal seguro en el que toda la información está cifrada.


=== T ===
==== Memoria utilizada por core ====
* '''Tarea/Job:''' Dícese del script enviado al Gestor de Tareas que indica los recursos computacionales solicitados para la ejecución de una simulación y/o programa. La tarea pasa a la Cola de Trabajo en espera de recursos para su ejecución.


== ¿Y ahora qué? ==
[[Archivo:300px-Correo MEMxCPU.png|izquierda]]
Con la aclaración de estos puntos, esperamos que su participación en próximos eventos del NLHPC como la lectura de la Wiki le resulte clarificadora para el uso del Cluster Leftraru-Guacolda y que logre lanzar las simulaciones para obtener los resultados para sus investigaciones.


También lo invitamos a enviarnos sus comentarios o recomendaciones de nuevas palabras a agregar a este glosario al correo '''[mailto:soporte@nlhpc.cl soporte@nlhpc.cl.]'''
==== Archivo report.log ====
<pre>
job_id=12668XXX user=usuario mail=None start_time=2018-07-09T06:51:34 running_time=3:53:28 cores_total=10 nodes_raw=cn094 alarm_cpu=True alarm_memory=False watch|avg|std|ptotal=10800|30|20|50 ptcw=70 command=/home/usuario/tarea.sh nodes={'cn094': {'mem': '10000', 'cpu': [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]}} alarm_count=1 last_time=1531147611 iter=2 job_cancel=None modules=[]
n=cn094
 
  mem max:3586 resv:10000
  cpu=10 avg=91.00 std=45.77 / all avg=0.00 std=0.00
  cpu= 0 avg=98.19 std=44.53 / all avg=0.00 std=0.00
* cpu= 3 avg=0.56 std=0.50 / all avg=0.47 std=0.50
* cpu= 2 avg=0.86 std=0.35 / all avg=0.66 std=0.47
* cpu= 5 avg=0.64 std=0.48 / all avg=0.49 std=0.50
* cpu= 4 avg=0.53 std=0.50 / all avg=0.40 std=0.49
  cpu= 7 avg=82.11 std=48.93 / all avg=0.00 std=0.00
* cpu= 6 avg=0.56 std=0.50 / all avg=0.45 std=0.50
* cpu= 9 avg=0.47 std=0.50 / all avg=0.36 std=0.48
* cpu= 8 avg=0.72 std=0.45 / all avg=0.79 std=0.41
</pre>
 
* En mem max:'''3586''' resv:10000 se destaca que el máximo de memoria utilizada por la tarea ha sido de 3568M
* Por cada una de los cores se despliega: el uso promedio de cada core, la desviación estándar en las últimas 3 horas / del total de tiempo de ejecución.

Revisión del 16:00 6 sep 2022

¿Como listo las tareas?

Ejecuto el comando squeue para conocer por ejemplo el estado, tiempo de ejecución e identificador de los trabajos SLURM

[usuario@leftraru1 ~]$ squeue -o "%.15i %.6P %.8j %.20S %.11M %.11L %.20V %.2t %.10q %.4C %.2D %.7W %N " -S -t,-Q

JOBID    PARTIT   NAME    START_TIME           TIME       TIME_LEFT  SUBMIT_TIME         ST  QOS CPUS NO LICENSE NODELIST 
12863561  slims   test04  2018-07-08T13:57:53  1-20:25:20 1-03:34:40 2018-07-08T13:57:26  R  120  5   1  (null)  cn000 
12864082  slims   test02  2018-07-09T10:44:15    23:38:58 2-00:21:02 2018-07-09T10:43:51  R  120  10  1  (null)  cn001 
12865333  slims   test01  2018-07-10T17:16:38        0:00 3-00:00:00 2018-07-10T09:30:22  PD 120  10  1  (null)  
12865334  slims   test06  2018-07-10T17:49:42        0:00 3-00:00:00 2018-07-10T09:38:13  PD 120  10  1  (null)  
12865335  slims   test09  2018-07-11T07:42:16        0:00 3-00:00:00 2018-07-10T09:28:05  PD 120  20  1  (null)

¿Como monitoreo los recursos utilizados por mi tarea?

Conectándose al nodo

Siempre y cuando tengamos tareas corriendo en un nodo, podemos entrar en este vía SSH.

* uptime

Para conocer la carga del nodo, cuantos procesos por core existen actualmente.

[usuario@leftraru1 ~]# ssh cn109
usuario@cn000 s password:
[usuario@cn000 ~]# uptime
10:40:59 up 27 days, 16:46,  1 user,  load average: 17.04, 13.76, 13.09

* User Stats

Este script permite revisar:

La memoria por core (en kb)
[usuario@cn000 ~]$ /home/apps/nlhpc/bin/user_stats.sh mem
00 371695616
01 373268480
02 367038464
03 363290624
04 367382528
Cantidad de procesos por core
[usuario@cn000 ~]$ /home/apps/nlhpc/bin/user_stats.sh load
00 1
01 2
02 1
03 1
04 1

* htop

Es un visor de procesos en linux, basado en ncurses.

[usuario@cn109 ~]# htop
htop


.

A través de Ganglia

Ganglia es un sistema de monitoreo distribuido para sistemas HPC, por cada uno de los nodos de cómputo de las diferentes particiones están disponibles los gráficos de memoria, carga, porcentaje de cpu usada, tráfico, etc.

Ganglia.png

A través de Dashboard

Panel de visualización del estado de los nodos. Muestra una vista rápida del estado de los nodos (de login y de cómputo) y uso general del cluster, ademas de encontrar el listado de tareas en ejecución, pendientes, históricos.

En el correo de notificación

Al terminar una tarea se adjuntan las siguientes gráficas:

Porcentaje de uso por core

Memoria utilizada por core

Archivo report.log

job_id=12668XXX user=usuario mail=None start_time=2018-07-09T06:51:34 running_time=3:53:28 cores_total=10 nodes_raw=cn094 alarm_cpu=True alarm_memory=False watch|avg|std|ptotal=10800|30|20|50 ptcw=70 command=/home/usuario/tarea.sh nodes={'cn094': {'mem': '10000', 'cpu': [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]}} alarm_count=1 last_time=1531147611 iter=2 job_cancel=None modules=[]
n=cn094

  mem max:3586 resv:10000
  cpu=10 avg=91.00 std=45.77 / all avg=0.00 std=0.00
  cpu= 0 avg=98.19 std=44.53 / all avg=0.00 std=0.00
* cpu= 3 avg=0.56 std=0.50 / all avg=0.47 std=0.50
* cpu= 2 avg=0.86 std=0.35 / all avg=0.66 std=0.47
* cpu= 5 avg=0.64 std=0.48 / all avg=0.49 std=0.50
* cpu= 4 avg=0.53 std=0.50 / all avg=0.40 std=0.49
  cpu= 7 avg=82.11 std=48.93 / all avg=0.00 std=0.00
* cpu= 6 avg=0.56 std=0.50 / all avg=0.45 std=0.50
* cpu= 9 avg=0.47 std=0.50 / all avg=0.36 std=0.48
* cpu= 8 avg=0.72 std=0.45 / all avg=0.79 std=0.41
  • En mem max:3586 resv:10000 se destaca que el máximo de memoria utilizada por la tarea ha sido de 3568M
  • Por cada una de los cores se despliega: el uso promedio de cada core, la desviación estándar en las últimas 3 horas / del total de tiempo de ejecución.