Czy w nowoczesnym systemie kompresja dysku zapewni lepszą ogólną wydajność?


10

Wydaje się, że wzrost procesora przez pewien czas przewyższał prędkość dysku. Zakładając komputer stacjonarny lub laptop z nowoczesnym dwurdzeniowym procesorem Intel / AMD i pojedynczym przeciętnym dyskiem SATA, czy kompresja na większości dysków zapewni lepszą ogólną wydajność? Zasadniczo czy zmniejszona przepustowość dysku więcej niż rekompensuje zwiększone obciążenie procesora? Jestem pewien, że prawdziwą odpowiedzią jest „to zależy od tego, co robisz”. Zadając to pytanie, mam nadzieję, że ktoś, kto zrobił tę fajkę, poda kilka przykładów lub pułapek.


zdefiniować wydajność? Jak zwiększenie prędkości czy zwiększenie przestrzeni? Prawdopodobnie nie zauważysz żadnego wzrostu prędkości, ale zdecydowanie przydadzą Ci się bajty zapasowe! :-p
Christopher Lightfoot

Odpowiedzi:


9

Tak, kompresja dysku może zapewnić lepszą wydajność w określonych okolicznościach:

  • Twoja aplikacja jest związana z przepustowością dysku: nowoczesne procesory i algorytmy (de) kompresji mogą działać z dużo większą przepustowością niż nowoczesne dyski w przypadku długich transferów. Jakakolwiek redukcja ilości danych przenoszonych do lub z talerzy dyskowych jest w tej sytuacji wygrana
  • Zajmuje mniej czasu (de) kompresji danych, które trafiają na talerze dyskowe, niż różnica w czasach transferu, a ty masz wolne cykle procesora

Istnieje powód, dla którego zarówno ZFS, jak i Btrfs, oba najnowsze projekty typu green-field, zawierają przepisy dotyczące kompresji.

W przestrzeni HPC, gdy aplikacja kontroluje z pamięci na dysk, procesory często nie robią nic pożytecznego. Ten czas jest zasadniczo czystym kosztem. Każde użycie procesorów w celu skrócenia tego czasu przynosi korzyści.


Dyski do strumieniowego przesyłania multimediów są prawdopodobnie jedynym miejscem, w którym występują korzyści, ponieważ wielkość porcji jest wystarczająco duża. Standardowe dyski systemu operacyjnego * zawsze będą działać.
Ryaner

5
Przesyłanie strumieniowe multimediów nie jest atrakcyjną aplikacją do kompresji na poziomie systemu pamięci masowej. Dane powinny być już skompresowane w znacznie lepszym formacie specyficznym dla aplikacji.
Phil Miller

5

Kompresja dysku nigdy nie zapewni lepszej wydajności.

To może nie dać ci prawie żadnej kary z powodu szybkich nowoczesnych procesorów, ale to zupełnie inna sprawa.

Zakładasz, że konieczność przesłania mniejszej ilości danych z / na dysk może poprawić wydajność; ale transfery dużych zbiorów danych prawie nigdy nie są wąskim gardłem we / wy: prawdziwymi wąskimi gardłami są czas i opóźnienie wyszukiwania. Nowoczesne dyski twarde są bardzo szybkie w ciągłym transferze danych z dużymi plikami, co spowalnia ich niewielki transfer z całego dysku.

Niektóre scenariusze:

  • Pliki medialne. Zazwyczaj są one już skompresowane (JPEG, MPEG, MP3), więc kompresja ich na poziomie systemu plików wcale nie pomoże; zamiast tego pogorszy to sytuację, ponieważ zasoby procesora są już potrzebne do ich kodowania / dekodowania.
  • Bazy danych. Są one zwykle odczytywane / zapisywane w małych losowych seriach, więc ich kompresja nie tylko nie przyniesie żadnych korzyści, ale także obniży wydajność, ponieważ DBMS nie może poprawnie zidentyfikować, gdzie na dysku znajdują się dane fizyczne, do których ma dostęp. przechowywane.
  • Plik strony. Jest to zwykle dość duże, ale system operacyjny musi zająć się bardzo małymi porcjami danych i musi to zrobić bardzo dokładnie („Odczytaj 4K pod fizycznym adresem X”); kompresja zwykle nie jest możliwa, ale nawet gdyby tak było, byłaby to kompletna strata czasu i zasobów: zapewniłaby prawie zerową kompresję, ze względu na charakter tego pliku jako „pełne losowe dane”.

1
Czy przesyłanie mniejszej ilości danych z dysku nie przynosi żadnych korzyści?
kbyrd

Edytowano, by odpowiedzieć na to :-)
Massimo,

3
nigdy nie jest słowem bardzo wąskim. Surowa przepustowość z dysku i przez magistralę pci jest często wąskim gardłem przy niektórych pracach, które wykonuję. Kompresja może bardzo pomóc w wydajności, zwłaszcza jeśli podjęto już kroki w celu usunięcia niektórych innych wąskich gardeł, o których wspominasz
JamesRyan

1
Wahałbym się też powiedzieć „nigdy”. Mogą istnieć scenariusze, w których przepustowość dysku stanowi wąskie gardło. Ale prawdopodobnie masz rację, że nie jest to typowy przypadek.
sleske

2
Disk I / O jest prawie zawsze wąskim gardłem w bazach danych
Nick Kavadias,

3

Istnieją specyficzne sytuacje, które robią to już na poziomie aplikacji, takie jak kompresja wideo - system, który nie potrafił wystarczająco szybko odczytać surowego wideo w jakości HD z dsk, może zamiast tego odczytać skompresowane informacje i rozszerzyć je za pomocą pamięci i mocy procesora . Nie ma powodu, dla którego nie mogłoby tak być również w innych, specyficznych sytuacjach, ale można to najlepiej rozwiązać na poziomie aplikacji, aby zastosowane metody kompresji były zoptymalizowane do ich celu.

Należy pamiętać, że narzut związany z wydajnością dekompresji jest opłacalny, jeśli cała przepustowość wzrośnie, więc pomysł nie powinien zostać odrzucony z ręki - nie sądzę, że jesteśmy gotowi na kompresję zwiększającą wydajność ogólnego przeznaczenia, ale jest to teoretycznie możliwe w celu wymiany zasobu, którego masz nadmiar (procesor i pamięć) w celu zwiększenia w innym miejscu (łączna ilość danych odczytanych z dysku twardego)


3

Odpowiedziałeś na swoje pytanie! to zależy jest rzeczywiście odpowiedzią.

Najlepsze uogólnienie, jakie mogę zrobić, to:

Jeśli masz aplikację bazy danych ograniczoną do odczytu dysku , to tak! wydajność jest lepsza.

Nie sądzę, że tak jest w przypadku większości działań wykonywanych na komputerze stacjonarnym / laptopie.

W mojej domenie (SQL Server) wiem, że bazy danych raportujące przy dużym obciążeniu odczytu mogą uzyskać lepszą wydajność, jeśli zastosowana zostanie kompresja. Wiem, że to samo dotyczy mysql.

Microsoft ma białą księgę na temat swoich funkcji kompresji w SQL Server 2008. Nie do końca lekka lektura, chyba że masz DBA, ale oto jeden wykres, który obsługuje moje uogólnienie:

alternatywny tekst


0

Prędkości procesorów były zawsze wyższe niż prędkości dysków. IMHO, kompresja zwiększy narzut, a tym samym obniży wydajność.


ale to zależy od tego, co robisz :-)
Josh

Jak to? Zwiększony narzut to zwiększony narzut. Nie możesz kupować pieniędzy, wydając pieniądze (chyba że są to fałszywe pieniądze, ale to inna historia).
Mark Henderson

Funkcja kompresji i dekompresji plików, niezależnie od tego, czy są one mniejsze ze względu na kompresję, wprowadzi narzut wydajności. Kiedy plik jest odczytywany z dysku do pamięci, należy go rozpakować. Zapisany z pamięci na dysk musi zostać skompresowany.
joeqwerty

3
ale jeśli Twój procesor nic nie robi, a przepustowość dysku jest wąskim gardłem, Twój procesor wykona więcej pracy, ale ogólna wydajność wzrośnie. To naprawdę zależy od tego, jakie dane odzyskujesz i co z nimi robisz.
JamesRyan

0

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 ...

W każdym razie, warto przeczytać, jeśli myślisz o takich rzeczach :-p

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.

Od: http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/3


Myślałem o tym wcześniej, ale ten dokładny artykuł skłonił mnie do opublikowania tego pytania.
kbyrd

lol. Ciekawe :-p
Christopher Lightfoot

0

Kompresja Microsoft Disk jest brzydka STARY. Nie jest prawie porównywalny w stosunkach z metodą ARJ z lat 80-tych. Ale nawet kompresja Microsoft CAN zapewnia lepszą wydajność na bardzo wolnych dyskach twardych (laptopach). Zwłaszcza jeśli jest wystarczająca ilość pamięci RAM do buforowania zapisu i zapobiegania nadmiernemu zapisowi.

Proces zapisu jest słabym punktem każdej metody kompresji z dostępem swobodnym.

Tak więc, jeśli chcesz dysk skompresowany, lepiej przejdź do jakiegoś systemu Linux.

Kompresja dysku jest również bardzo odpowiednia dla napędów RAM, nie trzeba wyjaśniać dlaczego.


1
Czy możesz dodać jakieś dane pomocnicze, może porównanie wydajności rozwiązań opartych na systemie Windows i Linux?
psarossy

Tak, jeśli chcesz podbić 3,5-letni wątek, lepiej przynieś nowe, twarde fakty.
MDMarra

-1

Niepewnie. Kompresja i dekompresja wymaga czegoś więcej niż tylko dysku i procesora; w szczególności będzie dużo transferu danych do iz pamięci (oprócz standardowego narzutu transferu bez kompresji), co naprawdę zaszkodzi pod względem błędów stron.


-1

Krótko mówiąc, nie, prawdopodobnie nie zyskasz na wydajności.

Kompresja poprawi wydajność pamięci, ale znacznie obniży szybkość procesora. Prawdopodobnie sprowadza się to do tego, jaki typ plików będzie dekompresowany. Jeśli masz do czynienia tylko ze słowami, programami Excel i innymi podstawowymi typami plików, śmiało je skompresuj. Jeśli poszczególne pliki są nieporęczne, poświęcisz więcej czasu.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.