Medusa

De IngridPtWiki

Tabela de conteúdo


Introdução

  • O cluster medusa encontra-se sob a operação técnica da equipa INGRID. Esta página tem como objectivo orientar os utilizadores LNEC a submeter tarefas paralelas (corridas) ao cluster, e a manipular os dados gerados durante as execuções.


Recursos LNEC

  • Cluster MEDUSA
  1. Servidores FUJITSU SIEMENS PRIMERGYRX220 em rede Ethernet (1 Gbit/s)
  2. 67 servidores, 268 cores, 1 GB de RAM por core (4 GB de RAM por servidor)
  3. 1 disco de 70 GB
  4. Servidores instalados com Scientific Linux 5, versão x86_64


  • Processadores
processor	: 3
vendor_id	: AuthenticAMD
cpu family	: 15
model		: 33
model name	: Dual Core AMD Opteron(tm) Processor 280
stepping	: 2
cpu MHz		: 2394.127
cache size	: 1024 KB
physical id	: 1
siblings	: 2
core id		: 1
cpu cores	: 2
apicid		: 3
fpu		: yes
fpu_exception	: yes
cpuid level	: 1
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow pni lahf_lm cmp_legacy
bogomips	: 4787.31
TLB size	: 1024 4K pages
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management: ts fid vid ttp


Configurações gerais

  • Armazenamento
  1. shared file system NFS para as HOMES dos utilizadores disponível sobre /home/lnec. A utilizar para compilações de programas.
  2. shared file system do tipo LUSTRE disponível sobre /data/lnec (12 OSTs com 1 TB cada configurados em regime de stripe all, 10 Gigabit Ethernet). A utilizar para armazenamento de dados.
  • Gestor de tarefas
  1. Grid Engine como Local resource Management System


Como utilizar os recursos Medusa

Acesso

  • O acesso local ao serviço Medusa é realizado por ssh para uma máquina dedicada (lnec.ncg.ingrid.pt).
[username@machine ~]$ ssh -l username lnec.ncg.ingrid.pt
username@lnec.ncg.ingrid.pt's password: 
/usr/bin/xauth:  creating new authority file /home/hpc/username/.Xauthority
-bash-3.2$
  • O acesso a partir do exterior é restrito pelo que é necessário providenciar o IP da máquina da qual se pretende aceder. De momento apenas é permitido o acesso a partir de
  1. medusa-e.lnec.pt
  2. dha-aazevedo.lnec.pt
  3. dha-mfrodrigues.lnec.pt
  4. Rede 193.136.106.192/28 (IPs = 193.136.106.192 a 193.136.106.207)


Gestão de software

  • As instalações de software disponíveis podem ser consultadas através do software Module. Este software inicia o ambiente adequado (PATH, LD_LIBRARY_PATH, etc) para utilização pelo utilizador, e é uma ferramenta conveniente para mudanças de software específicas. Os principais comandos são:
  1. consultar software: module avail
  2. carregar software: module load
  3. listar software em uso: module list
  4. Ajuda sobre comandos module: module help
# Listar modulos disponíveis
-bash-3.2$ module avail

----------------------- /exper-sw/sw/Modules/modulefiles -----------------------
gcc41/root-5.26.00        modules                   open64/openmpi-noib-1.4.1
gcc44/fftw-noib-3.2.2     ncgenv
gcc44/openmpi-noib-1.4.1  open64/fftw-noib-3.2.2

--------------------- /exper-sw/sw/Modules/modulefiles.hpc ---------------------
gcc41/fftw-3.2.2          gcc44/openmpi-1.4.2       open64/open64-4.2.3-0
gcc41/gcc-4.1.2           gcc44/parmetis-3.1        open64/openmpi-1.4.1
gcc41/mvapich-1.1.0       intel/eval/gotm-4.0.0     open64/openmpi-1.4.2
gcc41/mvapich-1.4.1       intel/eval/intel-11.1.073 open64/openmpi-1.4.2-noib
gcc41/netcdf-3.6.2        intel/eval/netcdf-3.6.2   open64/openmpi-1.4.3
gcc41/netcdf-4.1.1        intel/eval/openmpi-1.4.2  open64/parmetis-3.1
gcc41/openmpi-1.2.8       intel/eval/parmetis-3.1   open64/selfe-3.1c
gcc41/openmpi-1.4.1       intel/eval/selfe-3.1c     open64/selfe-3.1c-noib
gcc41/openmpi-1.4.2       intel/eval/swan/mpi-40.81 open64/swan/mpi-40.72
gcc41/parmetis-3.1        intel/eval/swan/omp-40.81 open64/swan/mpi-40.81
gcc44/blacs-1.1           intel/eval/swan/ser-40.81 open64/swan/omp-40.72
gcc44/fftw-3.2.2          open64/fftw-3.2.2         open64/swan/omp-40.81
gcc44/gcc-4.4.0           open64/netcdf-3.6.2       open64/swan/ser-40.72
gcc44/mvapich-1.4.1       open64/netcdf-4.1.1       open64/swan/ser-40.81
gcc44/openmpi-1.4.1       open64/open64-4.2.3       toolworks/totalview-8.8.0

# Carregar modulos / software
-bash-3.2$ module load gcc44/openmpi-1.4.1
-bash-3.2$

# Listar os modulos / software em uso
-bash-3.2$ module list
Currently Loaded Modulefiles:
 1) gcc44/gcc-4.4.0       2) gcc44/openmpi-1.4.1


Gestão de tarefas


Topologia de directorias

Nas máquinas medusa existem os seguintes filesystems acessíveis aos utilizadores:

  1. /home/lnec (2.7 TB de capacidade total): As HOMES dos utilizadores copiado a partir da informação disponível no storage antigo. É a partir desta directoria que os utilizadores devem criar e compilar os seus programas.
  2. /data/lnec (5.0 TB de capacidade total): Directoria para armazenar grandes quantidades de dados. Esta não é uma directoria para execuções ou compilações mas apenas para armazenamento, preferencialmente, de grandes ficheiros.


Topologia para as filas de execução

  • Os utilizadores de HPC têm ao seu dispor as seguintes filas de execução:
  1. hpcgrid: Para todos os utilizadores
  2. medusa Para os utilizadores LNEC
  • Os utilizadores gerais executam tarefas na fila hpcgrid com um limite máximo de tempo de CPU de 48h, e de wallclock time de 72h. O número máximo de instâncias paralelas permitidas por tarefa é de 64.
  • Os utilizadores LNEC podem adicionalmente executar tarefas na file medusa com um limite máximo de tempo de CPU de 12 dias, e de wallclock time de 18 dias. O número máximo de instâncias paralelas permitidas por tarefa é limitado pelo número máximo de máquinas disponíveis na fila (presentemente 28). Caso os utilizadores LNEC não explicitem em que fila pretendem correr a tarefa, essa informação será delegada ao sistema de gestão de tarefas. Para escolher uma fila específica, por favor consulte a secção "Submissão ao sistema".


Infiniband versus Gigabit Ethernet

  • A fila de execução medusa contribui com recursos interconnectados através de uma rede Gigabit Ethernet a 1Gbits/s. Por agregação de portas nos switches pode-se conseguir uma largura de banda agregada de 4 Gbits/s.
  • A fila de execução hpcgrid contribui com recursos de 2 tipos:
  1. um conjunto interconnectado através de uma rede Gigabit Ethernet sem agregações (Max: 1 Gbit/s)
  2. um outro conjunto interconnectado através de infiniband (Max: 8 Gbit/s).
  • De forma a não degradar a execução e a latência do sistema, não são permitidas execuções híbridas. Deste modo, as seguintes políticas forma implementadas para submissões na fila de execução hpcgrid:
  1. Por pré-definição, todas as tarefas são redireccionadas para os recursos a Gigabit Ethernet;
  2. Para aceder aos recursos Infiniband, o utilizador terá que declarar essa vontade no acto de submissão do job (por favor consulte a secção "Submissão ao sistema").


Recursos disponíveis

A ocupação dos recursos das duas filas pode ser consultada a cada instante através de:

bash-3.2$ qstat -g c -q hpcgrid
CLUSTER QUEUE                   CQLOAD   USED    RES  AVAIL  TOTAL aoACDS  cdsuE  
--------------------------------------------------------------------------------
hpcgrid                           0.45     80      0     16    216      0    200 
-bash-3.2$ qstat -g c -q medusa
CLUSTER QUEUE                   CQLOAD   USED    RES  AVAIL  TOTAL aoACDS  cdsuE  
--------------------------------------------------------------------------------
medusa                            0.00      0      0    252    252      0      0 


Submissão ao sistema

  • A submissão ao sistema é realizada com o comando qsub:
qsub [ options ] [ command | -- [ command_args ]]. 
  • As opções podem ser indicadas directamente na linha de comando, ou no interior de um script bash (ou outro). Para mais informações sobre as opções, por favor consulte o manual (man qsub).
  • No exemplo seguinte mostramos um script que compila e executa uma aplicação. As opções ao comando qsub são incluídas através de directivas #$. De notar que o utilizador explicitamente pretende:
  1. compilar a sua aplicação com gcc44, e utilar a versão de MPI openmpi-1.4.1,
  2. executar a sua tarefas com 2 instâncias, sobre o ambiente paralelo mpi.
-bash-3.2$ cat cpi_submit.sh 
#!/bin/bash

# Opção para herdar o ambiente do utilizador na execução
#$ -V    

# Opção para começar os jobs na directoria de onde o utizador submete.
#$ -cwd  

# Invocar o ambiente paralelo denominado mpi, e executar a tarefa com 2 instâncias
#$ -pe mpi 2
 
# Carregar os modules de interesse
source /etc/profile.d/modules.sh
module load gcc44/openmpi-1.4.1

# Compilar a aplicação
echo "=== Compiling ===" 
mpicc -o cpi cpi.c

# Executar a aplicação
echo "=== Running ==="
mpirun -np $NSLOTS cpi
  • Finalmente, a script pode ser submetida para execução ao sistema:
-bash-3.2$ qsub cpi_submit.sh 
Your job 5076311 ("cpi_submit.sh") has been submitted
  • Caso o utilizador pretenda executar nos recursos da queue hpcgrid (sem infiniband), então teve adicionar a opção
# Accesso aos recursos do projecto HpcGrid
#$ -P HpcGrid

  • Caso o utilizador pretenda executar nos recursos da queue hpcgrid (com infiniband), então deve adicionar a seguinte opção (sem detrimento da anterior)
# Requerer acesso a recursos Infiniband
#$ -l ib=y


Estado da tarefa

  • O estado da tarefa é obtido através do comando qstat. Para informação sobre as opções deste comando, por favor consulte o manual (man qstat).
qstat  [  -ext  ]  [  -cb  ] [ -f ] [ -F [resource_name,...]  ] [ -g {c|d|t}[+] ] [ -help ] [ -j
       [job_list] ] [ -l resource=val,...  ] [ -ne ] [ -pe pe_name,...  ] [ -pri ] [ -q wc_queue_list ]
       [  -qs  {a|c|d|o|s|u|A|C|D|E|S}  ]  [ -r ] [ -s {r|p|s|z|hu|ho|hs|hd|hj|ha|h|a}[+] ] [ -t ] [ -U
       user,...  ] [ -u user,...  ] [ -urg ] [ -xml ]
  • No exemplo seguinte, pretendo obter informação sobre todas as tarefas submetidas ao sistema pelo utilizador goncalo. A resposta do sistema é que a tarefa se encontra em espera para ser executada (estado qw):
-bash-3.2$ qstat -u goncalo
job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
5076311 0.00000 cpi_submit goncalo      qw    11/26/2010 15:41:51                                    2        
  • Passados alguns segundos, a informação do mesmo comando mostra que a tarefa entrou em execução (estado r) na queue medusa, e na máquina gorgon101.ncg.ingrid.pt:
-bash-3.2$ qstat -u goncalo
job-ID  prior   name       user         state submit/start at     queue                          slots ja-task-ID 
-----------------------------------------------------------------------------------------------------------------
5076311 0.31283 cpi_submit goncalo      r     11/26/2010 15:41:58 medusa@gorgon101.ncg.ingrid.pt     2


Resultados (Standard Error / Standard Output)

Depois de finalizada a execução, são gerados 4 ficheiros. Os mais importantes a ter em conta são os ficheiros de Standard Error and Standard Output

-bash-3.2$ ll
total 32
-rwxr-xr-x 1 goncalo hpc  10103 Nov 26 15:42 cpi
-rw-r--r-- 1 goncalo csys  1513 Oct  1 16:02 cpi.c
-rw-r--r-- 1 goncalo csys   352 Nov 26 15:35 cpi_submit.sh
-rw-r--r-- 1 goncalo hpc    240 Nov 26 15:41 cpi_submit.sh.e5076311
-rw-r--r-- 1 goncalo hpc    287 Nov 26 15:42 cpi_submit.sh.o5076311
-rw-r--r-- 1 goncalo hpc    124 Nov 26 15:41 cpi_submit.sh.pe5076311
-rw-r--r-- 1 goncalo hpc      0 Nov 26 15:41 cpi_submit.sh.po5076311
  • Standard Error (nota: considere as mensagens seguintes normais):
-bash-3.2$ cat cpi_submit.sh.e5076311
/bin/bash: module: line 1: syntax error: unexpected end of file
/bin/bash: error importing function definition for `module'
-bash: module: line 1: syntax error: unexpected end of file
-bash: error importing function definition for `module'
  • Standard Output:
-bash-3.2$ cat cpi_submit.sh.o5076311
=== Compiling ===
=== Running ===
Process 0 of 2 is on gorgon101.ncg.ingrid.pt
Process 1 of 2 is on gorgon101.ncg.ingrid.pt
pi is approximately 3.1416009869231241, Error is 0.0000083333333309
wall clock time = 0.002751


Opções Avançadas

  • Nesta secção descrevem-se alguma opções avançadas para a gestão de tarefas.


Evitar fenómenos de job starvation

  • A reserva de recursos para jobs paralelos grandes (acima de 24 slots) realiza-se com a inclusão da opção #$ -R y nas scripts usadas para submeter os jobs. Esta reserva evita o fenómeno denominado de job starvation, descrito nos parágrafos abaixo:
In this scenario there is one high priority pending job (possibly parallel) A that requires 
a larger quota of a particular resource and a stream of smaller and lower priority jobs B(i)
requiring a smaller quota of the same resource. An assignment for A can not be guaranteed 
assumed the stream of B(i) jobs does not stop - even if job A actually has higher priority 
than the B(i) jobs:

       A
       |
   +---+----+--------+--------+--------+--------+--------+   +----------+
   |  B(0)  | B(2)   | B(4)   | B(6)   | B(8)   | B(10)  |   |          |
   +---+----+---+----+---+----+---+----+---+----+---+----+---+    A     |
       | B(1)   | B(3)   | B(5)   | B(7)   | B(9)   | B(11)  |          |
       +--------+--------+--------+--------+--------+--------+----------+-->

With resource reservation job A gets a reservation that blocks lower priority B(i) jobs and 
thus guarantees resources will be available for A as soon as possible:

       A
       |
   +---+----+----------+--------+
   |  B(0)  |          |  B(2)  |   ...
   +---+----+    A     +--------+--------+
       |    |          |  B(1)  |  B(3)  |  ...
       +----+----------+--------+--------+------------------------------->


Manipulação de dados

  • Para optimizar a performance das execuções das corridas, os utilizadores devem proceder de acordo com as seguintes guidelines:
  1. Compilar e executar os seus programas nas suas HOMES em /home/lnec. As HOMES são disponibilizadas por NFS que é o melhor sistema para manipulação de ficheiros pequenos, logo, adequado a compilações e/ou execuções.
  2. Copiar os dados (principalmente ficheiros grandes) para /home/data. Este filesystem é disponibilizado por LUSTRE que é o melhor sistema para manipulação de ficheiros muito grandes.
  3. Adequar as tarefas de submissão e/ou programas para lerem e escreverem os dados para /home/data.


Suporte e Contactos

Ferramentas pessoais
Suporte