Jak działa TRIM Enabler?

8

Niedawno kupiłem dysk SSD trzeciej części (OCZ) i użyłem Trim Enabler, aby włączyć TRIM. Zauważyłem, że niektóre aktualizacje oprogramowania mogą powodować wyłączenie TRIM, dlatego byłem ciekawy, jak działa TRIM Enabler.

  • Czy zastępuje domyślny KEXT niestandardowym, który obsługuje TRIM, czy po prostu przełącza niektóre ustawienia PLIST?
  • Tak czy inaczej, czy istnieje plik, który po zablokowaniu może zapewnić, że TRIM pozostanie włączony (bez żadnych negatywnych konsekwencji)?
Alexander - Przywróć Monikę
źródło

Odpowiedzi:

9

Program Trim Enabler łata następujący plik Kext

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

który sprawdza, czy ssd jest dyskiem SSD innej firmy czy marką Apple:

Widok szesnastkowy / ascii IOAHCI

możesz również włączyć przycinanie ręcznie, wyszukując wszystkie wystąpienia „Apple” w pliku i łatając je w edytorze szesnastkowym lub za pomocą terminala:

##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
źródło
1
Jak w ogóle znajdziesz te rzeczy ?! Jeśli uruchomię TRIM Enabler, aby „załatać” mój plik IOAHCIBlockStorage, a następnie zablokować go (z uprawnieniami administratora), czy odczuwam jakieś negatywne skutki? Na pewno nie będę w stanie obsługiwać nowych dysków SSD PCIe (których mój MacBook nawet nie ma), ale czy uniemożliwiłoby to przyszłym aktualizacjom cofnięcie poprawki?
Alexander - Przywróć Monikę
moje najlepsze przypuszczenie: nawet jeśli zablokujesz plik przed edycją ... program aktualizujący po prostu całkowicie zastąpi plik nowym plikiem. Musiałbyś usunąć uprawnienia do zapisu dla roota z całego folderu. W tym konkretnym przypadku zakładam, że instalator zawiedzie, ponieważ nie może zapisać do folderu. Moim zdaniem nie warto tego robić. Po prostu uruchom Trim Enabler po aktualizacji i ponownie zastosuj łatkę.
Chrisii,
@Chrisii, czy wiesz, czy to zadziała w Yosemite? Czy to zmienia podpisywanie kext?
thepen
@thepen Jeszcze go nie testowałem, ale mogę z całą pewnością powiedzieć, że modyfikacja pliku zmieni sygnaturę kext, a zatem aby w ogóle działała, musisz najpierw wyłączyć weryfikację podpisywania kext (więcej informacji można znaleźć tutaj cindori .org / trim-enabler-and-yosemite )
Chrisii
2

Jedyne informacje, które mogę na ten temat znaleźć, pochodzą z wpisu w FAQ / wpisie na blogu

Odp .: Trim Enabler łata natywny sterownik przycinania OSX, który działa w tle, nawet gdy aplikacja jest zamknięta lub usunięta. Ta poprawka jest resetowana przy aktualizacjach systemu, więc dobrym pomysłem może być zachowanie aplikacji.

Megan Walker
źródło
Ścieżka jest zwykle resetowana przy aktualizacjach, gdy Apple decyduje się na aktualizację wspomnianych rozszerzeń jądra, na przykład w celu obsługi nowych napędów ssd (Myśląc o nowych ppcie ssds ogłoszonych na WWDC).
Chrisii,
2

Dyski SSD OCZ używają kontrolera Sandforce, który ma wbudowane zbieranie śmieci, które opóźnia potrzebę usuwania bloków, zmniejszając potrzebę obsługi TRIM, ale nie eliminując go. Przycinanie można uznać za pomoc w zbieraniu śmieci.

Przytnij VS Garbage Collection

Krótko mówiąc, pamięć flash jest zorganizowana w grupy stron, na których można zapisać dane. Po napisaniu strony nie można jej ponownie zapisać, dopóki nie zostanie skasowana. Ale stronę można usunąć tylko w grupie zwykle 128 stron zwanej blokiem. Złożoność zapisywania danych naprawdę zaczyna się nasilać w przypadku losowych zapisów zastępujących wcześniej zapisane dane. Losowe zapisy umieszczają nowe dane na wcześniej skasowanych stronach w innym miejscu, zasypując blok prawidłowych danych „łatami nieprawidłowych danych”. Aby zapisać nowe dane w tych łatkach, cały blok - wszystkie 128 stron - musi zostać skasowany. Ale najpierw należy przeczytać wszystkie otaczające strony z prawidłowymi danymi, a następnie przepisać je na puste strony. Nowo usunięty blok pustych stron jest gotowy do zapisania nowych danych.

[…] Wszystkie dyski SSD NAND Flash korzystają z GC. Niektóre używają GC na pierwszym planie, a inne GC działające w tle lub w czasie bezczynności. Różnica między nimi jest opisana na moim blogu http://blog.lsi.com/dont-let-ssds-throw-away-your-gold/ . Mówiąc najprościej, odśmiecanie w tle zwiększy wzmocnienie zapisu (WA) i szybciej zużyje dysk SSD. Trudno jest uzyskać GC na pierwszym planie i uważam, że tylko kontroler SandForce jest w stanie to zrobić dzisiaj

[…] TRIM jest korzystny dla wszystkich dysków SSD bez względu na to, jaki rodzaj śmieci jest używany. Mówię o tym, jak TRIM powstała i dlaczego jest to konieczne, w moim blogu http://blog.lsi.com/did-you-know-hdds-do-not-have-a-del .... Komenda TRIM jest wysyłana przez system operacyjny na dysk SSD w celu określenia, które strony danych można zignorować podczas wyrzucania elementów bezużytecznych. Dysk SSD nie może określić, które pliki zostały usunięte, dopóki system operacyjny nie używa tych samych sektorów do przechowywania nowych plików, ale do tego czasu dysk SSD zmarnował już cykle, wyrzucając śmieci, które były nieprawidłowe, ale znane SS.

Czy wiesz, że dyski twarde nie mają polecenia Usuń? Dlatego dyski SSD potrzebują TRIM

Zachowaj TRIM SSD Wiele lat temu branża pamięci masowej zebrała się i opracowała rozwiązanie między OS a SSD, tworząc nowe polecenie SATA o nazwie TRIM. Nie jest to polecenie, które zmusza dysk SSD do natychmiastowego usunięcia danych, jak wierzą niektórzy ludzie. W rzeczywistości polecenie TRIM można traktować jako wiadomość od systemu operacyjnego o tym, że wcześniej używane adresy na dysku SSD nie przechowują już prawidłowych danych. Dysk SSD pobiera te adresy i aktualizuje własną wewnętrzną mapę pamięci flash, aby oznaczyć te lokalizacje jako nieprawidłowe. Dzięki tym informacjom dysk SSD nie przenosi już tych nieprawidłowych danych podczas procesu GC, eliminując marnowanie czasu na przepisywanie nieprawidłowych danych na nowe strony flash. Zmniejsza to także liczbę cykli zapisu w pamięci flash, zwiększając wytrzymałość dysków SSD.

długopis
źródło