O sistema congela ao trocar

0

Eu tenho um pi de framboesa que alterna para um NAS externo (por favor, não me julgue :)) sobre CIFS (link é uma conexão Ethernet full duplex direta de 100Mbit). Swap funciona bem até um certo limiar que é de cerca de 100MB. O sistema então congela e a conexão de rede com as paradas do NAS. O compartilhamento de samba é montado com o automount. Onde eu começo se eu quiser descobrir porque o Pi para de usar o swapfile? Eu não me importo com a lentidão porque eu estou apenas compilando programas pesados, mas quando ele congela eu sou forçado a reiniciar.

    
por Warrior 22.08.2017 / 18:50

1 resposta

2

Apenas olhando o código do kernel, isso não deve permitir a troca de um arquivo que está em uma montagem CIFS, então estou surpreso que isso funcione. Existem dois problemas genéricos com a troca em um sistema de arquivos em rede:

  1. A troca no Linux requer um mapeamento de bloco estático. É por isso que os arquivos de troca não podem ser esparsos, a menos que usem extensões não gravadas, e por que você precisa de um dispositivo de loop para colocar um arquivo de troca em sistemas de arquivos de gravação ou gravação em log. Você pode contornar isso em teoria usando um dispositivo de loop, mas isso deve ser um último recurso.
  2. Alguns protocolos ou configurações de autenticação exigem componentes do espaço do usuário e, se não ocuparem todo o espaço de endereço, você pode acabar em uma situação em que não pode trocar nada porque não pode executar o código do espaço do usuário porque você não tem memória para carregá-lo.

O CIFS sofre com o primeiro problema, e também o segundo se você estiver usando autenticação e o sistema não mantém uma conexão constante.

Você mencionou que está usando um Pi, sugiro pesquisar o uso do ZRAM e, possivelmente, um arquivo de troca local (os cartões SD decentes não são caros). Você pode até usar uma unidade flash USB, se necessário, em vez do cartão SD.

Alternativamente, e mais genericamente, se você tiver um sistema NAS razoável, você poderia procurar por meio de (em ordem geral de preferência) NBD, ATA sobre Ethernet ou iSCSI (que dependendo de como ele é configurado no Pi pode também sofrem da segunda limitação listada acima).

    
por 22.08.2017 / 21:48