Roszady w kolejce, czyli dyski ATA z technologią NCQ

23 grudnia 2004 0 przez Artur Wyrzykowski

Funkcjonalność dysków i macierzy Serial ATA coraz bardziej zbliża się do dysków SCSI – istnieje możliwość tworzenia nadmiarowych ścieżek, wymiany na gorąco, a ostatnio w tanich napędach pojawiła się także funkcja kolejkowania komend (NCQ). Taki sposób poprawniania wydajności jest na pewno tańszy niż zwiększanie prędkości obrotowej lub gęstości zapisu. Skuteczność NCQ testujemy na dyskach Seagate z serii Barracuda 7200.7 oraz kilku kontrolerów Serial ATA – także w konfiguracjach macierzowych.

Funkcja kolejkowania komend (NCQ – Native Command Queuing) pojawiła się w wybranych modelach Seagate Barracuda 7200.7, a także całych seriach dysków Maxtor DiamondMax 10 i Barracuda 7200.8 SATA. Jeszcze wcześniej kolejkowanie komend do swoich napędów wprowadził Western Digital, jest ono wykorzystywane w Raptorach, ale nie jest to NCQ, tylko TCQ – Tagged Command Queuing. NCQ jest pewnym wycinkiem TCQ, jednak dla użytkownika skutki stosowania obu technologii są bardzo podobne.

Kolejkowanie NCQ wykorzystane w napędach Seagate i Maxtor odpowiada za buforowanie przez dysk maksymalnie 32 komend, a następnie ich wykonanie w optymalnej kolejności. Nie chodzi więc o sam fakt kolejkowania, lecz o możliwość zmiany kolejności komend, które trafiły do kolejki, by czas ich wykonania był jak najkrótszy. Dzięki temu można zaoszczędzić sporo czasu na wyszukiwanie danych przez głowicę, a także znacznie zmniejszyć opóźnienia związane z obrotem talerzy dysku. Najlepszym przykładem jest poniższy rysunek – dysk z lewej strony potrzebuje dwóch obrotów talerzy, by wykonać komendy 1, 2, 3 i 4. Natomiast dysk po prawej może to wykonać podczas jednego obrotu – tylko dzięki temu, że komendy 2 i 3 wykonuje w zmienionej kolejności. A jeden obrót talerza to ok. 8 ms – właśnie stąd bierze się oszczędność czasu i lepsza wydajność.



Od teorii ważniejsze są praktyczne skutki, które sprawdziliśmy na dyskach Seagate Barracuda 7200.7 – modelach oznaczonych jako ST3160827AS, o pojemności 160 GB i obsługujących kolejkowanie komend. Porównaliśmy je ze starszymi napędami Barracuda 7200.7 – modelami ST3160023AS, również o pojemności 160 GB, ale bez obsługi kolejkowania. Dyski mają zmieniony firmware, ale fizycznie są to te same urządzenia – świadczy o tym choćby fakt, że na egzemplarzach testowych po prostu przekreślono flamastrem stary symbol oraz umieszczono nowy.


 

Bohaterem naszego testu są także kontrolery Serial ATA z funkcją RAID. Przede wszystkim jest to mostek południowy Intel ICH6R, który bez wątpienia obsługuje NCQ (na razie jako jedyny kontroler dostępny w sprzedaży) i może pozwolić na osiągnięcie dobrych wyników w testach. Na zdjęciu kontroler jest pod radiatorem, na płycie Gigabyte GA-8I925X-G, którą wykorzystaliśmy w teście.



W testach wykorzystaliśmy również niedrogi kontroler Welland ST-114, choć w jego przypadku mieliśmy sprzeczne informacje co do obsługi NCQ. Jednak wykorzystuje on znany od dłuższego czasu układ SiI 3114, który na pewno takiej funkcji nie ma.

Kontroler Welland był wykorzystany na naszej starszej platformie testowej – płycie ABIT AT7-MAX2 z Athlonem XP 2700+. Instalowaliśmy go także w komputerze z wymienioną wyżej płytą Gigabyte GA-8I925X-G, co pozytywnie wpływało na część wyników, szczególnie tych dotyczących transferu danych, ale negatywnie na wszystkie pozostałe testy. Pozostaliśmy więc przy Athlonie XP i płycie ABIT.



Wyniki uzyskane na nowych kontrolerach i dyskach możemy porównać z naszymi wynikami poprzednich testów, przeprowadzonych na kontrolerze Adaptec Serial ATA RAID 1210SA (z układem SiI 3112 i specjalnym firmwarem Adapteca).




Jak ocenić NCQ?

Dysponując produktami obsługującymi NCQ i bez obsługi tej funkcji, można w przybliżeniu ocenić przydatność tej technologii, ale nigdy nie będzie to ocena dokładna. Pomiary można wykonać na kilka sposobów:

  • najlepszą metodą byłoby przetestowanie nowego zestawu obsługującego kolejkowanie komend, a następnie wyłączenie tej funkcji w dysku i powtórzenie testu. Różnica pomiędzy dwoma takimi testami wskazałaby dokładnie, jaki przyrost wydajności daje NCQ i czy warto zawracać sobie głowę takimi szczegółami podczas wyboru dysku. Niestety, nie ma narzędzia, które pozwoliłoby wyłączyć kolejkowanie komend w dysku, więc ten sposób testowania odpada,
  • drugi sposób to wykonanie dwóch serii pomiarów z wykorzystaniem jednego dysku obsługującego NCQ oraz dwóch kontrolerów: z obsługą i bez obsługi tej funkcji (np. SiI 3112 i ICH6R). Jednak wykorzystując różne kontrolery ryzykujemy to, że będą one różniły się nie tylko obsługą kolejkowania, lecz także innymi cechami, co zniekształci wyniki testu,
  • trzeci sposób przeprowadzenia testu to wykorzystanie jednego kontrolera obsługującego kolejkowanie komend, a także dwóch dysków: z obsługą i bez obsługi tek funkcji (np. różne wersje Seagate Barracuda 7200.7). Z kolei w tym przypadku można podejrzewać, że dyski różnią się nie tylko tą jedną funkcją, ale mają bardziej zmodyfikowany firmware, co także zniekształci wyniki testu,
  • metoda najbardziej zgodna z rzeczywistością (i z zaleceniami Seagate dotyczącymi testowania dysków) polega na testowaniu dysku obsługującego kolejkowanie komend wyłącznie z kontrolerami obsługującymi NCQ, by uzyskać najlepszy efekt. Taki zestaw można porównać z drugą parą produktów: nieco starszym dyskiem i kontrolerem bez obsługi NCQ.

My wykonalismy testy na kilka różnych sposobów, sprawdziliśmy nie tylko pojedyncze dyski, ale i konfiguracje macierzowe. Wszystkie testy wykonaliśmy za pomocą programu Iometer (wersja 2003.12.16) na dyskach bez partycji, a następnie za pomocą testu File-Copy na partycji NTFS znajdującej się w 1/3 obszaru dysku. Program HD Tach całkowicie pominęliśmy z trzech powodów – wykazywał bardzo zaniżoną szybkość zapisu, wyniki były mało powtarzalne, a dodatkowo test tego typu nie pozwala mocniej obciążyć dysków, a właśnie przy dużym obciążeniu kolejkowanie komend daje najlepsze efekty.

Podstawowe osiągi

Większość programów testujących sprawdza szybkość transferu danych oraz średni czas dostępu, my zmierzyliśmy te osiągi przy trzech różnych obciążeniach – kolejkach I/O o długości 1, 8 i 64 komend. Pierwszy i ostatni przypadek (czerwone i zielone słupki na wykresach) dotyczą bardzo małego i bardzo dużego obciążenia, czyli właściwie sytuacji teoretycznych, których nie spotkamy w przeciętnym komputerze PC. Największą uwagę należy zwrócić na słupki niebieskie, które reprezentują kolejkę o długości 8 komend, jaką może stworzyć np. uruchamiany system lub program.

Każda grupa słupków zawiera wyniki z pomiarów różnych kombinacji dysków i kontrolerów. Pierwszy słupek od góry to „stara” Barracuda podłączona do kontrolera Adaptec Serial ATA RAID 1210SA, niżej jest „nowa” Barracuda na tym samym kontrolerze, a następnie „nowa” Barracuda podłączona do kontrolera Welland ST-114 i Intel ICH6R. Oto pierwsze wyniki dotyczące sekwencyjnego zapisu i odczytu danych (tabele ze wszystkimi wynikami pomiarów znajdują się w pliku XLS):



Na razie widać tyle, że nowsze dyski Seagate dają większy przyrost wydajności niż zastosowanie kontrolerów z NCQ. Zmiana modelu ST3160023AS na model ST3160827AS powoduje wyraźny wzrost wydajności (o ok. 1 MB/s), natomiast różnice między kontrolerami Welland i Intel są pomijalnie małe, są spowodowane raczej odmienną platformą testową niż różnicami w wydajności samych kontrolerów. O tym, że przyrost wydajności nie jest spowodowany obecnością funkcji kolejkowania komend świadczy jeszcze fakt, że występuje on także przy najmniejszym obciążeniu dysków. Po prostu „nowe” Barracudy 7200.2 mają lepiej zoptymalizowany firmware.

Następny test mierzy średni czas dostępu do danych (albo jak kto woli – średni czas odpowiedzi). Dotyczy to przypadku, w którym głowica pracuje nad całą powierzchnią dysku, więc operacje mają charakter bardzo losowy. W tym przypadku kolejkowanie komend może dać znacznie większe korzyści.



Przy najmniejszym obciążeniu czas dostępu do danych nie skraca się. Jednak większe obciążenie powoduje, że do dysku dociera po kilka lub kilkanaście poleceń w jednym czasie i kolejka szybciej się zapełnia. Wykonywanie poszczególnych komend można trochę zoptymalizować, co pokazuje druga i trzecia seria pomiarów. Podczas odczytu średni czas odpowiedzi skraca się przynajmniej o kilkanaście milisekund, a szczególnie widać to w przypadku kontrolera Intela. Natomiast podczas zapisu bardzo dobre efekty daje nawet zamiana samego dysku i pozostanie przy kontrolerze bez obsługi NCQ.


Testy bardziej praktyczne

Iometer pozwala zmierzyć wydajność dysków podczas pracy z aplikacjami różnego typu, wbudowane testy obejmują bazy danych (OLTP), serwery WWW (Web Server), w których występuje tylko odczyt danych, a także serwery plików (File Server), w których występuje też zapis.

W teście File Server widać wyraźną poprawę wydajności nowej Barracudy w stosunku do starej, nawet gdy współpracuje ona z kontrolerem Adapteca nie obsługującym NCQ. Widać także, że zawsze dodatkowy wzrost wydajności może dać kontroler obsługujący NCQ, taki jak ICH6R. Przy najmniejszym obciążeniu wzrost wydajności jest bardzo mały, ale przy większym sięga 25 procent (w stosunku do kontrolera Adapteca) – to bardzo dużo. Niestety, kontroler Welland ST-114 nie zawsze przyczynia się do podniesienia wydajności.



W teście Web Server wykonywany jest tylko odczyt plików o różnej wielkości, więc wyniki są nieco inne. Przede wszystkim nie ma prawie żadnej różnicy pomiędzy dyskami, bo ST3160023AS oraz ST3160827AS podłączone do kontrolera Adapteca mają niemal taką samą wydajność. Natomiast niezły efekt daje wykorzystanie kontrolera ICH6R.



Trzeci rodzaj operacji symulowanych przez Iometer dotyczy transakcji OLTP (baz danych), przy czym bloki danych mają różną wielkość – 2, 4 lub 8 KB. W tym przypadku widać pewne podobieństwa do wyników testu File Server, bo test obejmuje operacje odczytu i zapisu, a znaczny na przyrost wydajności pozwala zarówno dysk, jak i sam kontroler.




Testy jeszcze bardziej praktyczne

Dysk Seagate Barracuda 7200.7 z obsługą NCQ, a także dostępne kontrolery sprawdziliśmy także w teście File-Copy, w którym pliki o różnej wielkości są zapisywane na dysk, odczytywane i kopiowane pomiędzy katalogami. Wyniki są bardzo różne w zależności od wielkości plików, niekiedy zastosowanie nowego dysku daje poprawę wydajności w stosunku do starszego, ale czasem też wykonanie takich prostych operacji może się wydłużyć. Bardzo różne efekty daje zastosowanie kontrolera Welland ST-114, za to kontroler zintegrowany z mostkiem ICH6R niemal w każdym przypadku oferował najlepszą wydajność. Jedynie w ostatnim teście (pliki „Windows”) zauważyliśmy przekłamanie podczas odczytu – test wykazał transfer na poziomie 700 MB/s, dzięki czemu odczyt całego katalogu był możliwy w niecałe 2 sekundy. Uwzględniamy ten wynik, bo był on powtarzalny. Jednak jasne jest, że w tym przypadku dane nie były odczytywane z dysku, tylko z bufora w pamięci RAM. Trudno powiedzieć dlaczego tak się stało i dlaczego akurat w tym jednym teście.




NCQ rozwija skrzydła

Choć celem naszego testu jest sprawdzenie wydajności pojedynczego dysku, chcielibyśmy także wspomnieć o zastosowaniach macierzowych. Jest to o tyle łatwe, że wszystkie kontrolery wykorzystane w teście miały więcej niż jeden kanał SATA, a my dysponowaliśmy więcej niż jednym dyskiem Barracuda 7200.7 z obsługą NCQ. Zwróciliśmy głównie uwagę na RAID 0, ponieważ w domowych warunkach takie konfiguracje mają większe znaczenie. Wyniki uzyskane na macierzach z „nowymi” Barracudami porównaliśmy z osiągami pojedynczego dysku. W tym teście już nie uwzględnialiśmy „starej” Barracudy 7200.7.

Wyniki nie pozostawiają żadnej wątpliwości – tylko kontroler Intela pozwolił na podwojenie wydajności RAID 0 w stosunku do pojedynczego dysku – zazwyczaj uzyskanie takich osiągów nie jest możliwe. Również ten kontroler pozwalał na skrócenie czasu dostępu do danych, a także dawał największą wydajność w testach File Server i Web Server. Jedynym odstępstwem od tej normy okazały się testy OLTP, w których macierz RAID 0 z kontrolerem Adapteca okazała się jeszcze szybsza, niż z kontrolerem Intela. Poniżej prezentujemy wybrane wyniki.



Wykorzystanie dysków obsługujących kolejkowanie komend do budowy macierzy RAID 0 daje jeszcze większe efekty w praktycznych zastosowaniach, co można sprawdzić za pomocą testu File-Copy. Na poniższych, przykładowych wykresach widać, że zmiana dysku na macierz tylko nieznacznie skraca czas zapisu i odczytu plików, natomiast zwiększa wydajność podczas operacji kopiowania. Macierz daje największy przyrost wydajności dopiero wtedy, gdy zastosuje się kontroler wbudowany w ICH6R.




Wnioski

Po krótkich testach okazuje się, że NCQ jest bardzo dobrym sposobem zwiększania wydajności dysków, jednak warunkiem jest też dobry kontroler Serial ATA. W odpowiedniej konfiguracji macierz składająca się z dwóch dysków może zapewnić odczyt i zapis danych z szybkością przekraczającą 110 MB/s, dzięki czemu tanie dyski ATA o prędkości obrotowej 7200 obr./min powoli zbliżają się do wydajności oferowanej przez dyski SCSI czy napędy takie jak Raptor.

Jednak użytkownik, których chciałby skorzystać z dobrodziejstwa nowych rozwiązań, natrafi na pewne problemy. Choć z łatwością kupi dyski oferujące NCQ, to trudniej będzie z kontrolerem. Nowe kontrolery Promise SATA II 150 TX2 Plus, SATA II 150TX4, FastTrak TX2200 i FastTrak TX4200 nie są jeszcze dostępne w Polsce (jednak pojawiły się już we wszystkich rosyjskich sklepach). To samo można powiedzieć o kontrolerach z układami Silicon Image SiI 3124-1 oraz 3124-2. Pewien zysk wydajności daje kontroler Welland ST-114, który wykorzystaliśmy w naszym teście, ale praktycznie jedynym konrolerem pozwalającym na wykorzystanie kolejkowania komend pozostaje mostek południowy Intel ICH6R (obecny na droższych płytach z chipsetem Intel 925X oraz 915P).

Posiadacze płyt z mostkiem ICH5R lub ICH6R mogą skorzystać z jeszcze jednej przydatnej funkcji, która nosi nazwę Intel Matrix RAID Storage Technology. To tajemniczo brzmiące rozwiązanie pozwala na utworzenie na dwóch dyskach więcej niż jednej macierzy – po prostu pojedyncza macierz nie musi zajmować całej przestrzeni dyskowej. Dzięki temu można jednocześnie stworzyć RAID 0 dla uzyskania wysokiej wydajności, a na pozostałej części dysku utworzyć RAID 1 i przechowywać tam ważne dane. Osoby obeznane z macierzami zapewne wiedzą, że takie rozwiązania były stosowane już od dawana w kontrolerach macierzowych SCSI oraz lepszych kontrolerach Serial ATA, tylko nikt wcześniej nie wpadł na pomysł, by nadać im taką szumna nazwę. Oczywiście sam fakt, że takie rozwiązanie pojawiło się w komputerach PC, jest ważnym wydarzeniem.

Niestety, pod adresem Intela musimy też skierować słowa krytyki, ponieważ firmie nie udało się opracować porządnego rozwiązania. Zazwyczaj możliwość konfiguracji macierzy z poziomu BIOS-u kontrolera pozwala uniezależnić macierz od systemu operacyjnego – jeśli istnieją sterowniki dla danego kontrolera i systemu operacyjnego, to macierz będzie działać. Tymczasem Intel przygotował rozwiązanie sprzętowo-programowe, w którym sterowniki dla chipsetu oraz konfiguracja macierzy w BIOS-ie kontrolera nie są wystarczające – w Windows nadal widoczne są dwa osobne dyski. Dopiero instalacja Intel Application Acceleratora dla Serial ATA RAID pozwala skorzystać z macierzy. Dodatkowo, BIOS kontrolera nie pozwala w ogóle na wykorzystanie funkcji Matrix RAID. Wkrótce się okaże, czy inni producenci kontrolerów zaproponują lepsze rozwiązania.











Zalety NCQWady NCQ

  • Wyraźnie większa wydajność dysków

  • Niski koszt realizacji rozwiązania


  • Funkcja musi być obsługiwana przez kontroler…

  • …ale słaba dostępność kontrolerów z obsługą tej funkcji



Do testów dostarczył:

Dyski Seagate Barracuda 7200.7 (160 GB):

Seagate, www.seagate.com

Cena: około 425 zł z VAT



Kontroler Adaptec Serial ATA RAID 1210SA:

Adaptec, www.adaptec.com

Cena: około 280 zł z VAT



Kontroler Welland ST-114:

Konsorcjum FEN, www.fen.pl

Cena: około 160 zł z VAT



Płyta główna Gigabyte GA-8I925X-G:

Gigabyte, www.gigabyte.pl

Cena: około 900 zł z VAT