Instalação de Clusters
Ettore Enrico Delfino Ligorio – USP/STI/Internuvem – [email protected]
Março - 2016
Agenda• Conceitos• Elementos do Stack HPC• O que e cada elemento
• Funcionalidades• Ferramentas
• Caso do HPC USP• Sugestões para instalação
• OpenHPC
O que e cluster?
• Aglomerado de recursos computacionais funcionando de forma coordenada cooperando entre si para a resolução de um problema comum
• Não e GRID
• Não é nuvem
Classificação de Cluster• Finalidade
– Computação Cientifica
– Inteligência de Negocio• Mineração de Dados
• Big Data
– Oferta de Serviços de TIC
– Cloud Computing
– Engenharia
– Economia
• Tipo– Alto Desempenho
– Alta Disponibilidade
– Balanceamento de Carga
– Configuração Centralizada
Clusters de HPC – Science Computing
• Processamento Paralelo distribuído
– Beowulf
– Particionamento do problema
• Processamento Serial
Termos
• Node
• CPU
• Task
Beowulf
• Node Mestre
– Frontend acesso
– Transefrência de arquivos
– Serviços
• Nodes Slaves
– Processamento
– I/O
Tipos de ProcessamentoFlynn's taxonomy (multiprogramming context)
Single
instruction
stream
Multiple
instruction
streams
Single
program
Multiple
programs
Single data
streamSISD MISD
Multiple
data streamsSIMD MIMD SPMD MPMD
Tipos de Processamento
• SIMD
– GPUs (vetorização)
• MIMD
– Memoria Compartilhada
– Memoria Distribuída
• SISD
– Von Neumann
– CPU Superescalar
• MISD
– Pipelines
– Fault Tolerance Computers
Arquiteture MPP
• Massive Parallel Processing
– Executar coordenadamente grupos de cálculos computacionais em paralelo
– Cluster de HPC com interconexão veloz
– Grids oportunistas
– Massively Parallel Processor Arrays (MPPAs)• HPC e sistemas embarcados (Video, Signal process, etc)
System Share
• Cluster e MPP
– Dominantes
Fonte: http://top500.org
Capacidade Computacional pelo mundo
Fonte: http://top500.org
• MPI options
• MPICH2, MVAPICH2, Open MPI, Intel MPI• Provisioning software
• Cobbler, Warewulf, xCAT/ Platform HPC, Openstack, FAI• Configuration management
• Warewulf, Puppet, Chef, Ansible, cfEngine, SaltStack• Resource and job schedulers
• Torque/PBS, OpenLava/Platform LSF , Maui/Moab, HTCondor , SLURM, Grid Engine/Sonof Grid Engine, Univa, Oar
• Performance monitoring
• Ganglia, Nagios, Icinga• Shared filesystems
• NFS, pNFS, Lustre, GPFS, PVFS2, GlusterFS• Library/Enviroment Variables management
• Enviroment Modules, Lmod, EasyBuild• Cluster management toolkits
• Rocks, Oscar, Scyld, Bright
Fonte: http://www.penguincomputing.com/products/software/cluster-management-scyld-clusterware/
http://www.hpcwire.com/2014/02/24/comprehensive-flexible-software-stack-hpc-clusters/
Sistema Operacional
• Kernel Otimizado
– Limpo
– Especializado
• Diskless ou Diskfull
• Comunidade HPC
• Orquestra acesso ao HW – Process– Threads
• Gestão de pacotes– Yum– Apt-get– Yast2
• Alternativas: RedHat Like, Debian Like e Suse Like
Fonte: http://top500.org
Comunicação
• PasswordLess SSH
• RSH
• RDMA (Infiniband)
• Interconexão
– Infiniband
– Ethernet
– Myrinet
– Quadrics (Elan Asic)
Interconexões
Fonte: http://top500.org
Compiladores
• Gera os binários a partir do código fonte
• Flags de otimização e debug
• Static e Shared libraries
– Strip, ldd e nm
• Alternativas: GNU, Intel, Portland, etc
Bibliotecas Matemáticas
• Implementação confiável e performática de operações matemáticas frequentes
– Transformadas de Fourier, Sistemas Lineares, etc.
• Binário faz cálculos mais rápidos
• Base para compilação de outros softwares• Alternativas: BLAS, cuBLAS, ATLAS, FFTW, MKL, ACML, GSL,
LAPACK, LibSci /Trilinos(Cray), NAG, PETSc, PSPLine, ScaLAPACK, SLEPc, SPRNG, TPSL, ESSL (IBM)
Fonte: http://www.nersc.gov/users/software/programming-libraries/math-libraries/
Cuda
• Uso das GPU
Bibliotecas MPI• Baseada em processos
• Troca de mensagens entre nodes de um cluster de processamento/RAM distribuídos– Flexibilidade, Portablidade e escalabilidade
• Personalizar arquivo de configuração do MPI e espalhá-lo entre os nodes
• Standard MPI-3
• Alternativas: OpenMPI, MVAPHCH2 (internexõesrápida - infiniband) e MPICH2
OpenMP
• Mais simples
• Shared Memory
• Threads
– Cada uma com um pedaço do problema
Filesystem Global Compartilhado
• Lustre predomina no top500
• Alto desempenho I/O
– Evitar gargalos
• Visão consistente dos arquivos para todos os nodes
– Evita Stage-in/Stage-out
– Home e scratch
• Alternativas: Lustre, NFS, GPFS, GlusterFS, etc.
IO Paralelo
• Bibliotecas
– MPI-IO
– netCDF
– HDF5
• Processo leem/escrevem pedaços diferentes do arquivo simultaneamente
Requisitos comuns de Libs para softwares HPC
Math Libs MPI Libs I/O Libs
Softwares HPC complexos
Provisionamento dos Nodes
• Padronização
– Imagem de S.O.
– Parâmetros de rede
– Configuração
• Stateless
• Statefull
• Alternativas: Warewulf/PERCEUS, xCAT/ Platform HPC, FAI
Gerenciamento de Configuração
• Uniformização de atualizações
• Facilidade para administradores
• Observar detalhes de aplicação de configurações
• Alternativas: Warewulf, Puppet, Chef, Ansible, cfEngine, SaltStack
Gestão de Variáveis de Ambiente e Bibliotecas• Fundamental em
ambientes HPC
• $LD_LIBRARY_PATH
• $PATH
• Altera binários e bibliotecas disponíveis
– Para CLI e JOBS.
• Coexistência harmônica de versões diferentes
• Alternativas: Environment Modules e Lmod
Environment Modules
• Definição do $MODULEPATH
• IF no /etc/bashrc para carregar $MODULEPATH proveniente do SSH
• Enviar e receber variáveis
– /etc/ssh/sshd_config
– /etc/ssh/ssh_config
Escalonadores de Jobs e Recursos
• Visão Recursos
– Disponíveis
– Consumidos
– Reservado
– Solicitados
• Especificação de filas
– Controle Tempos limite
– Nodes alocados
• Distribuição de jobs
– Accouting
• Alternativas: Torque/PBS, OpenLava/Platform LSF , Maui/Moab, HTCondor , SLURM, Grid Engine/Son of Grid Engine, Univa, Oar
Interfaces de Trabalho
• Edição e submissão Jobs
– SSH/Shell
– Interface WEB
• Transferência de Arquivos
– SFTP
– Interface WEB
– GlobusOnline*
cGroups
• Nativo do Kernel Linux
• Limitação de recursos disponíveis para o job
– Cpu
– RAM
• O espaço em disco controlado por quotas tradicionais quando necessário
Monitoramento
• Performance
• Disponibilidade
• Agregado para cluster
• Alternativas: Ganglia, Nagios, Icinga, Zabbix, Cacti
Clusters HPC-USP
• Lince
• Águia
Setup de node
• Sysctl.conf– Liberar alocação e uso
de muita RAM
• /etc/profile– Ulimit e umask
– HISTSIZE
– Variáveis de ambiente
• /etc/bashrc
• /etc/secutity/limits.conf
• /etc/ssh/ssh_config– Disable strict host key check
• Desativar firewall dos nodes
Warewulf
• VNFS e bootstrap
– Stateless e Statefull
• Criação de nodes
• Provisionamento
• Gestão de arquivos de configuração
Nodes
• Wwsh node servidor01 set --netdev=eth0 --hwaddr=XX:XX:XX:XX:XX:XX
• Wwsh node servidor[01-20] set –I 10.0.0.1
VNFS
• Mount –t proc /proc /CHROOT/proc
• Mount –t sys /sys /CHROOT/sys
• Mount –t bind –o loop /dev /CHROOT/dev
• Chroot /CHROOT
• Wwvnfs NOME_IMAGEM –chroot=/CHROOT
BootStrap e Provisionamento
• Wwbootstrap –chroot=/CHROOT NOME_BOOTSTRAP
• Wwsh provision set node0[1-6] –vnfs=NOME –bootstrap=NOME
• Wwsh provision set node0[2-5] –fileadd=sshd_config
Torque Maui
• Qmgr
– Print server (qmgr –c ‘p s‘)
• Maui.cnf
– Showconfig -v
Soluções da Intel
• Compiladores
• MKL
• Portal educativo
Ganglia
Operacao de Filas
• Analisando Jobs
– Operações com Jobs
• Analisando Nodes de Processamento
– Operações com nodes
• Visão de desempenho do Storage
Análise de Jobs
• qstat –f JOB_ID
• Arquivos de saída job
– Erro
– Saída
– qpeek
• Aruivos de saída aplicativo
Análise de Nodes
• Qstat –f
• Qstat –na
• Ssh e top
• Free
• Gráficos no Ganglia
Visão de Desempenho
• Linpack
• HPCC
• HPCC_fermi (CUDA)
Propriedades de Filas
• Cputime
• Walltime
• Limites de jobs
• Limites de recursos
Configurações de Escalonamento
• Fairshare– Uso justo.
– Escolhe N intervalos de medição num período de tempo
– Atribui maior prioridade para quem usou menos no período
• Backfilling– Verifica os tempos e os
recursos solicitados por cada job.
– Analisa o tempo restante reservado pelo que já esta em execução.
– Encaixa jobs nesse tempo.
EKM - Ansys
• https://ekm.uspdigital.usp.br/ekm
• http://www.beowulf.org/• http://warewulf.lbl.gov• http://www.openhpc.community• http://insidehpc.com/2012/09/free-download-hpc-for-dummies/• http://www.adaptivecomputing.com/products/open-source/torque/
Top Related