mesmo se tivermos espaço em RAM suficiente, por que o SO usará memória SWAP? [duplicado]

2

da foto acima, você pode ver que temos 3191 RAM livre, mas na mesma troca também está usando cerca de 661 bytes. porque está ocorrendo? pode dar uma olhada em relação a isso.

Obrigado

    
por Ramkee 07.08.2014 / 07:35

2 respostas

3

Para o motivo mais provável em uma caixa linux, seu swappiness está definido para um número diferente de zero. Veja This Question e a resposta aceita pelo motivo direto pelo qual você tem memória livre e troca em uso. Dito isso, se você estiver fazendo essa pergunta, provavelmente é melhor deixar o swappiness no valor padrão.

Outro motivo possível: que 3 GB de memória estavam em uso e foram liberados apenas recentemente. O sistema não perderá tempo carregando dados de troca e memória até saber que realmente precisa (ou seja, falhas de página)

Explicação geral, como se aplica à maioria dos sistemas operacionais modernos:

Você nunca pode ter memória suficiente (a menos que você tenha mais RAM do que o espaço do disco rígido). A RAM não é apenas para memória que os aplicativos precisam executar (memória "ativa"). Ele também é muito usado para arquivos de mapeamento de memória e armazenamento em cache de dados.

O objetivo completo de um gerenciador de memória é olhar para o sistema e dizer "Tudo bem, tenho 8 GB de memória e tenho $diskSize+$applicationMemory data para caber nele. O que é mais importante?" Ele tentará mover os dados menos importantes para o disco e os dados mais importantes para a memória.

Isso funciona muito bem para arquivos mapeados e arquivos em cache. Eles já existem no disco (como arquivos), então se eles se tornarem "sem importância", o sistema pode simplesmente soltá-los da memória. Se eles se tornarem importantes novamente, eles poderão ser carregados a partir do arquivo original. A memória da aplicação é diferente; Normalmente não existe no disco, então o sistema tem que salvar a memória de aplicativos sem importância para trocar.

O problema é que salvar memória de aplicativos sem importância em disco é tão lento quanto carregar arquivos importantes do disco; Para ajudar a minimizar a quantidade de tempo gasto esperando para descarregar a memória de aplicativos sem importância, o sistema irá "adivinhar" antecipadamente quais partes da memória não são importantes, e copia aquelas para trocar mais cedo. Isso permite que apenas descarte a memória do aplicativo da RAM, se algo mais importante aparecer.

Se você está se perguntando como algo pode ser mais importante do que a memória ativa do aplicativo, considere um processo em segundo plano que verifica as atualizações uma vez a cada 24 horas. 99,9% do tempo, este programa não está fazendo nada, mas dormindo. O sistema identificará aplicativos como esse e os enviará para swap para que haja mais espaço para arquivos em cache (como logs ou arquivos de configuração, que podem ser gravados ou lidos várias vezes por segundo).

TL; DR : você não tem RAM suficiente (RAM < tamanho do disco + memória de aplicativo). RAM livre é uma ilusão temporária que será corrigida quando você usar o sistema. O swap está em uso porque o sistema identificou a memória de aplicação de baixa prioridade e já empurrou uma cópia dela para o disco, para que ele possa rapidamente abrir espaço para coisas de maior prioridade se necessário.

    
por 07.08.2014 / 07:41
3

TL; DR: São cópias de informações que estavam na memória ao mesmo tempo (e provavelmente ainda têm) que não foram acessadas ou modificadas há muito tempo.

Quando o sistema é inicializado, muitos serviços começam a ser executados. Esses serviços alocam memória, lêem em sua configuração e assim por diante. Eles sujam algumas páginas de memória. Muitos desses serviços nunca serão executados novamente durante todo o tempo em que seu sistema estiver em execução, porque você não os utiliza. Mas o sistema operacional não pode descartar as páginas de memória que eles modificaram. Alguns deles podem ser importantes.

Agora, seu sistema pode escrever essas páginas para trocar depois, quando estiver sob pressão de memória e precisar fazer alguma paginação. Mas esse seria o pior momento para fazer I / O extra, porque, nesse momento, o I / O está limitando o desempenho do seu sistema.

Então, em vez disso, ele escreve essas páginas para trocar agora mesmo, quando há bastante largura de banda de E / S sobressalente. Dessa forma, se mais tarde ele ficar sob pressão de memória, ele poderá descartá-los com segurança, sem E / S adicionais, pois ele poderá lê-los novamente a partir da troca.

Se finalmente descartar essas páginas, há outro benefício. O sistema agora tem mais RAM que pode usar como cache de disco.

    
por 07.08.2014 / 09:43