Otimização de SSD

6

Eu sei que isso tem sido discutido muitas vezes, mas há muitas opiniões diferentes na Internet que otimizações são boas para SSDs (e se devem ser usadas). Além disso, a tecnologia avançou e alguns dos conselhos podem ter se tornado obsoletos.

Sobreprovisionamento e espaço livre no FS

Isso parece ainda ser relevante, mas de acordo com o usuário cabirum na discussão ycombinator :

you don't have to over-provision unpartitioned space AND preserve 20% of partitioned free space. It's one or another, the point is to have enough free space for proper wear leveling.

por outro lado, não há menção sobre isso em ArchWiki ou neste post por namhuy . O que mais easylinux aconselha ambos!

Opções de montagem Noatime, nodirtime e relatime

namhuy aconselha , ArchWiki e easylinux aconselha apenas noatime e usuário andmarios em ycombinator diz:

noatime: this is old, use relatime.

que está de acordo com o comportamento padrão das páginas de manual desde o Linux 2.6.30.

Aparar

Esta é provavelmente a maior bagunça

Limitar as ações de gravação

ArchWiki , namhuy , easylinux aconselha a mover o cache do navegador para a RAM. Geralmente, isso é discordado do ycombinator .

Agendador de IO

Parece que todos concordam em usar Deadline ou NOOP em vez do padrão CFQ . Mas não está claro para mim quando usar Deadline e quando NOOP (é dependente do sistema de arquivos / SSD?).

Trocar

Não faz muito tempo, alguém me disse para desativar o swap completamente (wow: D). De acordo com ArchWiki , namhuy e easylinux defina vm.swappiness=1 .

Estou um pouco confuso com todas essas opções. Até agora eu usei apenas alguns deles. Eu deixei de mencionar algo importante? Alguma distro Linux faz algumas das opções acima automaticamente?

Referências:

por NefariousOctopus 17.11.2015 / 00:52

1 resposta

1

Re superprovisionamento - tudo que você precisa garantir é que o próprio SSD tenha um número suficiente de blocos que saiba que não estão sendo usados. Não é importante saber se, porque: a) eles não são usados porque estão no espaço não particionado, por isso nunca foram gravados pelo sistema operacional, ou b) eles tiveram zeros escritos para eles e o firmware do SSD implementa a hueristics para detectar que e considerá-los não alocados, ou c) eles foram alvo de uma operação DISCARD ('trim'). Qualquer (e apenas) um desses é altamente recomendável.

Re noatime: Acho que pessoalmente não me importo com os últimos tempos de acesso dos arquivos, e nenhum software que eu uso parece se importar também. Então eu montei tudo com 'noatime'. Existem vagas referências na Internet sobre programas sem nome que funcionam mal se 'noatime' for usado, mas eu nunca vi esse programa.

Recortar / descartar: Você deve executar o fstrim periodicamente. Não importa como é invocado, mas importa com que frequência é invocado. Executá-lo em cada inicialização, por exemplo, usando rc.local, provavelmente seria excessivo, a menos que você reinicialize muito raramente ou use, libere espaço em disco com muita frequência ou ambos. Não monte com 'descarte', porque ele faz com que o kernel execute operações TRIM perto dos blocos de tempo que são liberados, o que é provavelmente um momento em que você provavelmente notará o aumento da latência que causa. É menos provável que você perceba ou se preocupe com um cron job sendo executado (digamos) às 3h. Imagino que uma vez por mês seria mais do que suficiente para uma carga de trabalho média no desktop ou uma vez por semana para uma carga de trabalho de área de trabalho com muita gravação. Eu não sei de nenhuma maneira perfeita de saber quando um fstrim é aconselhável, porque os detalhes da alocação de blocos são geralmente escondidos pelo firmware da unidade. Se você observar uma desaceleração significativa do desempenho da unidade, um fstrim seria uma boa coisa para tentar. Se você não notar uma desaceleração, provavelmente não precisará fazer nada.

Re E / S scheduler - faça um benchmark das cargas de trabalho de que você gosta. Não há substituto para evidências empíricas.

Re swap - RAM é bastante barato hoje em dia, então eu e meu empregador compramos grandes quantidades dele - pelo menos 16GB por máquina que eu construo para uso doméstico, e pelo menos 256GB nos servidores no trabalho. Para todas as cargas de trabalho em todas as máquinas que encontro em casa e no trabalho, tudo se encaixa confortavelmente na RAM, com muito espaço de sobra para o cache. Assim, desative o swap em casa e no trabalho. Além disso, o uso de swap causaria uma diminuição no desempenho, o que seria inaceitável para mim e para nossos usuários, e que, portanto, faria com que eu ou meu empregador comprássemos ainda mais RAM com urgência. Então, eu nunca quero usar swap - ele tenta esconder um problema de falta de RAM que eu prefiro resolver. Não posso comentar sua posição. Eu imagino que poderia ser semelhante.

Por último, desativo, ou mesmo desinstalo, muitos serviços que são instalados e habilitados por padrão nas distribuições populares do Linux. Isso economiza alguma memória virtual, mas talvez mais importante, "endurece" a máquina contra ataques. Se isso for feito religiosamente, deve haver pouco ou nada sem valor na RAM que possa ser trocado para o disco sem sacrificar o desempenho.

    
por 24.11.2015 / 05:07