troca partição vs arquivo por desempenho?

54

O que é melhor para o desempenho? Uma partição mais próxima do interior do disco terá tempos de acesso mais lentos, e devemos esperar que a unidade alterne entre o sistema operacional e as partições de troca.

Por outro lado, uma partição swap ignora todo o sistema de arquivos, permitindo gravações no disco diretamente, o que pode ser mais rápido que um arquivo.

Qual é o desempenho do trade off?

Quanto ter um swapfile de tamanho fixo faz diferença?

É um caso que vai ser mais tempo para mudar para a partição swap, mas o desempenho será melhor enquanto ele estiver ligado a partição swap que se tivesse sido um arquivo de swap?

    
por Bill Gray 15.06.2009 / 05:06

6 respostas

22

Na verdade, não faz muita diferença, desde que você não use arquivos esparsos .

A criação de um arquivo "normal" com o dd alocará o arquivo (se possível) em uma única execução, enquanto a criação de um arquivo esparso dirá que você tem um arquivo de 10GB, mas não usa todo o espaço . Eu não tenho certeza se o mkswap não irá alocar o espaço de qualquer maneira, mas tipicamente um arquivo de swap irá crescer com o tempo e assim não alocará um setor contínuo (como parte do disco), mas alocará blocos conforme necessário fragmentação ao longo do tempo (claro, dependendo do seu uso do disco)

Internamente, o kernel do Linux acessará os blocos subjacentes de um arquivo de swap mais ou menos diretamente - não consigo encontrar o link agora mesmo, o que acontece sob o capô, você tem que confiar em mim, a menos que alguém encontre algo mais oficial. Tudo o que posso fazer agora é:

tudo isso se aplica apenas à linha 2.6 dos kernels Linux.

Se você quer um ótimo desempenho (e o que é isso, realmente? ... trocar é lento, ponto final. Aumentar RAM para que você não troque por melhor performance), você iria querer use uma partição.

    
por 15.06.2009 / 10:28
21
  1. Nos discos rígidos, a taxa de transferência e a procura geralmente são mais rápidas no início do disco, porque esses dados são armazenados mais próximos da área externa do disco, que tem mais setores por cilindro. Assim, criar a troca no início do disco pode melhorar o desempenho.

  2. Para um kernel 2.6 do Linux, não há diferença de desempenho entre uma partição de swap e um arquivo de troca não fragmentado . Quando uma partição swap / arquivo é habilitada por swapon, o kernel 2.6 descobre qual disco o arquivo de swap está armazenado em , de modo que quando chega a hora de trocar, ele não precisa lidar com o sistema de arquivos.

Assim, se o swapfile não estiver fragmentado, é exatamente como se houvesse uma partição swap no mesmo local. Ou dito de outra forma, você obteria um desempenho idêntico se usasse uma partição de troca bruta, ou formatasse-a com um sistema de arquivos e então criasse um arquivo de swap que preenchesse todo o espaço, pois de qualquer forma nesse disco há uma região contígua usada para troca. que o kernel usa diretamente.

Portanto, se alguém cria o arquivo de troca quando o sistema de arquivos é novo (garantindo assim que não esteja fragmentado e no início do volume), o desempenho deve ser idêntico ao de ter uma partição de troca antes do volume. Além disso, se alguém criou o swapfile, digamos, no meio do volume, com arquivos em ambos os lados, pode-se obter um melhor desempenho, já que há menos necessidade de trocar.

No Linux, se o swapfile é criado sem fragmentação e nunca expandido, ele não pode se tornar fragmentado, pelo menos com sistemas de arquivos normais como ext3 / 4. Ele sempre usará os mesmos blocos de disco, que são contíguos.

Concluo que o único benefício de uma partição de permuta dedicada é garantir a desfragmentação quando você precisar expandi-la; se sua troca nunca for expandida, um arquivo criado em um novo sistema de arquivos não requer uma partição extra.

    
por 07.06.2011 / 15:48
3

Acho que no estágio em que estamos agora, a menos que você esteja executando um laptop com uma configuração que grava os dados no swap quando ele suspende / dorme, o swap deve ser considerado "último recurso". Sua melhor aposta é colocar RAM suficiente em uma caixa para que ela nunca vá para o disco.

Dito isto, uma partição é provavelmente a melhor maneira, em termos de desempenho, embora um arquivo seja mais flexível. Apenas certifique-se de que esteja em um eixo de 7200+ RPM.

    
por 15.06.2009 / 05:21
3

Esta é uma questão interessante e tenho lido muito sobre o mesmo. Geralmente, uma partição swap é melhor que um arquivo devido ao sistema de arquivos subjacente. Mas se você está sempre precisando aumentar o tamanho do seu swap, então o arquivo é uma opção melhor. Até o kernel 2.4 foi considerado que uma partição swap é mais rápida do que um arquivo, mas agora com as melhorias do kernel 2.6, as performances são quase as mesmas.

Algo que encontrei na internet também.

link

e

link

    
por 15.06.2009 / 05:27
2

O pensamento em nosso trabalho é que, como um arquivo Swap pode se tornar fragmentado, e a fragmentação diminui o acesso ao swap, uma partição é uma abordagem melhor. É claro que definir um swapfile de tamanho estático faz praticamente a mesma coisa, mas isso parece subjetivamente mais puro.

Esta abordagem é o único caminho verdadeiro? Provavelmente não, pois a prática foi estabelecida há cerca de 10 anos. A única grande mudança na tecnologia de drives nos anos intermediários é a complexidade dos controladores RAID que usamos (ainda não somos ricos o suficiente para os SSDs). O aumento nos tamanhos de unidade significa que a partição swap que criamos está mais próxima do início da unidade do que quando os drives de 18 GB estavam sendo entregues padrão, portanto as velocidades de troca são ainda mais rápidas do que eram nos tempos antigos.

Naturalmente, nos nossos sistemas Windows baseados em ESX, a posição do arquivo de troca é completamente, completamente discutível. Há tantas camadas de virtualização entre o arquivo de troca e os discos físicos que simplesmente não importam. Mas nós o mantemos em uma partição separada porque é apenas o padrão.

    
por 15.06.2009 / 07:12
0

O uso de um arquivo de permuta pode usar um pouco de memória extra para a conversão de arquivo para memória. Estamos falando de menos de 1MB de memória por troca de 1GB. O cache do sistema de arquivos NÃO armazena em cache os dados trocados, apenas os dados organizacionais, que devem ser a maioria dos requisitos extras de memória.

Além disso, duvido que você perca algum desempenho razoável, exceto, talvez, uma vez em 1000 vezes uma única busca adicional.

Fato engraçado, usar o zswap junto com um arquivo de swap dinamicamente expansivo resulta em uma aceleração impressionante nas operações de swap a custos muito pequenos enquanto não é usado.

    
por 14.07.2015 / 18:22