Conselhos sobre o uso da memória do Linux

2

Eu não sou um especialista em Linux, então estou pedindo sua opinião. Esta é a saída do comando free -m no meu computador:

             total       used       free     shared    buffers     cached
Mem:          2026       1643        383          0        313        926
-/+ buffers/cache:        402       1624
Swap:         2855          0       2855

O uso da RAM é normal? (apache e mysql em execução, nenhum usuário logado no momento)

    
por womble 19.11.2009 / 18:30

5 respostas

3

Parece ótimo para mim. Gostaria de ler sobre como ler o uso de memória para uma caixa Linux, porque você precisa olhar para os buffers / cache, bem como para obter uma idéia melhor.

Você está indo muito bem. Uma coisa boa de se ver é que nenhum Swap está sendo usado.

    
por 19.11.2009 / 18:32
3

O Linux usa memória um pouco diferente do que você pode esperar. Por quê? Na verdade, usa o máximo de memória possível:)

O ponto mais lento para qualquer processo, em qualquer sistema operacional está esperando por E / S .. não é apenas lento, é francamente perigoso às vezes. Imagine um processo aguardando em chamadas de E / S conectadas que nunca retornarão ... e o que acontece se esse processo morrer? É por isso que temos o sono do disco para evitar a podridão do kernel dentro de.

O que resta é a capacidade de resposta, seja no servidor ou na área de trabalho, o melhor compromisso é colocar os arquivos acessados com freqüência na memória para que os processos não se tornem vinculados à E / S. Não é de todo injusto, na verdade, você pode ajustar como o Linux usa cache vs swap, mas 8/10 vezes manter arquivos em páginas limpas faz com que as coisas rodem muito mais rápido.

Quando um processo desliza para o disco para memória (swap) ... isso é um mau sinal. Isso acontece quando você combina coisas que alocam muito mais memória do que realmente precisam (por thread ou fork) para lidar com solicitações de tamanho desconhecido. Isso acontece quando rodamos o Apache + MySQL no mesmo computador, por exemplo. Outros processos não podem obter blocos contíguos de memória do kernel, devido aos dois homens gordos em pé no meio da porta. Quando um processo precisa ler um dispositivo de bloco para acessar a memória, tudo fica mais lento, especialmente os processos com blocos limpos alocados aguardando para gravar coisas em disco.

Alguns programadores usam o mlock () ou mesmo o mlockall () para evitar isso, mas geralmente o kernel sabe melhor. Da mesma forma, algumas pessoas usam O_DIRECT com open () para ignorar o buffer .. e a menos que você esteja escrevendo um mecanismo de banco de dados relacional, o kernel geralmente sabe melhor do que você em relação ao que precisa de buffers ou não. Na verdade, posix_fadvise () e posix_madvise () são melhores, pois eles sugerem o que você acha que sabe para o kernel, em vez de ditar. Afinal, o seu processo não é a única coisa em execução em qualquer computador:)

Provavelmente muito mais informações do que você queria. Eu quis dizer, o uso parece absolutamente normal. No entanto, olhe para / proc / sys / vm para botões para controlar este comportamento, se você quiser mexer:)

    
por 19.11.2009 / 18:49
1

Você não está trocando, e a grande maioria da RAM que você está usando é buffers / cache. Parece bem saudável. Há um bom artigo sobre como entender o comando "livre" aqui .

    
por 19.11.2009 / 18:35
0

O termo "uso de memória", como definido por algumas ferramentas do Linux, é um pouco diferente do que a maioria das pessoas espera.

Normalmente, quando as pessoas pensam sobre o uso da memória, elas pensam sobre o espaço ocupado na memória pelos aplicativos.

Algumas (mais?) ferramentas do Linux adicionam a esse cache de disco. Então, claro, o total é maior. Além disso, o Linux tenderá a encher a memória de outra forma não utilizada com o cache e coisas desse tipo. Então, de acordo com essa definição, o "uso de memória" em uma caixa Linux sempre tende a aumentar para 99% depois de um tempo.

Você pode tentar usar o htop. Ele fornece um gráfico de barras com código de cores do uso da memória: verde para memória usada (processos) "old school", azul para buffers, laranja para cache.

    
por 19.11.2009 / 21:07
0

Não entre em pânico!
Seu carneiro está bem!

link

    
por 22.09.2010 / 09:45

Tags