Solução de Problemas

Esta seção fornece soluções para problemas comuns encontrados por usuários do GridUnesp. Os problemas estão organizados por categoria para facilitar a consulta.

Dica

Antes de contatar o suporte, consulte esta seção. A maioria dos problemas já possui solução documentada.

Problemas de Acesso

Erro de Autenticação SSH

Sintoma: Ao tentar conectar, aparece “Permission denied” ou erro de autenticação.

Soluções possíveis:

  1. Verifique suas credenciais

    Teste de conexão com debug
    ssh -vvv username@access.grid.unesp.br
    
  2. Verifique a chave SSH do servidor

    As chaves corretas do servidor access.grid.unesp.br são:

    RSA:     SHA256:X3iCb13fWj7u2Tvp/MCCpn0brfSNS5Ie6ehm6lsvPSQ
    ECDSA:   SHA256:WVFokXOLnuH9+2e7xxRU2gp7XJqxwuE6H8bbUMqTCXo
    ED25519: SHA256:+HEvFMmo0EA6ipPMJSaj5+Q6IabebRN+nRD0nxdYrKQ
    

    Se a chave no seu sistema não corresponder, remova a entrada antiga:

    ssh-keygen -f "~/.ssh/known_hosts" -R "access.grid.unesp.br"
    
  3. Verifique bloqueios de rede

    • Porta 22 (SSH) deve estar liberada

    • Firewalls corporativos podem bloquear

    • Redes com proxy podem necessitar configuração especial

Conexão Recusada (Connection Refused)

Sintoma: ssh: connect to host access.grid.unesp.br port 22: Connection refused

Causa provável: Bloqueio pelo sistema Fail2Ban após múltiplas tentativas de login com senha incorreta ou uso excessivo de SCP.

Solução:

  • Aguarde 15 minutos e tente novamente

  • Não tente repetidamente durante o bloqueio (reinicia o contador)

  • Se persistir, envie a saída do comando abaixo para o suporte:

    ssh -vvv username@access.grid.unesp.br
    

Conexão Lenta ou Instável

Sintomas:

  • Comandos demoram para responder

  • Conexão cai frequentemente

  • Latência alta

Soluções:

  1. Use compressão SSH:

    ssh -C username@access.grid.unesp.br
    
  2. Mantenha a conexão ativa:

    Configuração no ~/.ssh/config
    Host access.grid.unesp.br
        ServerAliveInterval 60
        ServerAliveCountMax 3
    
  3. Use screen ou tmux para sessões persistentes:

    screen -S sessao_grid
    # Dentro do screen, faça o login normal
    # Para desconectar: Ctrl+A, depois D
    # Para reconectar: screen -r sessao_grid
    
  4. Verifique sua conexão de internet (velocidade, latência, perda de pacotes)

Problemas com Jobs

Job em Estado PENDING por Muito Tempo

Sintoma: squeue mostra seu job com estado PD (Pending) por horas ou dias.

Causas possíveis:

  1. Falta de recursos disponíveis

    Verifique o estado do cluster:

    sinfo                     # Visão geral dos nós
    squeue -r | wc -l         # Total de jobs
    squeue -r -t PD | wc -l   # Jobs pendentes
    
  2. Recursos solicitados inviáveis

    Verifique se você não solicitou mais do que o disponível:

    • Máximo de 52 CPUs por nó (nó de CPU)

    • Máximo de 88 CPUs no nó de GPU

    • Máximo de 30 dias de execução

    • Memória compatível com o solicitado

  3. Prioridade baixa

    O sistema utiliza política de Fair Share:

    sprio -u $USER             # Ver prioridade do seu job
    squeue -o "%.18i %.9Q %.8j %.8u %.10V %.6D %R" --sort=-p,i --states=PD
    
  4. Partição incorreta

    Verifique as partições disponíveis:

    sinfo -o "%9P %5a %10l %6D %6t %N"
    

Soluções:

  • Aguarde (períodos de pico podem ter filas longas)

  • Reduza recursos solicitados (menos CPUs, menos tempo)

  • Submeta em horários de menor demanda (madrugada, finais de semana)

  • Divida em jobs menores (job array)

Job Falha Imediatamente

Sintoma: Job entra em execução mas falha em poucos segundos (estado F ou FAILED).

Diagnóstico:

  1. Verifique o arquivo de saída:

    cat slurm-JOBID.out
    tail -50 slurm-JOBID.out
    
  2. Verifique o arquivo de erro (se especificado):

    cat slurm-JOBID.err
    
  3. Verifique o status detalhado:

    scontrol show job JOBID
    

Problemas comuns e soluções:

Erro

Causa

Solução

“INPUT is missing”

Variável INPUT não definida

Adicione export INPUT="..."

“OUTPUT is missing”

Variável OUTPUT não definida

Adicione export OUTPUT="..."

“command not found”

Módulo não carregado

Adicione module load ...

“Permission denied”

Arquivo sem permissão de execução

chmod +x programa

“Segmentation fault”

Erro no código ou memória insuficiente

Aumente memória, debug código

“Out of memory”

Programa consumiu mais memória que o solicitado

Aumente --mem ou --mem-per-cpu

Job Cancelado (CANCELLED)

Sintoma: Job aparece como CANCELLED no histórico.

Causas:

  1. TIMEOUT: Job excedeu o tempo solicitado

    sacct -j JOBID --format=JobID,State,ExitCode,Elapsed,Timelimit
    

    Solução: Aumente #SBATCH -t ou otimize o código.

  2. Cancelamento manual:

    • Você pode ter cancelado com scancel JOBID

    • Administradores podem ter cancelado

  3. Falha no nó de processamento:

    • Falha de hardware detectada

    • Nó reiniciado ou em manutenção

    Solução: Resubmeta o job (será alocado em outro nó).

  4. Uso excessivo no servidor access:

    • Jobs pesados executados no access são cancelados pelos administradores.

    Solução: Sempre use sbatch para submeter aos nós de processamento.

Job com Erro de Biblioteca

Sintoma: “error while loading shared libraries” ou “cannot find -lname”.

Diagnóstico:

ldd ./seu_executavel          # Mostra dependências
module list                   # Ver módulos carregados

Soluções:

  1. Carregue o módulo correto:

    module avail nome_parcial   # Buscar biblioteca
    module load nome_biblioteca
    
  2. Configure LD_LIBRARY_PATH (se instalou localmente):

    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/local/lib
    
  3. Recompile o programa com as bibliotecas corretas

Problemas de Compilação

Sintoma: Erros durante compilação com make, gcc, etc.

Soluções:

  1. Verifique os compiladores disponíveis:

    module avail gcc
    module avail intel
    
  2. Carregue o compilador desejado:

    module load gcc/9.3.0
    # ou
    module load intel/2020
    
  3. Para aplicações MPI, carregue também o módulo MPI:

    module load openmpi/4.0.1
    # ou
    module load intel/mpi/2017
    
  4. Instale dependências faltantes:

    • Bibliotecas de desenvolvimento

    • Headers necessários

  5. Configure flags de compilação adequadas:

    CFLAGS="-O2 -march=native" ./configure --prefix=$HOME/local
    make
    make install
    

Problemas de Armazenamento

Sem Espaço em Disco

Sintoma: Erro “No space left on device” ou “Disk quota exceeded”.

Diagnóstico:

Verificar uso de espaço
df  -h /home               # Espaço total em /home/
du -sh /home/$USER         # Total usado pelo usuário
du -sh /home/$USER/* | sort -hr | head -20   # Maiores diretórios

# Verificar /store/ (se aplicável)
du -sh /store/$USER/* | sort -hr | head -20

Soluções:

  1. Remova arquivos desnecessários:

    rm slurm-*.out                   # Logs antigos
    rm -rf diretorios_temporarios/   # Diretórios temporários
    
  2. Comprima arquivos grandes:

    tar -czf resultados.tar.gz diretorio_resultados/
    rm -rf diretorio_resultados/      # Após confirmar que o tar está OK
    
  3. Transfira dados importantes para seu computador local

  4. Use /store/ para arquivos temporários grandes durante execução:

    export SHARED_FS="true"
    

Aviso

Não há quotas de disco no GridUnesp, mas o espaço é compartilhado. O acúmulo excessivo prejudica todos os usuários.

Arquivos Desapareceram

Sintoma: Arquivos que estavam no diretório não são mais encontrados.

Causas possíveis:

  1. Limpeza automática do /tmp/

    • Arquivos em /tmp/ dos nós são apagados após o job

    • Certifique-se de que usou job-nanny com OUTPUT definido

  2. Exclusão acidental

    • Comandos como rm -rf podem ter sido usados incorretamente

    • Verifique histórico de comandos com history | grep rm

  3. Falha no storage

    • Falhas de hardware podem causar corrupção/perda

    • O GridUnesp não possui backup automático

Perigo

O GridUnesp NÃO faz backup automático dos dados.

Dados perdidos por falha de hardware não podem ser recuperados.

Prevenção:

  • Mantenha backups de dados importantes em seu computador local

  • Use versionamento (git) para scripts e código

  • Transfira resultados críticos assim que o job terminar

Erro de Permissão

Sintoma: “Permission denied” ao acessar arquivos ou diretórios.

Diagnóstico:

ls -la arquivo           # Ver permissões atuais
id                       # Ver seu UID/GID

Soluções:

  1. Ajuste permissões:

    chmod +r arquivo.dat              # Adicionar leitura
    chmod +x script.sh                # Adicionar execução
    chmod -R g+rw diretorio/          # Leitura/escrita para grupo
    
  2. Verifique propriedade:

    chown $USER:$USER arquivo          # Tornar-se proprietário
    
  3. Para compartilhar com colegas:

    chmod g+rx diretorio/              # Grupo pode ler/executar
    chmod o-rwx diretorio/             # Outros não têm acesso
    

Problemas de Performance

Job Muito Lento

Sintoma: Job demora mais que o esperado para executar.

Causas e soluções:

  1. Uso inadequado de recursos

    • Verifique se o job está usando todos os recursos solicitados:

      sstat --format=JobID,MaxRSS,MaxVMSize,AveCPU -j JOBID.batch
      sstat --format=JobID,MaxRSS,MaxVMSize,AveCPU -j 23134.batch
      sstat --format=JobID,MaxRSS,MaxVMSize,AveCPU -j JOBID -a
      sstat --format=JobID,MaxRSS,MaxVMSize,AveCPU -j 23134 -a
      
    • Ajuste número de threads/processos no código

  2. I/O intensivo

    • Muitas operações de leitura/escrita em disco

    • Considere usar /tmp/ (mais rápido) para arquivos temporários

    • Minimize operações de I/O (leia uma vez, processe, escreva uma vez)

  3. Gargalo de memória

    • Cache insuficiente, levando a swapping

    • Aumente memória disponível com #SBATCH --mem=...

  4. Código não otimizado

    • Use flags de otimização na compilação (-O2, -O3)

    • Revise algoritmos (complexidade, estruturas de dados)

    • Paralelize onde possível (OpenMP, MPI)

  5. Concorrência com outros jobs

    • Recursos compartilhados (storage, rede) podem estar saturados

    • Tente executar em horários de menor demanda

Uso Excessivo de Memória (OOM)

Sintoma: Job é morto com “Out of Memory” ou “Killed”.

Diagnóstico:

sacct -j JOBID --format=JobID,ReqMem,MaxRSS,State
# ReqMem: memória solicitada
# MaxRSS: memória máxima realmente usada

Soluções:

  1. Aumente a memória solicitada:

    #SBATCH --mem=16G          # 16 GB por nó
    # or
    #SBATCH --mem-per-cpu=4G   # 4 GB por CPU
    
  2. Otimize o uso de memória do programa:

    • Libere memória não utilizada

    • Processe em lotes (batch) em vez de tudo na memória

    • Use estruturas de dados mais eficientes

  3. Reduza o problema (processe partes separadamente)

  4. Use algoritmos com menor pegada de memória

Problemas com Módulos

Módulo Não Encontrado

Sintoma: “module: command not found” ou “module load nome” falha.

Soluções:

  1. Verifique se o ambiente de módulos está inicializado:

    which module
    module --version
    

    Se não estiver disponível, o sistema pode estar com problema - contate o suporte.

  2. Liste módulos disponíveis:

    module avail                 # Todos os módulos
    module avail nome_parcial    # Busca por nome parcial
    
  3. Verifique se o módulo existe com o nome correto:

    • Case sensitive (OpenMPI ≠ openmpi)

    • Versões específicas (gcc/9.3.0 ≠ gcc)

Conflito entre Módulos

Sintoma: Ao carregar um módulo, outro é automaticamente descarregado.

Causa: Módulos incompatíveis entre si (ex: diferentes versões de MPI).

Soluções:

  1. Use ambientes separados:

    module purge                  # Descarrega todos
    module load openmpi/4.0.1     # Carrega apenas o necessário
    

    Aviso

    O script job-nanny é reconhecido ao carregar o módulo gridunesp.

    Quando o usuário faz login no cluster, esse módulo é carregado automaticamente.

    Caso tenha usado o comando module purge, é preciso fazer

    module load gridunesp
    

    para que o job-nanny esteja disponível.

    Ver seção Script job-nanny.

  2. Verifique dependências:

    module show nome_modulo       # Mostra dependências e conflitos
    
  3. Use module swap para trocar versões:

    module swap gcc gcc/9.3.0
    

Problemas com job-nanny

INPUT/OUTPUT Obrigatórios

Sintoma: Job cancelado com erro sobre INPUT/OUTPUT.

Causa: O script job-nanny exige a definição das variáveis de ambiente INPUT e OUTPUT.

Solução:

Exemplo correto
#!/bin/bash
#SBATCH -J meu_job

# Havendo mais de um entrada,
# separe os nomes por espaço em branco
export INPUT="dados_entrada.dat parametros.txt"
export OUTPUT="resultados_saida.dat logs/"

module load meu_software
job-nanny ./meu_programa

Uso de /store/ vs /tmp/

Sintoma: Job lento ou com problemas de espaço.

Solução: Escolha o local adequado:

Forçar uso de /store/ (para arquivos grandes)
export SHARED_FS="true"    # Usa /store/
# ou
export LARGE_FILES="true"  # Mesmo efeito
Forçar uso de /tmp/ (padrão para 1 nó)
export SHARED_FS="false"   # Usa /tmp/ (apenas para 1 nó)

Nota

Com múltiplos nós (-N >1), o uso de /store/ é automático e não pode ser alterado.

Problemas de Rede

Transferência Lenta

Sintoma: SCP/RSYNC muito lentos.

Soluções:

  1. Use compressão:

    scp -C arquivo.dat usuario@access.grid.unesp.br:~/
    
  2. Use RSYNC (mais eficiente para diretórios):

    rsync -avz diretorio/ usuario@access.grid.unesp.br:~/diretorio/
    
  3. Compacte antes de transferir:

    tar -czf dados.tar.gz diretorio/
    scp dados.tar.gz usuario@access.grid.unesp.br:~/
    
  4. Evite horários de pico. Utilize o período da noite ou fins de semana.

Falha na Transferência

Sintoma: Transferência interrompida no meio.

Soluções:

  1. Use RSYNC (permite retomar):

    rsync -avz --partial --progress arquivo.dat usuario@access.grid.unesp.br:~/
    
  2. Divida arquivos grandes:

    split -b 1G arquivo_grande.dat parte_   # Divide em partes de 1GB
    # Transfira as partes
    cat parte_* > arquivo_grande.dat        # Remonta no destino
    
  3. Use screen/tmux para evitar que a transferência morra ao fechar o terminal

Problemas Gerais

Comando Não Encontrado

Sintoma: “command not found” para comandos comuns.

Soluções:

  1. Verifique o PATH:

    echo $PATH
    which nome_comando
    
  2. Comandos comuns podem não estar disponíveis - use caminho completo:

    /usr/bin/nome_comando
    /bin/nome_comando
    
  3. Instale localmente se for um programa específico. Ver seção Instalando Aplicações.

Shell Padrão

Sintoma: Prefere outro shell (zsh, fish, etc.) mas o padrão é bash.

Solução: Altere seu shell padrão:

chsh -s /bin/zsh          # Exemplo para zsh
# Faça logout e login novamente

Nota

Nem todos os shells estão disponíveis. O padrão é bash.

Idioma do Sistema

Sintoma: Mensagens em inglês, prefere português.

Solução: Configure a variável de ambiente:

export LANG=pt_BR.UTF-8
export LANGUAGE=pt_BR

Para tornar permanente, adicione ao ~/.bashrc.

Quando Contatar o Suporte

Se após tentar as soluções acima o problema persistir:

Prepare as seguintes informações:

  1. Descrição clara do problema

  2. Seu username

  3. IDs dos jobs (se aplicável)

  4. Caminho completo dos scripts e arquivos

  5. Conteúdo dos arquivos de log (slurm-JOBID.out)

  6. Comandos executados e suas saídas

  7. Tentativas de solução já realizadas

Envie para: support.ncc@unesp.br

Dica

Quanto mais completo for seu relato, mais rápida e precisa será a resposta.

Ver também