Como o TRIM Enabler funciona?

8

Recentemente, comprei um terceiro SSD (OCZ) e usei o Trim Enabler para habilitar o TRIM. Percebi que algumas atualizações de software podem desativar o TRIM e, portanto, tenho curiosidade em saber como o TRIM Enabler funciona.

  • Ele substitui um KEXT padrão por um personalizado para suportar o TRIM ou simplesmente alterna algumas configurações do PLIST?
  • De qualquer maneira, existe um arquivo que, quando bloqueado, pode garantir que o TRIM permaneça ativado (sem consequências negativas)?
Alexander - Restabelecer Monica
fonte

Respostas:

9

O Trim Enabler corrige o seguinte arquivo Kext

/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

que verifica se o ssd é um SSD de terceiros ou da marca Apple:

Visualização IOAHCI hex / ascii

você também pode ativar o recorte manualmente procurando todas as ocorrências 'Apple' no arquivo e corrigindo-as em um editor hexadecimal ou via terminal:

##1. Backup old file
    $sudo cp /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage
/System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage.original

##2. Patch the file to enable TRIM support
    $sudo perl -pi -e 's|(\x52\x6F\x74\x61\x74\x69\x6F\x6E\x61\x6C\x00{1,20})[^\x00]{9}(\x00{1,20}\x51)|$1\x00\x00\x00\x00\x00\x00\x00\x00\x00$2|sg' /System/Library/Extensions/IOAHCIFamily.kext/Contents/PlugIns/IOAHCIBlockStorage.kext/Contents/MacOS/IOAHCIBlockStorage

##3. Clear the system kernel extension cache

   $sudo kextcache -system-prelinked-kernel

   $sudo kextcache -system-caches
Chrisii
fonte
11
Como você encontra essas coisas ?! Se eu executar o TRIM Enabler para "corrigir" meu arquivo IOAHCIBlockStorage e depois bloqueá-lo (com privilégios de administrador), sofreria efeitos adversos? Claro que não seria capaz de suportar os novos SSDs PCIe (que meu MacBook nem sequer possui), mas impediria que futuras atualizações revertessem o patch?
Alexander - Restabelecer Monica
meu melhor palpite: mesmo que você impeça a edição do arquivo .. o atualizador apenas substitui o arquivo completamente por um novo. Você precisaria remover a permissão de gravação para root da pasta completa. Nesse caso específico, presumo que o instalador falhará, pois não pode gravar na pasta. Na minha opinião, não vale a pena. Basta iniciar o Trim Enabler após uma atualização e reaplicar o patch.
Chrisii
@ Chrisisii, você sabe se isso vai funcionar em Yosemite? Isso muda a assinatura do kext?
thepen
@thepen Ainda não testei, mas posso dizer com certeza que a modificação do arquivo alterará a assinatura kext e, portanto, para torná-lo ainda mais funcional, você deverá primeiro desativar a verificação da assinatura kext (mais informações podem ser encontradas aqui cindori .org / trim-enabler-and-yosemite )
Chrisii
2

A única informação que posso encontrar sobre isso é de uma entrada de FAQ / postagem no blog

R: O Trim Enabler corrige um driver OSX Trim nativo, que funciona em segundo plano, mesmo quando o aplicativo é fechado ou removido. Esse patch é redefinido nas atualizações do sistema; portanto, pode ser uma boa ideia manter o aplicativo.

Megan Walker
fonte
O caminho geralmente é redefinido nas atualizações quando a Apple decide atualizar as extensões mencionadas do kernel, por exemplo, para suportar novas unidades ssd (Pensando nos novos ppcie ssds anunciados na WWDC).
Chrisii
2

Os SSDs da OCZ usam um controlador Sandforce que cria uma coleta de lixo em primeiro plano que atrasa a necessidade de apagar blocos, reduzindo, mas não removendo, a necessidade de suporte ao TRIM. A guarnição pode ser considerada uma ajuda para a coleta de lixo.

Aparar VS Coleta de Lixo

Para uma breve explicação, a memória flash é organizada em grupos de páginas onde os dados podem ser gravados. Depois que uma página é escrita, ela não pode ser reescrita até ser apagada. Mas uma página só pode ser apagada dentro de um grupo de tipicamente 128 páginas chamado bloco. A complexidade da gravação de dados realmente começa a aumentar no caso de gravações aleatórias substituindo dados gravados anteriormente. Gravações aleatórias colocam os novos dados em páginas anteriormente apagadas em outros lugares, salpicando um bloco de dados válidos com "patches de dados inválidos". Para gravar novos dados nesses patches, o bloco inteiro - todas as 128 páginas - deve ser apagado. Mas primeiro todas as páginas circundantes com dados válidos devem ser lidas e depois reescritas em páginas em branco. O bloco recém-apagado de páginas em branco está pronto para salvar novos dados.

[…] Todos os SSDs baseados em NAND Flash usam GC. Alguns usam o GC em primeiro plano e outros o GC em segundo plano ou em tempo ocioso. A diferença entre eles é abordada no meu blog http://blog.lsi.com/dont-let-ssds-throw-away-your-gold/ . Em termos simples, a coleta de lixo em segundo plano aumentará a amplificação de gravação (WA) e desgastará o SSD mais cedo. O GC em primeiro plano é mais difícil de alcançar e acredito que apenas o controlador SandForce pode fazer isso hoje

[…] O TRIM é benéfico para todos os SSDs, independentemente do tipo de coleta de lixo usada. Eu falo sobre como o TRIM surgiu e por que é necessário no meu blog http://blog.lsi.com/did-you-know-hdds-do-not-have-a-del… . O comando TRIM é enviado pelo sistema operacional ao SSD para identificar quais páginas de dados podem ser ignoradas durante a coleta de lixo. O SSD não pode dizer quais arquivos foram excluídos até que o sistema operacional use os mesmos setores para armazenar novos arquivos, mas nesse momento o SSD já desperdiçou ciclos ao coletar dados inválidos, mas conhecidos pelo SS.

Você sabia que os HDDs não têm um comando Excluir? É por isso que os SSDs precisam do TRIM

Mantendo o SSD TRIM Há alguns anos, o setor de armazenamento se uniu e desenvolveu uma solução entre o SO e o SSD criando um novo comando SATA chamado TRIM. Não é um comando que força o SSD a apagar imediatamente os dados, como algumas pessoas acreditam. Na verdade, o comando TRIM pode ser visto como uma mensagem do SO sobre quais endereços usados ​​anteriormente no SSD não estão mais mantendo dados válidos. O SSD pega esses endereços e atualiza seu próprio mapa interno de sua memória flash para marcar esses locais como inválidos. Com essas informações, o SSD não move mais os dados inválidos durante o processo do GC, eliminando o tempo perdido reescrevendo dados inválidos para novas páginas flash. Também reduz o número de ciclos de gravação no flash, aumentando a resistência dos SSDs.

a caneta
fonte