Czytałem wczoraj coś podobnego do tego dotyczącego OSX i jego kompresji systemu plików - w zasadzie odpowiedź obraca się wokół tego, co chcesz skompresować - w tym przykładzie mówi o danych „FAT”; struktury plików, właściwości, metadane itp., które razem przechowywane mogą być skompresowane w celu zaoszczędzenia miejsca i odczytane do procesora szybciej niż szukanie w całym miejscu, aby znaleźć dane dla każdego pliku ...
Ale kompresja to nie tylko oszczędność miejsca na dysku. Jest to również klasyczny przykład wymiany cykli procesora w celu zmniejszenia opóźnień we / wy i przepustowości. W ciągu ostatnich kilku dziesięcioleci wydajność procesora poprawiła się (a zasoby obliczeniowe były obfite - więcej o tym później) w znacznie szybszym tempie niż wydajność dysku. Współczesne czasy wyszukiwania dysku twardego i opóźnienia rotacji są nadal mierzone w milisekundach. W ciągu jednej milisekundy procesor 2 GHz przechodzi dwa miliony cykli. A potem, oczywiście, należy wziąć pod uwagę faktyczny czas przesyłania danych.
To prawda, że kilka poziomów buforowania w całym systemie operacyjnym i sprzęcie może znacznie ukryć te opóźnienia. Ale te bity muszą w pewnym momencie zejść z dysku, aby wypełnić te pamięci podręczne. Kompresja oznacza, że trzeba przesłać mniej bitów. Biorąc pod uwagę niemal komiczny nadmiar zasobów procesora na nowoczesnym wielordzeniowym komputerze Mac w normalnym użyciu, całkowity czas potrzebny do przesłania skompresowanego ładunku z dysku i użycia procesora do dekompresji jego zawartości do pamięci będzie zwykle znacznie krótszy niż czas przesłanie danych w nieskompresowanej formie zajęłoby
To tłumaczy potencjalne korzyści z wydajności związane z przesyłaniem mniejszej ilości danych, ale użycie rozszerzonych atrybutów do przechowywania zawartości plików może faktycznie przyspieszyć. Wszystko to ma związek z lokalizacją danych.
Jeśli jest coś, co spowalnia dysk twardy bardziej niż przenoszenie dużej ilości danych, przesuwa on głowy z jednej części dysku do drugiej. Każdy ruch oznacza czas, w którym głowa zacznie się poruszać, a następnie zatrzyma się, a następnie upewni się, że jest prawidłowo ustawiona nad pożądanym miejscem, a następnie poczekaj, aż wirujący dysk umieści pod nim żądane bity. To są prawdziwe, fizyczne, ruchome części i to niesamowite, że tańczą tak szybko i efektywnie, jak to robią, ale fizyka ma swoje granice. Te ruchy są prawdziwymi zabójcami wydajności dla pamięci rotacyjnej, takiej jak dyski twarde.
Format woluminu HFS + przechowuje wszystkie informacje o plikach - metadanych - w dwóch podstawowych lokalizacjach na dysku: w pliku katalogu, w którym przechowywane są daty plików, uprawnienia, własność i wiele innych rzeczy, oraz w pliku atrybutów, w którym przechowywane są „nazwane widelce” . ”
Rozszerzone atrybuty w HFS + są implementowane jako nazwane widelce w pliku atrybutów. Jednak w przeciwieństwie do widelców zasobów, które mogą być bardzo duże (do maksymalnego rozmiaru pliku obsługiwanego przez system plików), rozszerzone atrybuty w HFS + są przechowywane „w linii” w pliku atrybutów. W praktyce oznacza to ograniczenie około 128 bajtów na atrybut. Ale oznacza to również, że głowica dysku nie musi odbywać podróży do innej części dysku, aby uzyskać rzeczywiste dane.
Jak można sobie wyobrazić, bloki dyskowe, które składają się na pliki Katalogu i Atrybutów, są często dostępne, a zatem bardziej niż zwykle znajdują się gdzieś w pamięci podręcznej. Wszystko to spiskuje, aby całkowite przechowywanie pliku, w tym zarówno jego metadanych w danych, w katalogu o strukturze drzewa B, jak i plikach atrybutów, ogólnie zwyciężyło. Nawet ośmiobajtowy ładunek balonów do 25 bajtów nie stanowi problemu, o ile nadal jest mniejszy niż rozmiar bloku alokacji dla normalnego przechowywania danych i dopóki wszystko mieści się w węźle B-drzewa w pliku atrybutów, który system operacyjny i tak musi czytać w całości.
Istnieją inne znaczące wkłady w zmniejszenie zajmowanego miejsca przez system Snow Leopard (np. Usuwanie niepotrzebnych lokalizacji i plików „designable.nib”), ale kompresja HFS + jest zdecydowanie najbardziej interesująca technicznie.