Qual é o objetivo de vários arquivos de troca

29

Durante a instalação da maioria das distribuições (se não todas) do linux, o disco rígido é particionado para incluir uma partição swap por padrão.

É possível alterar esse comportamento com swapon -p priority

De acordo com as páginas de manual, a prioridade é:

PRIORITY
Each swap area has a priority, either high or low. The default priority is 
low. Within the low-priority areas, newer areas are even lower priority 
than older areas.
All priorities set with swapflags are high-priority, higher than default. 
They may have any non-negative value chosen by the caller. Higher numbers 
mean higher priority.

Swap pages are allocated from areas in priority order, highest priority 
first. For areas with different priorities, a higher-priority area is 
exhausted before using a lower-priority area. If two or more areas have the 
same priority, and it is the highest priority available, pages are 
allocated on a round-robin basis between them.

As of Linux 1.3.6, the kernel usually follows these rules, but there are 
exceptions

Por que você precisaria de mais de um arquivo de troca?
É prática comum para administradores de sistema configurar mais de uma troca?

spuder
fonte

Respostas:

48

Existem muitas razões para ter várias áreas de troca (elas não precisam ser arquivos), mesmo que você tenha apenas um eixo.

20-20 retrospectiva: você implantou uma máquina com uma única área de troca e acabou percebendo que não era suficiente. Você não pode reimplementar a máquina à vontade, mas pode fazer outra área de troca (provavelmente um arquivo) até refazer o layout da partição se tornar uma opção.

Redimensionando ou movendo áreas de troca: Você não pode redimensionar áreas de troca (como mencionado por Evan Teitelman ). E você não pode simplesmente swapoffcriar uma nova área de troca e, a swaponmenos que tenha RAM suficiente: swapoffdeseja mover todas as páginas trocadas para a RAM antes de deixar a área de troca. Assim, você cria uma área de troca temporária, swapoffa original, aguarde até que todas as páginas sejam movidas da área de troca antiga para a temporária, redimensione a partição de troca original e mkswap, em seguida, swapona redimensionada e swapoffa temporária. As páginas trocadas são copiadas da área de troca temporária para a área redimensionada e pronto. Se você estiver movendo áreas de swap, nem precisará de uma área temporária. mkswapo novo swapon, entãoswapoff o antigo e tudo mudou.

Troca rápida louca: os discos modernos empregam gravação de zona de bits . A primeira zona do disco é a mais rápida. Você pode medir o disco e criar uma partição que cubra exatamente a primeira zona mais rápida da unidade. Isso pode ser menor que o tamanho de troca pretendido. Então você adiciona várias partições em vários discos, usando a mesma técnica.

Troca rápida louca, a sequência: alternativamente, depois de saber onde estão as zonas mais rápidas dos discos, você pode criar áreas de troca de alta prioridade na primeira zona, áreas de troca de prioridade mais baixa na segunda zona, etc. Dessa forma, seu sistema de troca sabe automaticamente para carregar o equilíbrio em todas as zonas rápidas do disco, prefira as zonas mais rápidas e use as zonas mais lentas como uma área de estouro quando necessário.

Balanceamento de carga simétrico: em um sistema bem construído com muitos eixos (como um servidor), eu gosto de ter várias partições de swap ocupando o início de cada disco (para aproveitar a gravação de bits de zona ). Todos eles têm prioridades idênticas, portanto o kernel fará o balanceamento de carga da troca. Um eixo pode fornecer 100 MB / s, mas a troca por todos os eixos pode gerar um múltiplo disso. (ingênuo falando)

Balanceamento de carga com reconhecimento de gargalos: na prática, existem outros gargalos em vigor. Assim, por exemplo, um servidor de 16 discos pode ter quatro portas SATA de 6 Gbps, cada uma com um multiplicador de quatro portas e quatro discos compartilhando a largura de banda. Se você souber disso, poderá organizar seus espaços de troca para que o Disco 1 nas Portas 1 a 4 tenha a maior prioridade, os segundos discos nas portas 1 a 4 tenham a segunda maior prioridade, etc. Isso carregará a troca de saldo, mas não sobrecarregará multiplicadores de portas.

Trocando dispositivos com desempenho diferente: (como mencionado por Luke) se o seu sistema não for um servidor totalmente novo e crescer organicamente ao longo dos anos, poderá haver dispositivos de bloco significativamente mais rápidos que outros. Você deseja trocar primeiro pelo dispositivo mais rápido, depois pelo próximo mais rápido etc.

Considerações sobre tamanho: (cortesia de David Kohen ) talvez colocar toda a sua troca em uma unidade deixe alguns shows gratuitos na unidade (isso soa como um cenário de 2001, mas há muitos dispositivos antigos ou incorporados onde isso pode ser um problema). Divida-o em todas as unidades e, além de todos os outros benefícios acima, você obtém melhor uso do espaço em disco por unidade. Uma coisa é perder alguns shows por eixo e outra perder 300 shows em um disco.

Emergências: você tem exatamente 96 horas para enviar sua tese de doutorado, e seu último experimento (aquele que provavelmente lhe renderá o prêmio Nobel, além de letras mistas e funky depois do seu nome) está sugando a memória a taxas impressionantes. Você está quase sem troca. Você cria um arquivo de troca com uma prioridade menor que a prioridade do seu principal dispositivo de troca - o kernel o utilizará como espaço de troca excedente. Você pode até instalar o swapd para fazer isso automaticamente, para que você tenha bastante espaço de troca para aqueles grandes emacse executados em LaTeX.

Swapping across different media: Linux can't swap to character devices, but there are lots of different media, physical and virtual: SSDs (note: you probably don't want to swap on SSDs), dozens of shockingly different types of spinning hard disks, floppies (yes, you can swap on a floppy — you can always shoot yourself in the foot with Unix), DRBD volumes, iSCSI, LVM volumes, LUKS encrypted partitions, etc (including surreal, mind-boggling layered combinations of these — swap on LUKS on LVM on a parallel port ZIP drive over iSCSI over IEEE802.3ad aggregated Ethernet? No problem, you filthy pervert). These are niche scenarios, and are meant to support niche requirements.

Alexios
fonte
Obrigado, não estou familiarizado com a gravação de bits da zona. Estou curioso eu mudar a minha partição swap à mendicância do prato, para que eu tenha aberto uma nova pergunta sobre superuser.com
spuder
1
Eu acrescentaria uma razão histórica de que, no passado, o uso de um disco como dispositivo de troca às vezes não era eficaz, pois usava muito espaço e tornava o restante do disco inútil ou menos útil, além de dividir o espaço de troca em vários dispositivos forneceu um compromisso entre um grande espaço de troca e a quantidade de espaço contíguo disponível no disco.
27413 Didi Kohen
Esse ainda é o caso. Além disso, convém que sua troca ocupe a zona mais rápida do disco, e somente isso. O que só lhe dá muito espaço para brincar por eixo. Embora esse não tenha sido o caso historicamente, porque os HDDs com zonas são uma coisa 'nova'. (minha versão de 'histórico' é quando a memória foi medido em palavras)
Alexios
+1 para "você sempre pode atirar no próprio pé com Unix" :-)
DUzun
3

Várias unidades de disco de velocidade. Você pode configurar o mais rápido a ser usado primeiro, seguido pelos mais lentos, se esse falhar.

Luke
fonte
3

Você não pode expandir arquivos de troca (pelo menos, tanto quanto eu saiba) ou trocar partições enquanto elas estiverem em uso. Se você está prestes a preencher sua área de troca disponível, pode ser necessário criar arquivos de troca adicionais.

Além disso, se um sistema precisar de 4 GB de espaço de troca e tiver duas unidades de armazenamento de 2 GB, deverá usar pelo menos duas áreas de troca.


fonte