Você pode definir um tamanho mínimo de buffer de disco do Linux?

7

Eu tenho uma máquina Linux bastante antiga com 2 GB de RAM, sem swap, e está funcionando muito bem, com o sistema usando cada pedaço de memória não utilizado para o cache com grande efeito.

No entanto, quando estou prestes a estressar a memória (por exemplo, > 1950MB alocados), ela diminui a velocidade; Eu suspeito que é porque não há nenhum buffer de disco sobrando. Eu sei que o assassino da OOM entraria em vigor em breve, mas normalmente não chega lá - está ficando tão lento que carrega gravações para 30-40, nenhum processo faz nenhum progresso (portanto, não aloca mais memória), e Eu tenho que reiniciá-lo.

Quando tento apenas matar um processo para que a máquina responda, por exemplo indo ao console (via Alt-F1, logando, e apenas fazendo um "killall badprocess"), ele normalmente funciona, exceto que eu tenho que esperar ~ 10 minutos entre o usuário / senha e obter um prompt - tudo isso enquanto é a atividade do disco.

Mais uma vez, não há troca, por isso não está trocando - é apenas surra porque não tem mais buffers.

Eu teria muito mais ou menos 100MB dedicados exclusivamente a buffers de disco, o que acionaria o killer OOM anteriormente (menos memória para programas, afinal de contas), mas por outro lado deixaria a máquina sempre responsiva.

Existe uma maneira de fazer isso? Eu não consegui encontrar uma entrada / proc / kernel ou / sys / vm que faz esse tipo de coisa.

    
por HopelessN00b 16.08.2010 / 23:01

2 respostas

1

Dê uma olhada em / proc / sys / vm / min_free_kbytes . É o limite de kbytes livres que acionam o assassino. Também seria bom verificar nos logs a palavra-chave oom-killer para saber o que está sendo morto {provavelmente você não quer matar o ssh , é melhor renegar it}

    
por 16.08.2010 / 23:48
1

Esperar o assassino para liberar a memória é um pouco como esperar que o motor pare em seu carro para lhe dizer quando é hora de encher seu tanque de gasolina. O assassino é uma ferramenta pesada de último recurso e desespero por uma máquina carente de recursos. Ele mata o próximo programa que toca sem considerar como isso afetará sua aplicação, acessibilidade, confiabilidade e assim por diante. Quando o oom-killer é chamado, seu servidor está ofegando e em condições críticas.

Em vez disso, é melhor ter uma abordagem ativa ao gerenciar o uso da memória no ambiente do aplicativo. Você pode monitorar / proc / meminfo por problemas e tomar as medidas apropriadas e acelerar sua carga de trabalho antes que uma situação séria fique feia.

    
por 17.08.2010 / 07:59

Tags