procesos zombies

De Wikicima
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(procesos sin PBS: Pasos a seguir II)
 
(No se muestran 18 ediciones intermedias realizadas por 2 usuarios)
Línea 7: Línea 7:
 
'''NOTA:''' este es el único caso en el cuál está permitido entrar en los nodos de cálculo del clúster.
 
'''NOTA:''' este es el único caso en el cuál está permitido entrar en los nodos de cálculo del clúster.
   
== Pasos a seguir ==
+
Se generaron dos scripts de shell para controlar estas situaciones.
# Itendificar los procesos de la cola del sistema del usuario (ej. lluis.fita)
+
<pre>
+
== scripts ==
$ qstat
+
Estas son las scripts de shell que se tienen para manejar los zombies del clúster
Job id Name User Time Use S Queue
 
------------------------- ---------------- --------------- -------- - -----
 
4426.hydra wrf_control lluis.fita 1699:08: R larga
 
4427.hydra ...nsSFC-control lluis.fita 0 H larga
 
4432.hydra wrf_control50k pzaninelli 649:09:3 R larga
 
4433.hydra run_experiment pzaninelli 0 H larga
 
4438.hydra wrf_phy1 pzaninelli 645:40:5 R larga
 
4439.hydra run_experiment pzaninelli 0 H larga
 
4440.hydra WRF17O victoria.gallig 603:42:2 R larga
 
4441.hydra WRF17O victoria.gallig 600:18:4 R larga
 
4443.hydra WRF17O lluis.fita 0 Q larga
 
</pre>
 
   
# El proceso <code>4426</code> es una simulación de WRF.
+
=== check_zombies ===
<pre>
+
Esta shell se encarga de consultar en todos los nodos del clúster si el usuarie <code>[usuarie]</code> tiene procesos corriendo del programa <code>[aplicacion]</code>, su uso:
$ qstat -f 4426
+
Job Id: 4426.hydra
+
<pre style="shell">
Job_Name = wrf_control
+
/share/WRF/check_zombies.bash [usuarie] [aplicacion]
Job_Owner = lluis.fita@node48
 
resources_used.cput = 1700:00:37
 
resources_used.mem = 6264020kb
 
resources_used.vmem = 15322976kb
 
resources_used.walltime = 72:40:26
 
job_state = R
 
queue = larga
 
server = hydra
 
Checkpoint = u
 
ctime = Sat Apr 7 10:47:06 2018
 
depend = beforeany:4427.hydra@hydra
 
Error_Path = node48:/home/lluis.fita/estudios/WRFsensSFC/simulations/contr
 
ol/wrf_control.e4426
 
exec_host = node48/23+node48/22+node48/21+node48/20+node48/19+node48/18+no
 
de48/17+node48/16+node48/15+node48/14+node48/13+node48/12+node48/11+no
 
de48/10+node48/9+node48/8+node48/7+node48/6+node48/5+node48/4+node48/3
 
+node48/2+node48/1+node48/0+node51/23+node51/22+node51/21+node51/20+no
 
de51/19+node51/18+node51/17+node51/16+node51/15+node51/14+node51/13+no
 
de51/12+node51/11+node51/10+node51/9+node51/8+node51/7+node51/6+node51
 
/5+node51/4+node51/3+node51/2+node51/1+node51/0
 
exec_port = 15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15
 
003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+
 
15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+1500
 
3+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15
 
003+15003+15003
 
Hold_Types = n
 
Join_Path = oe
 
Keep_Files = n
 
Mail_Points = ae
 
Mail_Users = lluis.fita@cima.fcen.uba.ar
 
mtime = Sat Apr 7 10:48:06 2018
 
Output_Path = node48:/home/lluis.fita/estudios/WRFsensSFC/simulations/cont
 
rol/wrf_control.o4426
 
Priority = 0
 
qtime = Sat Apr 7 10:47:06 2018
 
Rerunable = True
 
Resource_List.mem = 30gb
 
Resource_List.nodect = 2
 
Resource_List.nodes = 2:ppn=24
 
Resource_List.vmem = 30gb
 
Resource_List.walltime = 168:00:00
 
session_id = 19561
 
Variable_List = PBS_O_QUEUE=larga,PBS_O_HOST=node48,
 
PBS_O_HOME=/home/lluis.fita,PBS_O_LANG=en_US.UTF-8,
 
PBS_O_LOGNAME=lluis.fita,
 
PBS_O_PATH=/usr/local/bin:/opt/intel/composerxe-2011.3.174/bin/intel6
 
4:/usr/lib64/qt-3.3/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:
 
/usr/local/maui/bin:/usr/local/maui/sbin:/usr/local/bin:/opt/intel/com
 
poserxe/bin:/usr/local/maui/bin:/usr/local/maui/sbin:/home/lluis.fita/
 
bin:/opt/intel/composerxe-2011.3.174/mpirt/bin/intel64:/usr/local/maui
 
/bin:/usr/local/maui/sbin,PBS_O_MAIL=/var/spool/mail/lluis.fita,
 
PBS_O_SHELL=/bin/bash,PBS_SERVER=hydra,
 
PBS_O_WORKDIR=/home/lluis.fita/estudios/WRFsensSFC/simulations/contro
 
l
 
etime = Sat Apr 7 10:47:14 2018
 
submit_args = -W depend=afterany:4425 /home/lluis.fita/estudios/WRFsensSFC
 
/simulations/control/run_WRF.pbs
 
start_time = Sat Apr 7 10:47:14 2018
 
Walltime.Remaining = 343110
 
start_count = 1
 
fault_tolerant = False
 
submit_host = node48
 
init_work_dir = /home/lluis.fita/estudios/WRFsensSFC/simulations/control
 
 
</pre>
 
</pre>
# La variable <code>PBS_O_WORKDIR</code> contiene el path de ejecución del job. Se tiene que cercionar que el proceso (simulación WRF en este caso), está ejecutándose (en este caso si los rsl.out/error.[nnnn] se están actualizando). En este caso la ejecución del WRF se halla en $PBS_O_WORKDIR/run
 
<pre>
 
$ ls -l /home/lluis.fita/estudios/WRFsensSFC/simulations/control/run/rsl.error.0000
 
rw-r--r-- 1 lluis.fita cima 1204224 Apr 8 19:07 /home/lluis.fita/estudios/WRFsensSFC/simulations/control/run/rsl.error.0000
 
$ date
 
Tue Apr 10 11:32:35 ART 2018
 
</pre>
 
# Está claro que el WRF no está ejecutándose adecuadamente. Así que se tendrá que entrar en el nodo en dónde se está ejecutando y parar el job, ya que el sistema de colas PBS no controla este proceso. El WRF se ejecuta en el nodo (valores de <CODE>exec_host</CODE>) node48 y node51.
 
<pre>
 
[lluis.fita@hydra ~]$ ssh node48
 
[lluis.fita@node48 ~]$ top
 
top - 11:35:40 up 5 days, 47 min, 0 users, load average: 23.00, 22.99, 23.03
 
Tasks: 246 total, 24 running, 198 sleeping, 0 stopped, 24 zombie
 
Cpu(s): 87.4%us, 8.4%sy, 0.0%ni, 4.1%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
 
Mem: 32942908k total, 18055956k used, 14886952k free, 3972k buffers
 
Swap: 0k total, 0k used, 0k free, 12102316k cached
 
   
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
+
Ejemplo de uso para el usuarie <code>lluis.fita</code> y el <code>wrf.exe</code>
21531 lluis.fi 20 0 508m 256m 28m R 100.0 0.8 4360:00 wrf.exe
+
<pre style="shell">
21532 lluis.fi 20 0 503m 248m 23m R 100.0 0.8 4358:44 wrf.exe
+
/share/WRF/check_zombies.bash lluis.f wrf.exe
21537 lluis.fi 20 0 503m 247m 23m R 100.0 0.8 4359:53 wrf.exe
 
21540 lluis.fi 20 0 507m 252m 23m R 100.0 0.8 4359:52 wrf.exe
 
21545 lluis.fi 20 0 503m 249m 24m R 100.0 0.8 4359:35 wrf.exe
 
21546 lluis.fi 20 0 503m 247m 22m R 100.0 0.8 4359:51 wrf.exe
 
21547 lluis.fi 20 0 507m 253m 23m R 100.0 0.8 4360:04 wrf.exe
 
21548 lluis.fi 20 0 507m 254m 24m R 100.0 0.8 4359:52 wrf.exe
 
21549 lluis.fi 20 0 495m 241m 23m R 100.0 0.7 4359:44 wrf.exe
 
21550 lluis.fi 20 0 507m 251m 23m R 100.0 0.8 4359:47 wrf.exe
 
21552 lluis.fi 20 0 501m 249m 27m R 100.0 0.8 4359:49 wrf.exe
 
21529 lluis.fi 20 0 507m 252m 24m R 99.7 0.8 4359:42 wrf.exe
 
21530 lluis.fi 20 0 500m 246m 25m R 99.7 0.8 4360:05 wrf.exe
 
21533 lluis.fi 20 0 507m 253m 23m R 99.7 0.8 4359:55 wrf.exe
 
21534 lluis.fi 20 0 507m 254m 24m R 99.7 0.8 4360:04 wrf.exe
 
21535 lluis.fi 20 0 507m 252m 24m R 99.7 0.8 4359:40 wrf.exe
 
21536 lluis.fi 20 0 503m 250m 24m R 99.7 0.8 4359:37 wrf.exe
 
21539 lluis.fi 20 0 507m 252m 24m R 99.7 0.8 4359:01 wrf.exe
 
21541 lluis.fi 20 0 503m 248m 23m R 99.7 0.8 4360:07 wrf.exe
 
21542 lluis.fi 20 0 500m 250m 27m R 99.7 0.8 4359:49 wrf.exe
 
21543 lluis.fi 20 0 500m 244m 23m R 99.7 0.8 4359:43 wrf.exe
 
21544 lluis.fi 20 0 507m 251m 23m R 99.7 0.8 4359:34 wrf.exe
 
21551 lluis.fi 20 0 507m 257m 27m R 99.7 0.8 4360:02 wrf.exe
 
[lluis.fita@node48 ~]$ killall wrf.exe
 
[lluis.fita@node48 ~]$ top
 
top - 11:37:32 up 5 days, 49 min, 0 users, load average: 19.46, 22.23, 22.79
 
Tasks: 199 total, 1 running, 197 sleeping, 0 stopped, 1 zombie
 
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
 
Mem: 32942908k total, 12665572k used, 20277336k free, 3972k buffers
 
Swap: 0k total, 0k used, 0k free, 12048020k cached
 
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
 
10 root 20 0 0 0 0 S 0.3 0.0 39:27.92 kworker/0:1
 
262 root 20 0 0 0 0 S 0.3 0.0 0:18.40 kpktgend_13
 
272 root 20 0 0 0 0 S 0.3 0.0 0:18.47 kpktgend_23
 
27134 lluis.fi 20 0 15280 1256 888 R 0.3 0.0 0:00.01 top
 
1 root 20 0 25660 1736 1428 S 0.0 0.0 0:05.71 init
 
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
 
3 root 20 0 0 0 0 S 0.0 0.0 0:01.17 ksoftirqd/0
 
[lluis.fita@node48 ~]$ exit
 
 
</pre>
 
</pre>
# Se repite el procedimiento en tantos nodos cómo ocupe el job (en este caso también <code>node51</code>)
+
'''nota:''' Noten que sólo se usa la parte inicial del nombre de usuarie.
<pre>
 
[lluis.fita@hydra ~]$ ssh node51
 
[lluis.fita@node51 ~]$ top
 
[lluis.fita@node51 ~]$ killall wrf.exe
 
[lluis.fita@node51 ~]$ top
 
[lluis.fita@node51 ~]$ exit
 
</pre>
 
# El job re-aparece cómo <code>cancelled</code> (letra <code>C</code>)
 
<pre>
 
[lluis.fita@hydra ~]$ qstat
 
Job id Name User Time Use S Queue
 
------------------------- ---------------- --------------- -------- - -----
 
4426.hydra wrf_control lluis.fita 1703:44: C larga
 
4427.hydra ...nsSFC-control lluis.fita 0 R larga
 
4432.hydra wrf_control50k pzaninelli 654:14:4 R larga
 
4433.hydra run_experiment pzaninelli 0 H larga
 
4438.hydra wrf_phy1 pzaninelli 650:46:2 R larga
 
4439.hydra run_experiment pzaninelli 0 H larga
 
4440.hydra WRF17O victoria.gallig 608:46:5 R larga
 
4441.hydra WRF17O victoria.gallig 605:22:5 R larga
 
4443.hydra WRF17O lluis.fita 0 R larga
 
</pre>
 
# Si el job no fuera cancelado, se hace encesaria la cancelación manual
 
<pre>
 
$ qdel 4426
 
</pre>
 
# Otros jobs que estabn en la cola PBS, ahora ya se están ejecutándose al liberarse los nodos! Se observa en el [[http://scad.cima.fcen.uba.ar/ganglia/ ganglia]] del sistema cómo los nodos 48 y 51, se descargan de carga de cálculo
 
   
[[File:Ganglia_afterZombie.png|frame|50px|Ejemplo de descarga de los nodos 48 y 51 después de matar un proceso 'zombie']]
+
=== kill_zombies ===
  +
Esta shell se encarga de eliminiar en todos los nodos del clúster los procesos corriendo del programa <code>[aplicacion]</code> del usuarie <code>[usuarie]</code> tiene procesos corriendo del programa <code>[aplicacion]</code>, su uso:
   
Un proceso zombie se entiende cómo ese proceso que fue lanzado dentro de la cola PBS de gestión de trabajos, que ocupa espacio en el sistema del clúster, pero que actualmente no está en curso.
+
<pre syle="shell">
  +
/share/WRF/kill_zombies.bash [usuarie] [aplicacion]
  +
</pre>
   
Esta situación suele ocurrir cuando el clúster se apaga de una manera no controloda, el espacio en el <code>'home'</code> del clúster se llena.
+
Ejemplo de uso para el usuarie <code>lluis.fita</code> y el <code>wrf.exe</code>
+
<pre style="shell">
Es importante que se paren estos procesos, puesto que suponen un sobre esfuerzo para los nodos en los cuáles estos procesos zombies están ejecutándose.
+
/share/WRF/kill_zombies.bash lluis.f wrf.exe
  +
</pre>
   
'''NOTA:''' este es el único caso en el cuál está permitido entrar en los nodos de cálculo del clúster.
+
Se elminarán estos 'zombies' de <code>wrf.exe</code> del usuarie <code>lluis.f</code> y se liberarán los nodos.
   
== Pasos a seguir ==
+
= Ejemplo Caso1 =
 
# Itendificar los procesos de la cola del sistema del usuario (ej. lluis.fita)
 
# Itendificar los procesos de la cola del sistema del usuario (ej. lluis.fita)
 
<pre>
 
<pre>
Línea 226: Línea 210:
 
[[File:Ganglia_afterZombie.png|frame|50px|Ejemplo de descarga de los nodos 48 y 51 después de matar un proceso 'zombie']]
 
[[File:Ganglia_afterZombie.png|frame|50px|Ejemplo de descarga de los nodos 48 y 51 después de matar un proceso 'zombie']]
   
== procesos sin PBS: Pasos a seguir II ==
+
= Ejemplo procesos sin PBS: Pasos a seguir II =
 
Puede darse el caso, que el proceso esté ocupando el nodo y no se muestre cómo trabajo de la cola. En este caso el nodo estará ejecutando un proceso, pero para el sistema de colas PBS, no estaría ocupando recursos con lo que el nodo estaría sobre trabjando.
 
Puede darse el caso, que el proceso esté ocupando el nodo y no se muestre cómo trabajo de la cola. En este caso el nodo estará ejecutando un proceso, pero para el sistema de colas PBS, no estaría ocupando recursos con lo que el nodo estaría sobre trabjando.
   
Línea 440: Línea 424:
 
1561 23448 23416 56 Apr09 ? 1-05:20:11 ./wrf.exe
 
1561 23448 23416 56 Apr09 ? 1-05:20:11 ./wrf.exe
 
1561 27524 27474 0 12:37 pts/0 00:00:00 grep wrf.exe
 
1561 27524 27474 0 12:37 pts/0 00:00:00 grep wrf.exe
  +
</PRE>
 
# Se repite el proceso en el resto de los nodos y se observa cómo los nodos reducen su carga de trabajo
 
# Se repite el proceso en el resto de los nodos y se observa cómo los nodos reducen su carga de trabajo
   

Última revisión de 16:11 15 jun 2023

Un proceso zombie se entiende cómo ese proceso que fue lanzado dentro de la cola PBS de gestión de trabajos, que ocupa espacio en el sistema del clúster, pero que actualmente no está en curso.

Esta situación suele ocurrir cuando el clúster se apaga de una manera no controloda, el espacio en el 'home' del clúster se llena.

Es importante que se paren estos procesos, puesto que suponen un sobre esfuerzo para los nodos en los cuáles estos procesos zombies están ejecutándose.

NOTA: este es el único caso en el cuál está permitido entrar en los nodos de cálculo del clúster.

Se generaron dos scripts de shell para controlar estas situaciones.

Contenido

[editar] scripts

Estas son las scripts de shell que se tienen para manejar los zombies del clúster

[editar] check_zombies

Esta shell se encarga de consultar en todos los nodos del clúster si el usuarie [usuarie] tiene procesos corriendo del programa [aplicacion], su uso:

/share/WRF/check_zombies.bash [usuarie] [aplicacion]

Ejemplo de uso para el usuarie lluis.fita y el wrf.exe

/share/WRF/check_zombies.bash lluis.f wrf.exe

nota: Noten que sólo se usa la parte inicial del nombre de usuarie.

[editar] kill_zombies

Esta shell se encarga de eliminiar en todos los nodos del clúster los procesos corriendo del programa [aplicacion] del usuarie [usuarie] tiene procesos corriendo del programa [aplicacion], su uso:

/share/WRF/kill_zombies.bash [usuarie] [aplicacion]

Ejemplo de uso para el usuarie lluis.fita y el wrf.exe

/share/WRF/kill_zombies.bash lluis.f wrf.exe

Se elminarán estos 'zombies' de wrf.exe del usuarie lluis.f y se liberarán los nodos.

[editar] Ejemplo Caso1

  1. Itendificar los procesos de la cola del sistema del usuario (ej. lluis.fita)
$ qstat
Job id                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
4426.hydra                 wrf_control      lluis.fita      1699:08: R larga          
4427.hydra                 ...nsSFC-control lluis.fita             0 H larga          
4432.hydra                 wrf_control50k   pzaninelli      649:09:3 R larga          
4433.hydra                 run_experiment   pzaninelli             0 H larga          
4438.hydra                 wrf_phy1         pzaninelli      645:40:5 R larga          
4439.hydra                 run_experiment   pzaninelli             0 H larga          
4440.hydra                 WRF17O           victoria.gallig 603:42:2 R larga          
4441.hydra                 WRF17O           victoria.gallig 600:18:4 R larga          
4443.hydra                 WRF17O           lluis.fita             0 Q larga  
  1. El proceso 4426 es una simulación de WRF.
$ qstat -f 4426
Job Id: 4426.hydra
    Job_Name = wrf_control
    Job_Owner = lluis.fita@node48
    resources_used.cput = 1700:00:37
    resources_used.mem = 6264020kb
    resources_used.vmem = 15322976kb
    resources_used.walltime = 72:40:26
    job_state = R
    queue = larga
    server = hydra
    Checkpoint = u
    ctime = Sat Apr  7 10:47:06 2018
    depend = beforeany:4427.hydra@hydra
    Error_Path = node48:/home/lluis.fita/estudios/WRFsensSFC/simulations/contr
	ol/wrf_control.e4426
    exec_host = node48/23+node48/22+node48/21+node48/20+node48/19+node48/18+no
	de48/17+node48/16+node48/15+node48/14+node48/13+node48/12+node48/11+no
	de48/10+node48/9+node48/8+node48/7+node48/6+node48/5+node48/4+node48/3
	+node48/2+node48/1+node48/0+node51/23+node51/22+node51/21+node51/20+no
	de51/19+node51/18+node51/17+node51/16+node51/15+node51/14+node51/13+no
	de51/12+node51/11+node51/10+node51/9+node51/8+node51/7+node51/6+node51
	/5+node51/4+node51/3+node51/2+node51/1+node51/0
    exec_port = 15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15
	003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+
	15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+1500
	3+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15003+15
	003+15003+15003
    Hold_Types = n
    Join_Path = oe
    Keep_Files = n
    Mail_Points = ae
    Mail_Users = lluis.fita@cima.fcen.uba.ar
    mtime = Sat Apr  7 10:48:06 2018
    Output_Path = node48:/home/lluis.fita/estudios/WRFsensSFC/simulations/cont
	rol/wrf_control.o4426
    Priority = 0
    qtime = Sat Apr  7 10:47:06 2018
    Rerunable = True
    Resource_List.mem = 30gb
    Resource_List.nodect = 2
    Resource_List.nodes = 2:ppn=24
    Resource_List.vmem = 30gb
    Resource_List.walltime = 168:00:00
    session_id = 19561
    Variable_List = PBS_O_QUEUE=larga,PBS_O_HOST=node48,
	PBS_O_HOME=/home/lluis.fita,PBS_O_LANG=en_US.UTF-8,
	PBS_O_LOGNAME=lluis.fita,
	PBS_O_PATH=/usr/local/bin:/opt/intel/composerxe-2011.3.174/bin/intel6
	4:/usr/lib64/qt-3.3/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:
	/usr/local/maui/bin:/usr/local/maui/sbin:/usr/local/bin:/opt/intel/com
	poserxe/bin:/usr/local/maui/bin:/usr/local/maui/sbin:/home/lluis.fita/
	bin:/opt/intel/composerxe-2011.3.174/mpirt/bin/intel64:/usr/local/maui
	/bin:/usr/local/maui/sbin,PBS_O_MAIL=/var/spool/mail/lluis.fita,
	PBS_O_SHELL=/bin/bash,PBS_SERVER=hydra,
	PBS_O_WORKDIR=/home/lluis.fita/estudios/WRFsensSFC/simulations/contro
	l
    etime = Sat Apr  7 10:47:14 2018
    submit_args = -W depend=afterany:4425 /home/lluis.fita/estudios/WRFsensSFC
	/simulations/control/run_WRF.pbs
    start_time = Sat Apr  7 10:47:14 2018
    Walltime.Remaining = 343110
    start_count = 1
    fault_tolerant = False
    submit_host = node48
    init_work_dir = /home/lluis.fita/estudios/WRFsensSFC/simulations/control
  1. La variable PBS_O_WORKDIR contiene el path de ejecución del job. Se tiene que cercionar que el proceso (simulación WRF en este caso), está ejecutándose (en este caso si los rsl.out/error.[nnnn] se están actualizando). En este caso la ejecución del WRF se halla en $PBS_O_WORKDIR/run
$ ls -l /home/lluis.fita/estudios/WRFsensSFC/simulations/control/run/rsl.error.0000
rw-r--r-- 1 lluis.fita cima 1204224 Apr  8 19:07 /home/lluis.fita/estudios/WRFsensSFC/simulations/control/run/rsl.error.0000
$ date
Tue Apr 10 11:32:35 ART 2018
  1. Está claro que el WRF no está ejecutándose adecuadamente. Así que se tendrá que entrar en el nodo en dónde se está ejecutando y parar el job, ya que el sistema de colas PBS no controla este proceso. El WRF se ejecuta en el nodo (valores de exec_host) node48 y node51.
[lluis.fita@hydra ~]$ ssh node48
[lluis.fita@node48 ~]$ top
top - 11:35:40 up 5 days, 47 min,  0 users,  load average: 23.00, 22.99, 23.03
Tasks: 246 total,  24 running, 198 sleeping,   0 stopped,  24 zombie
Cpu(s): 87.4%us,  8.4%sy,  0.0%ni,  4.1%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32942908k total, 18055956k used, 14886952k free,     3972k buffers
Swap:        0k total,        0k used,        0k free, 12102316k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                       
21531 lluis.fi  20   0  508m 256m  28m R 100.0  0.8   4360:00 wrf.exe                                                                                                      
21532 lluis.fi  20   0  503m 248m  23m R 100.0  0.8   4358:44 wrf.exe                                                                                                      
21537 lluis.fi  20   0  503m 247m  23m R 100.0  0.8   4359:53 wrf.exe                                                                                                      
21540 lluis.fi  20   0  507m 252m  23m R 100.0  0.8   4359:52 wrf.exe                                                                                                      
21545 lluis.fi  20   0  503m 249m  24m R 100.0  0.8   4359:35 wrf.exe                                                                                                      
21546 lluis.fi  20   0  503m 247m  22m R 100.0  0.8   4359:51 wrf.exe                                                                                                      
21547 lluis.fi  20   0  507m 253m  23m R 100.0  0.8   4360:04 wrf.exe                                                                                                      
21548 lluis.fi  20   0  507m 254m  24m R 100.0  0.8   4359:52 wrf.exe                                                                                                      
21549 lluis.fi  20   0  495m 241m  23m R 100.0  0.7   4359:44 wrf.exe                                                                                                      
21550 lluis.fi  20   0  507m 251m  23m R 100.0  0.8   4359:47 wrf.exe                                                                                                      
21552 lluis.fi  20   0  501m 249m  27m R 100.0  0.8   4359:49 wrf.exe                                                                                                      
21529 lluis.fi  20   0  507m 252m  24m R 99.7  0.8   4359:42 wrf.exe                                                                                                       
21530 lluis.fi  20   0  500m 246m  25m R 99.7  0.8   4360:05 wrf.exe                                                                                                       
21533 lluis.fi  20   0  507m 253m  23m R 99.7  0.8   4359:55 wrf.exe                                                                                                       
21534 lluis.fi  20   0  507m 254m  24m R 99.7  0.8   4360:04 wrf.exe                                                                                                       
21535 lluis.fi  20   0  507m 252m  24m R 99.7  0.8   4359:40 wrf.exe                                                                                                       
21536 lluis.fi  20   0  503m 250m  24m R 99.7  0.8   4359:37 wrf.exe                                                                                                       
21539 lluis.fi  20   0  507m 252m  24m R 99.7  0.8   4359:01 wrf.exe                                                                                                       
21541 lluis.fi  20   0  503m 248m  23m R 99.7  0.8   4360:07 wrf.exe                                                                                                       
21542 lluis.fi  20   0  500m 250m  27m R 99.7  0.8   4359:49 wrf.exe                                                                                                       
21543 lluis.fi  20   0  500m 244m  23m R 99.7  0.8   4359:43 wrf.exe                                                                                                       
21544 lluis.fi  20   0  507m 251m  23m R 99.7  0.8   4359:34 wrf.exe                                                                                                       
21551 lluis.fi  20   0  507m 257m  27m R 99.7  0.8   4360:02 wrf.exe        
[lluis.fita@node48 ~]$ killall wrf.exe
[lluis.fita@node48 ~]$ top
top - 11:37:32 up 5 days, 49 min,  0 users,  load average: 19.46, 22.23, 22.79
Tasks: 199 total,   1 running, 197 sleeping,   0 stopped,   1 zombie
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni,100.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:  32942908k total, 12665572k used, 20277336k free,     3972k buffers
Swap:        0k total,        0k used,        0k free, 12048020k cached
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                       
   10 root      20   0     0    0    0 S  0.3  0.0  39:27.92 kworker/0:1                                                                                                   
  262 root      20   0     0    0    0 S  0.3  0.0   0:18.40 kpktgend_13                                                                                                   
  272 root      20   0     0    0    0 S  0.3  0.0   0:18.47 kpktgend_23                                                                                                   
27134 lluis.fi  20   0 15280 1256  888 R  0.3  0.0   0:00.01 top                                                                                                           
    1 root      20   0 25660 1736 1428 S  0.0  0.0   0:05.71 init                                                                                                          
    2 root      20   0     0    0    0 S  0.0  0.0   0:00.00 kthreadd                                                                                                      
    3 root      20   0     0    0    0 S  0.0  0.0   0:01.17 ksoftirqd/0  
[lluis.fita@node48 ~]$ exit
  1. Se repite el procedimiento en tantos nodos cómo ocupe el job (en este caso también node51)
[lluis.fita@hydra ~]$ ssh node51
[lluis.fita@node51 ~]$ top
[lluis.fita@node51 ~]$ killall wrf.exe
[lluis.fita@node51 ~]$ top
[lluis.fita@node51 ~]$ exit
  1. El job re-aparece cómo cancelled (letra C)
[lluis.fita@hydra ~]$ qstat
Job id                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
4426.hydra                 wrf_control      lluis.fita      1703:44: C larga          
4427.hydra                 ...nsSFC-control lluis.fita             0 R larga          
4432.hydra                 wrf_control50k   pzaninelli      654:14:4 R larga          
4433.hydra                 run_experiment   pzaninelli             0 H larga          
4438.hydra                 wrf_phy1         pzaninelli      650:46:2 R larga          
4439.hydra                 run_experiment   pzaninelli             0 H larga          
4440.hydra                 WRF17O           victoria.gallig 608:46:5 R larga          
4441.hydra                 WRF17O           victoria.gallig 605:22:5 R larga          
4443.hydra                 WRF17O           lluis.fita             0 R larga     
  1. Si el job no fuera cancelado, se hace encesaria la cancelación manual
$ qdel 4426
  1. Otros jobs que estabn en la cola PBS, ahora ya se están ejecutándose al liberarse los nodos! Se observa en el [ganglia] del sistema cómo los nodos 48 y 51, se descargan de carga de cálculo
(thumbnail)
Ejemplo de descarga de los nodos 48 y 51 después de matar un proceso 'zombie'

[editar] Ejemplo procesos sin PBS: Pasos a seguir II

Puede darse el caso, que el proceso esté ocupando el nodo y no se muestre cómo trabajo de la cola. En este caso el nodo estará ejecutando un proceso, pero para el sistema de colas PBS, no estaría ocupando recursos con lo que el nodo estaría sobre trabjando.

En este caso, al consultar el Ganglia del clúster, se ve que el nodo está en rojo y que está todo gris (en el ejemplo de Ganglia anterior los nodos 47,50 y 53). Para estar seguros será necesario entrar en todos los nodos del clúster uno a uno y asegurarse que no tenga ningún proceso sin job dependiente.

Ejemplo con el usuario pzaninelli

  1. Mirar procesos corriendo
[pzaninelli@hydra ~]$ qstat
Job id                    Name             User            Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
4432.hydra                 wrf_control50k   pzaninelli      1248:26: R larga          
4433.hydra                 run_experiment   pzaninelli             0 H larga          
4438.hydra                 wrf_phy1         pzaninelli      1244:57: R larga          
4439.hydra                 run_experiment   pzaninelli             0 H larga          
4440.hydra                 WRF17O           victoria.gallig 1201:37: R larga          
4441.hydra                 WRF17O           victoria.gallig 1197:29: R larga          
4445.hydra                 wrf_control      lluis.fita      593:41:0 R larga          
4446.hydra                 ...nsSFC-control lluis.fita             0 H larga          
  1. Determinar nodos y ruta de ejecución de todos los jobs del usuari.x.
[pzaninelli@hydra ~]$ qstat -f 4432
Job Id: 4432.hydra
    Job_Name = wrf_control50k
(...)
    exec_host = node46/23+node46/22+node46/21+node46/20+node46/19+node46/18+no
	de46/17+node46/16+node46/15+node46/14+node46/13+node46/12+node46/11+no
	de46/10+node46/9+node46/8+node46/7+node46/6+node46/5+node46/4+node46/3
	+node46/2+node46/1+node46/0+node47/23+node47/22+node47/21+node47/20+no
	de47/19+node47/18+node47/17+node47/16+node47/15+node47/14+node47/13+no
	de47/12+node47/11+node47/10+node47/9+node47/8+node47/7+node47/6+node47
	/5+node47/4+node47/3+node47/2+node47/1+node47/0
(...)
	PBS_O_WORKDIR=/home/pzaninelli/workdir/SENSHeatWave03/sims/control50k
(...)
[pzaninelli@hydra ~]$ qstat -f 4438
Job Id: 4438.hydra
(...)
    exec_host = node49/23+node49/22+node49/21+node49/20+node49/19+node49/18+no
	de49/17+node49/16+node49/15+node49/14+node49/13+node49/12+node49/11+no
	de49/10+node49/9+node49/8+node49/7+node49/6+node49/5+node49/4+node49/3
	+node49/2+node49/1+node49/0+node50/23+node50/22+node50/21+node50/20+no
	de50/19+node50/18+node50/17+node50/16+node50/15+node50/14+node50/13+no
	de50/12+node50/11+node50/10+node50/9+node50/8+node50/7+node50/6+node50
	/5+node50/4+node50/3+node50/2+node50/1+node50/0
(...)
	PBS_O_WORKDIR=/home/pzaninelli/workdir/SENSHeatWave03/sims/phy1
  1. Se obtiene que:
  • 4432: utiliza nodos 46 y 47 y se ejecuta en /home/pzaninelli/workdir/SENSHeatWave03/sims/control50k
  • 4438: utiliza nodos 49 y 50 y se ejecuta en /home/pzaninelli/workdir/SENSHeatWave03/sims/phy1
  1. Los pasos a seguir para cada nodo son los siguientes. Se tiene que entrar en todos los nodos, puesto que no hay otra manera de conocer los procesos que se ejectuan en ellos
    1. Entrar en el nodo
$ ssh [nombreNodo]
    1. Chequear los procesos
      1. Si no se sabe el nombre de la aplicación que podría estar zombie
ps -ef | grep $USER
      1. Si se sabe el nombre de la aplicación (en el caso de ejemplo el modelo WRF)
ps -ef | grep [aplicación]
      1. Parar esos procesos que no correspondan (huérfanos de job PBS)
kill -9 [procesoID]
      1. Salir del nodo y empezar con el siguiente
exit
  1. Después de mirar en los nodos del 40 al 46, entrando en el nodo 47
[pzaninelli@hhydra ~]$ ssh node47
[pzaninelli@node47 ~]$ ps -ef | grep wrf.exe
1561     17995     1 74 Apr07 ?        3-00:53:43 ./wrf.exe
1561     17996     1 74 Apr07 ?        3-00:53:36 ./wrf.exe
1561     17997     1 74 Apr07 ?        3-00:49:04 ./wrf.exe
1561     17998     1 74 Apr07 ?        3-00:53:03 ./wrf.exe
1561     17999     1 74 Apr07 ?        3-00:57:12 ./wrf.exe
1561     18000     1 74 Apr07 ?        3-00:47:14 ./wrf.exe
1561     18001     1 74 Apr07 ?        3-00:50:55 ./wrf.exe
1561     18002     1 74 Apr07 ?        3-00:51:08 ./wrf.exe
1561     18003     1 74 Apr07 ?        3-00:53:33 ./wrf.exe
1561     18005     1 74 Apr07 ?        3-00:56:54 ./wrf.exe
1561     18006     1 74 Apr07 ?        3-00:49:51 ./wrf.exe
1561     18007     1 74 Apr07 ?        3-00:51:28 ./wrf.exe
1561     18008     1 74 Apr07 ?        3-00:53:13 ./wrf.exe
1561     18009     1 74 Apr07 ?        3-00:49:40 ./wrf.exe
1561     18010     1 74 Apr07 ?        3-00:52:07 ./wrf.exe
1561     18011     1 74 Apr07 ?        3-00:52:12 ./wrf.exe
1561     18012     1 74 Apr07 ?        3-00:54:05 ./wrf.exe
1561     18013     1 74 Apr07 ?        3-00:52:44 ./wrf.exe
1561     18014     1 74 Apr07 ?        3-00:49:45 ./wrf.exe
1561     18015     1 74 Apr07 ?        3-00:48:31 ./wrf.exe
1561     23401 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23402 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23403 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23404 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23405 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23406 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23407 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23408 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23409 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23410 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23411 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23412 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23413 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23414 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23415 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23416 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23417 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23418 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23419 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23420 23401 56 Apr09 ?        1-05:16:12 ./wrf.exe
1561     23421 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23422 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23423 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23424 23402 55 Apr09 ?        1-05:07:45 ./wrf.exe
1561     23425 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23426 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23427 23404 55 Apr09 ?        1-04:50:56 ./wrf.exe
1561     23428 23405 55 Apr09 ?        1-05:07:46 ./wrf.exe
1561     23429 23406 56 Apr09 ?        1-05:33:20 ./wrf.exe
1561     23430 23417 56 Apr09 ?        1-05:35:49 ./wrf.exe
1561     23431 23407 56 Apr09 ?        1-05:26:10 ./wrf.exe
1561     23432 23421 56 Apr09 ?        1-05:15:46 ./wrf.exe
1561     23433 23415 55 Apr09 ?        1-05:05:37 ./wrf.exe
1561     23434 23403 55 Apr09 ?        1-04:50:07 ./wrf.exe
1561     23435 23426 55 Apr09 ?        1-04:57:29 ./wrf.exe
1561     23436 23419 55 Apr09 ?        1-05:08:26 ./wrf.exe
1561     23437 23414 56 Apr09 ?        1-05:17:23 ./wrf.exe
1561     23438 23409 55 Apr09 ?        1-04:57:51 ./wrf.exe
1561     23439 23411 55 Apr09 ?        1-04:59:43 ./wrf.exe
1561     23440 23408 55 Apr09 ?        1-05:00:49 ./wrf.exe
1561     23441 23410 55 Apr09 ?        1-04:55:14 ./wrf.exe
1561     23442 23423 56 Apr09 ?        1-05:21:52 ./wrf.exe
1561     23443 23422 56 Apr09 ?        1-05:28:01 ./wrf.exe
1561     23444 23413 56 Apr09 ?        1-05:36:03 ./wrf.exe
1561     23445 23425 55 Apr09 ?        1-05:12:05 ./wrf.exe
1561     23446 23412 56 Apr09 ?        1-05:35:22 ./wrf.exe
1561     23447 23418 57 Apr09 ?        1-05:46:58 ./wrf.exe
1561     23448 23416 56 Apr09 ?        1-05:16:21 ./wrf.exe
1561     27514 27474  0 12:30 pts/0    00:00:00 grep wrf.exe
  1. Si hay algún proceso 'zombie' tendrá un tiempo de ejecución muy largo. Se observa que hay dos grupos distintos de procesos: 3-00:53:43 ./wrf.exe (3 días y 53 minutos) y 1-04:50:56 ./wrf.exe (1 días 4 horas y 50 minutos)
  2. Analizar donde está ejecutándose cada proceso
[pzaninelli@node47 ~]$ pwdx 17995
17995: /home/pzaninelli/workdir/SENSHeatWave03/sims/phy1/run

[pzaninelli@node47 ~]$ pwdx 23427
23427: /home/pzaninelli/workdir/SENSHeatWave03/sims/control50k/run
  1. Del análisi anterior el nodo 47 sólo hospeda el job PBS 4432 que se ejecuta en /home/pzaninelli/workdir/SENSHeatWave03/sims/control50k. Así que los procesos del grupo (Ids de 17995 a 18015) que se ejecutan en /home/pzaninelli/workdir/SENSHeatWave03/sims/phy1/run son zombies. Así que ya se pueden eliminar
[pzaninelli@node47 ~]$ kill -9 $(seq 17995 18015)
  1. Ahora al buscar los procesos aprecen sólo los procesos dependiendo del job PBS
[pzaninelli@node47 ~]$ ps -ef | grep wrf.exe
1561     23401 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23402 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23403 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23404 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23405 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23406 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23407 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23408 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23409 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23410 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23411 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23412 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23413 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23414 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23415 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23416 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23417 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23418 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23419 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23420 23401 56 Apr09 ?        1-05:20:01 ./wrf.exe
1561     23421 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23422 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23423 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23424 23402 55 Apr09 ?        1-05:11:40 ./wrf.exe
1561     23425 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23426 23390  0 Apr09 ?        00:00:00 /bin/bash ./launch_pbs.bash ./wrf.exe
1561     23427 23404 55 Apr09 ?        1-04:54:40 ./wrf.exe
1561     23428 23405 55 Apr09 ?        1-05:11:37 ./wrf.exe
1561     23429 23406 56 Apr09 ?        1-05:37:15 ./wrf.exe
1561     23430 23417 56 Apr09 ?        1-05:40:07 ./wrf.exe
1561     23431 23407 56 Apr09 ?        1-05:30:09 ./wrf.exe
1561     23432 23421 56 Apr09 ?        1-05:19:26 ./wrf.exe
1561     23433 23415 55 Apr09 ?        1-05:09:19 ./wrf.exe
1561     23434 23403 55 Apr09 ?        1-04:54:05 ./wrf.exe
1561     23435 23426 55 Apr09 ?        1-05:01:22 ./wrf.exe
1561     23436 23419 55 Apr09 ?        1-05:12:17 ./wrf.exe
1561     23437 23414 56 Apr09 ?        1-05:21:10 ./wrf.exe
1561     23438 23409 55 Apr09 ?        1-05:01:46 ./wrf.exe
1561     23439 23411 55 Apr09 ?        1-05:03:41 ./wrf.exe
1561     23440 23408 55 Apr09 ?        1-05:04:38 ./wrf.exe
1561     23441 23410 55 Apr09 ?        1-04:58:56 ./wrf.exe
1561     23442 23423 56 Apr09 ?        1-05:25:47 ./wrf.exe
1561     23443 23422 56 Apr09 ?        1-05:31:58 ./wrf.exe
1561     23444 23413 56 Apr09 ?        1-05:40:00 ./wrf.exe
1561     23445 23425 55 Apr09 ?        1-05:16:06 ./wrf.exe
1561     23446 23412 56 Apr09 ?        1-05:39:17 ./wrf.exe
1561     23447 23418 57 Apr09 ?        1-05:50:49 ./wrf.exe
1561     23448 23416 56 Apr09 ?        1-05:20:11 ./wrf.exe
1561     27524 27474  0 12:37 pts/0    00:00:00 grep wrf.exe
  1. Se repite el proceso en el resto de los nodos y se observa cómo los nodos reducen su carga de trabajo
(thumbnail)
Ejemplo de descarga de los nodos 47, 50 y 53 después de matar un proceso 'zombie'
Herramientas personales