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:)