Instalaçãode Clusters Ettore Enrico Delfino Ligorio USP/STI/Internuvem ettore@usp.br Março -2016
Conceitos Elementos do StackHPC O que e cada elemento Funcionalidades Ferramentas Caso do HPC USP Sugestões para instalação OpenHPC Agenda
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 Particionamentodo 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 Processamento Flynn's taxonomy(multiprogramming context) Single instruction stream Multiple instruction streams Single program Multiple programs Single data stream SISD MISD Multiple data streams SIMD 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
ArquitetureMPP 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/Son of 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 Orquestra acesso ao HW Process Limpo Threads Especializado Gestão de pacotes Diskless ou Diskfull Yum Apt-get Comunidade HPC 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 Flagsde otimização e debug Static e Shared libraries Strip,ldde 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/
Uso das GPU Cuda
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ões rápida - infiniband) e MPICH2
Mais simples Shared Memory Threads OpenMP Cada uma com um pedaço do problema
FilesystemGlobal 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 Libspara softwares HPC Softwares HPC complexos Math Libs MPI Libs I/O Libs
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
EnvironmentModules Definição do $MODULEPATH IF no /etc/bashrcpara 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
Performance Disponibilidade Agregado para cluster Monitoramento 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 Ulimite 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
VNFS e bootstrap Stateless e Statefull Criação de nodes Provisionamento Gestão de arquivos de configuração Warewulf
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
BootStrape Provisionamento Wwbootstrap chroot=/chroot NOME_BOOTSTRAP Wwshprovisionset 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
Compiladores MKL Portal educativo Soluções da Intel
Ganglia
Analisando Jobs Operações com Jobs Analisando Nodes de Processamento Operações com nodes Visão de desempenho do Storage Operacaode Filas
qstat f JOB_ID Arquivos de saída job Erro Saída qpeek Análise de Jobs Aruivos de saída aplicativo
Qstat f Qstat na Sshe top Free Gráficos no Ganglia Análise de Nodes
Visão de Desempenho Linpack HPCC HPCC_fermi(CUDA)
Cputime Walltime Limites de jobs Limites de recursos Propriedades de Filas
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 jobsnesse 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/