Para trabalhar corretamente, um computador depende de ter uma quantidade adequada de memória. Simplesmente dizer que nunca pode haver o suficiente. Quanto mais a memória física é instalada, mais caro é. Principalmente, o resultado é um compromisso inteligente entre custos e velocidade para acessar as células de memória.
Para alcançar esse compromisso, os sistemas UNIX/Linux combinam dois tipos de memória - memória física (RAM) e espaço de troca. No total, isso é chamado de memória virtual de um sistema de computação. A memória física é bastante cara, mas rápida e acessível em nanossegundos. Por outro lado, a memória de troca é bastante barata, mas lenta e acessível em milissegundos.
Existem algumas razões pelas quais a memória de troca é útil. Primeiro, às vezes processos únicos precisam de mais memória do que o sistema possui fisicamente e pode fornecer mais aos processos que exigem. Como resultado, todos os dados que são mantidos em memória física não podem ser armazenados por mais tempo. Agora, o espaço de troca entra em jogo e uma seleção de páginas de memória é transferida para o espaço de troca para a memória física livre.
Segundo, nem todos os dados são necessários na memória ao mesmo tempo. É por isso que as páginas de memória menos usadas estão estacionadas no espaço de troca para ter o máximo de memória física gratuita possível. Este método é nomeado o algoritmo de substituição de página menos usado recentemente (LRU) [1].
Tipos de troca
O espaço de troca existe em duas variantes. A versão 1 é uma partição de disco separada que é a chamada partição de troca. Não há arquivos armazenados nessa partição, mas informações de memória (despejos). Simplesmente, a versão 2 é um arquivo em um disco que reside no sistema de arquivos em seu harddisk. A versão 1 é muito comum em sistemas UNIX/Linux, BSD e OS X, enquanto a versão 2 existe em sistemas que executam o Microsoft Windows. A versão 2 também pode ser ativada nos sistemas UNIX/Linux (veja abaixo).
Para ver qual espaço de troca está ativo no seu sistema UNIX/Linux executa o seguinte comando em um terminal:
$ /sbin /swapon -s
Tamanho do tipo de arquivo usada prioridade usada
/Dev/DM -3 Partição 16150524 316484 -1
$
Como alternativa, você pode enviar uma solicitação ao sistema de arquivos PROC e executar o comando gato /proc /swaps
Este sistema Linux tem uma partição de troca com um tamanho de cerca de 15 GB, no qual mais de 300m estão em uso, atualmente. A coluna prioritária mostra qual espaço de troca para usar primeiro. O valor padrão é -1. Quanto maior o valor da prioridade, quanto mais cedo esse espaço de troca é levado em consideração. A opção -s é a versão curta de -Summary. Esta opção está descontinuada e é recomendável usar a opção -Show da seguinte maneira: em vez disso:
$ /SBIN /SWAPON --SHOW = Nome, Tipo, Tamanho, Usado, Prio
Tamanho do tipo de nome usado PRIO
/dev/dm -3 partição 15,4g 307,1m -1
$
A opção -Show aceita uma lista de valores que representam os cabeçalhos da coluna. Para obter uma ordem de saída específica, escolha os cabeçalhos da coluna desejados e sua sequência.
Tamanho de swap
Como regra geral, o tamanho do espaço de troca, é recomendável ser o dobro do que o sistema tem memória física. Lembre-se disso para configurações de uso geral e máquinas de mesa. Para servidores Unix/Linux com muito mais memória física, você pode diminuir o tamanho do espaço de troca para 50% da RAM. Os laptops que podem hibernar precisam ser um pouco maiores que a memória física.
Instalação
Para uma partição de troca, é recomendável pensar no espaço de troca logo desde o início da divisão do disco em partições únicas ou para deixar espaço de disco não utilizado suficiente para usá -lo mais tarde, eventualmente. Geralmente, durante a configuração dos discos para serem usados, a rotina de configuração pergunta sobre o tamanho do espaço de troca. Como exemplo, no Debian GNU/Linux, isso parece o seguinte:
Como mencionado acima, desde que você tenha espaço para novas partições em seu harddisk, você pode criar e incluir partições de troca com o uso de comandos como fdisk e swapon.
Como alternativa, o espaço de troca também pode ser ativado posteriormente como um arquivo de troca. O Linux suporta dessa maneira para que você possa criar, prepará -lo e montá -lo de maneira semelhante à de uma partição de troca. A vantagem dessa maneira é que você não precisa repartição de um disco para adicionar espaço de troca adicional.
Como exemplo, criamos um arquivo chamado /swapfile com um tamanho de 512m e permitimos isso como espaço de troca adicional. Primeiro, com a ajuda do comando dd, criamos um arquivo vazio. Segundo, o MKSWAP usa este arquivo para transformá -lo em estilo de troca. Você pode notar que o conteúdo do arquivo é tratado como uma partição e um UUID correspondente é atribuído. Terceiro, habilitamos isso usando Swapon. Finalmente, o comando Swapon -Show exibe duas entradas de troca - uma partição e o arquivo recém -criado.
# dd if =/dev/zero de =/swapfile bs = 1024 contagem = 524288Para usar este arquivo de troca no tempo de inicialização, adicione, como administrador, a seguinte linha para o arquivo /etc/fstab:
Desativando um espaço de troca
Menos, mas não duram, há um comando para desativar o arquivo de troca, novamente. O comando é chamado Troque
. Requer um único parâmetro que indique o dispositivo de swap para ser desativado. Este comando desativa o arquivo de troca ativado anteriormente:
Também, Troque
pode trabalhar com o uuid de um sistema de arquivos. Fazer Troque
Aja dessa maneira, use a opção -você
seguido pelo Uuid do sistema de arquivos de acordo. Caso seja necessário desativar todos os espaços de troca de uma vez a opção -a
(Opção longa -atida) é bastante útil. O comando completo é Swapoff -a.
Ajustando o ecossistema de troca
Começando com o Linux Kernel Lankeases 2.6 Um novo valor foi introduzido. Isso é armazenado na variável /proc/sys/vm/swappiness
e controla o peso relativo dado à troca da memória de tempo de execução, em vez de soltar as páginas de memória do cache da página do sistema [2]. O valor padrão é de 60 (por cento da memória livre antes de ativar a troca). Quanto menor o valor, menos troca é usada e mais páginas de memória são mantidas em memória física.
Para definir o valor, defina temporariamente o valor no sistema de arquivos /proc de seguinte:
# eco 10>/proc/sys/vm/swappiness
Como alternativa, você pode usar o sysctl
Comando o seguinte:
# sysctl -w vm.Swappiness = 10
Para definir o valor, adicione permanentemente a seguinte linha ao arquivo /etc/sysctl.conf:
vm.Swappiness = 10
Swap ainda está atualizado?
Você pode perguntar por que lidamos com esse tópico. Os computadores modernos têm memória física suficiente - então, por que temos que nos preocupar com isso? Existem algumas razões pelas quais essa tecnologia vale mais do que um pensamento.
Lembre -se de que você permanece com sua máquina por um tempo, mas pode atualizar o software que você usa de tempos em tempos. Atualmente, tanto o hardware quanto o software se adequam um ao outro. No futuro, ele pode mudar, e você precisa de mais memória do que agora. A menos que atualize ou compra um novo hardware, uma partição de troca pode economizar um pouco de dinheiro.
Você pode ter ouvido falar de um recurso chamado Suspender to Disk, ou Hibernate Mode [3]. Sua máquina vai dormir. Antes de fazer isso, precisa armazenar seu estado atual em algum lugar. Agora o espaço de troca entra em jogo e atua como um contêiner para manter esses dados. Assim que a máquina acordar a próxima vez que todos os dados forem lidos no espaço de troca, carregados na memória, e você pode continuar trabalhando onde você parou antes.
O sistema, se tiver apenas um dispositivo de armazenamento permanente, terá que ler e escrever seus arquivos enquanto trocou no mesmo dispositivo. Você verá uma grande melhoria se tiver um segundo dispositivo e puder separar o dispositivo de troca de acessos de arquivo conflitantes.
O arquivo de troca deve passar os dados pelo sistema de arquivos. Isso acrescenta uma camada de indireção, para fazer parecer que existe um espaço de endereço lógico contíguo para o kernel trabalhar. Isso adiciona sobrecarga de memória adicional e ciclos de CPU. Você obterá melhores resultados usando uma partição de troca bruta.
Ainda hoje o conhecimento sobre a troca é essencial. Este tópico faz parte do conhecimento necessário para passar no Certificado do Instituto Profissional Linux Nível 1 (Lpic 1). A maioria dos exames contém uma ou duas perguntas sobre este tópico.
O espaço de troca ajuda seu sistema Linux (kernel) a organizar rapidamente a memória se houver necessidade. Para ser aberto com você, o espaço de troca não é absolutamente necessário, caso seu sistema tenha toneladas de RAM. Em caso de emergências, ajuda seu sistema a sobreviver. É por isso que eu nunca deixaria o caminho de uma configuração tradicional sem espaço de troca.
A combinação de swap e ssd é discutida de maneira controversa, porque o número de gravações de disco em um SSD é bastante limitado. Os arquivos de troca e temporários são criados para escrever muitos dados. Por outro lado, os SSDs modernos têm espaço adicional mais do que suficiente (7%) para lidar com falhas do setor. Para estar do lado seguro: se possível. Seu sistema Linux irá agradecer por esta decisão.
Para evitar colocar o espaço de troca em seu SSD, você pode usar o Zram, em vez disso [5,6]. Esta é a troca virtual compactada em RAM, também chamada ZSWAP. Esta tecnologia permite um dispositivo de bloco compactado na memória. Assim que não houver mais páginas de memória deixada na memória são transferidas para este dispositivo de bloco. Isso resulta em menos uso de troca e ajuda a prolongar a vida de seu disco rígido também.
O autor gostaria de agradecer a Mandy Neumeyer e Gerold Ruprecht pelo apoio ao preparar este artigo.