artykuły

Kontrolery Serial ATA - przegląd

12
4 września 2003, 11:34 Artur Wyrzykowski
Procedura testowa

Proste kontrolery Serial ATA łatwo jest ocenić pod względem wydajności - nie są one konfigurowalne, a jedynym parametrem, jaki można zmieniać, jest oprogramowanie - firmware oraz sterowniki. Znacznie trudniej jest w przypadku kontrolerów macierzowych - można w nich włączać lub wyłączać bufor zapisu i odczytu, testować różne konfiguracje RAID, w przypadku RAID 0 modyfikować wielkość bloku danych. Kontrolery będą też inaczej pracować na magistrali PCI 66 MHz o szerokości 64 bitów, a inaczej na standardowej magistrali PCI.

Aby wyniki były przejrzyste, musieliśmy przyjąć kilka założeń. Po pierwsze, aby nie ograniczać wydajności kontrolerów, wszystkie montowaliśmy w długich slotach PCI. Po drugie - dla wszystkich kart ściągaliśmy najnowsze sterowniki, pozostawialiśmy jednak oryginalny BIOS. Po trzecie - pomiary przeprowadzaliśmy z włączonym buforem odczytu i zapisu, zresztą w prawie wszystkich kontrolerach jest on tak skonfigurowany domyślnie. Jedynie Promise FastTrak S150 TX4 ma wyłączony bufor odczytu i zapisu, również Adaptec Serial ATA RAID 2410SA podczas tworzenia macierzy (ale tylko z poziomu BIOS-u) proponuje włączenie buforów kontrolera, ale jednocześnie wyłączenie buforów na dysku. Wszystkie testy były wykonane w Windows XP, bez instalacji jakichkolwiek uaktualnień.

Testy były wykonywane głównie za pomocą programu Iometer, który pozwala na ocenę takich parametrów, jak szybkość zapisu danych, szybkość odczytu, czas odpowiedzi w określonej sytuacji, obciążenie procesora oraz dziesiątki innych. Zaletą tego programu jest duża powtarzalność wyników, zresztą każdy test można wykonywać tak długo, aż wynik się ustabilizuje. Plusem jest również to, że program ten nie wykonuje testów na sformatowanych partycjach, lecz na fizycznych dyskach widzianych przez system operacyjny, więc wyniki nie są zależne od systemu plików.

Podczas testów wykorzystaliśmy standardowe wzorce programu Iometer, tzn. losowe operacje odczytu i zapisu (OLTP), operacje zapisu i odczytu sekwencyjnego (Streaming Write, Streaming Read), a także dwa testy Web Server oraz File Server. Każdy z nich był wykorzystany po 5 razy, przy różnym obciążeniu kontrolera (różna długość kolejki komend - od 1 do 256). Mniejsze obciążenie odpowiada pracy w komputerze osobistym, w którym podsystem pamięci masowej otrzymuje w jednym czasie do wykonania nie więcej, niż kilkanaście operacji wejścia/wyjścia. Większe obciążenie odpowiada serwerom, z których zazwyczaj korzysta wielu użytkowników, a kolejka komend I/O jest nieco dłuższa -zawiera kilkadziesiąt komend do wykonania.

Niestety, Iometer to test syntetyczny, dlatego pomiary uzupełniliśmy o test File-Copy napisany przez ludzi z X-bit Labs. Jest to test zbliżony do rzeczywistości, polegający na zapisywaniu i odczytywaniu plików ze wskazanej partycji. Ten test przeprowadzaliśmy na partycjach NTFS. Niestety, on też ma wady, główną jest mała powtarzalność wyników pomiarów (różnice dochodzą nawet do 10 procent).

Pojedynczy dysk - ocena ogólna

Pierwszy test dotyczył sytuacji, gdy do kontrolera podłączony jest tylko jeden dysk twardy. W tabeli znajdują się pomiary szybkości transferu (w MB/s) dla różnych wzorców i różnego obciążenia. Pola oznaczone na czerwono zostaną omówione później. Pomiarów jest sporo i tabela jest mało czytelna, ale na wykresie widać więcej. Aby wszystkie wzorce miały w ogólnym wyniku jednakowy udział, wartości zostały znormalizowane (każdy pomiar mógł przyjąć maksymalną wartość 1), a następnie zsumowane. Ponieważ dla każdego kontrolera przeprowadziliśmy po 45 pomiarów (9 wzorców, 5 sposobów obciążenia), każdy z nich mógł uzyskać w sumie 45 punktów.



Jak widać, oba kontrolery Promise uzyskały bardzo dobry wynik, znacznie lepszy od kontrolerów z układami Silicon Image. W tyle zostały także najdroższe kontrolery macierzowe, choć w przypadku testu z jednym dyskiem twardym nie jest to szczególnie istotnie - podłączanie pojedynczego dysku do kontrolera takiego jak Adaptec Serial ATA RAID 2410SA czy 3Ware Escalade 8500 byłoby sporym marnotrawstwem. Kontrolery obsługujące poziom RAID 5 mają zaawansowaną logikę, która podczas obsługi pojedynczego dysku twardego bardziej przeszkadza, niż pomaga.

Na powyższym wykresie widać również, w jakich testach kontrolery Promise mają największą przewagę nad pozostałymi kartami. Są to paski: zielony i ciemnofioletowy, które odpowiadają zapisowi i odczytowi małych bloków danych, o wielkości 512 bajtów. W takim przypadku kontroler TX2 osiąga podczas odczytu transfer na poziomie 30 MB/s, TX4 - prawie 22 MB/s, a pozostałe kontrolery nie więcej niż 6,8 MB/s. Trzeba przyznać, że różnica jest ogromna. Również przy zapisie różnice pomiędzy kontrolerami są bardzo duże, w niewielkim stopniu zależą od obciążenia kontrolera (długości kolejki komend).

Po takim teście można dojść do wniosku, że oba kontrolery Promise są zdecydowanie najszybsze spośród testowanych. Niestety, duża wydajność to przypadek szczególny - występuje tylko przy małych blokach danych, przy zapisie i odczycie sekwencyjnym, czyli wtedy, gdy kontroler może wykonać bardzo dużo operacji wejścia-wyjścia. Aby dotrzeć do prawdy, konieczne jest bardziej szczegółowe potraktowanie tych kontrolerów. Okazuje się, że w miarę zwiększania wielkości bloków danych różnice pomiędzy poszczególnymi kontrolerami niemal całkiem się zacierają, wystarczy spojrzeć choćby do tabeli, na sekwencyjny zapis i odczyt bloków o wielkości 64 kB.

Druga sprawa to obciążenie procesora. Bardzo szybki zapis i odczyt małych bloków danych stwarza pewien problem. Jak nietrudno policzyć, podzielenie 30 MB danych na porcje o wielkości 512 bajtów tworzy ok. 60 tys. takich porcji. Taka ilość danych może być przetworzona w ciągu sekundy przez kontroler, ale powoduje bardzo duże obciążenie procesora, na granicy zawieszenia systemu. Jeśli zaczniemy wymuszać większą liczbę operacji przez wydłużenie kolejki I/O do 4, 16, 64 lub 256 komend, szybko dochodzi do zawieszenia komputera. Podczas testów doszło do takiej sytuacji, wpisywaliśmy wtedy wyniki pomiaru, jakie zostały uzyskane przy mniejszym obciążeniu - w tabeli są to pola oznaczone na czerwono. Jednak nie ma się co martwić - ten fragment testu Iometer jest ekstremalny, podczas normalnej pracy kontroler na pewno nie zawiesi nam komputera, bo nigdy nie będzie pracował z szybkością 60 tys. operacji I/O na sekundę.

Okazuje się również, że oba kontrolery Promise potrafią tak szybko czytać i zapisywać małe bloki danych tylko wtedy, gdy bufor zapisu pracuje w trybie write-back, czyli dane nie są w rzeczywistości zapisywane na dysk. Przełączenie bufora w tryb write-through (natychmiastowy zapis danych na dysk) lub całkowite jego wyłączenie powoduje zdecydowany spadek obciążenia procesora, ale jednocześnie nieznaczny spadek wydajności. Wykres porównuje ogólną wydajność kontrolerów z buforem write-back oraz bez bufora.



Jak widać na wykresie, oba kontrolery uzyskują ogólny wynik na poziomie ok. 36,5 punkta, a więc i tak lepszy, niż wszystkie pozostałe karty.

Pojedynczy dysk - transfer i czas odpowiedzi

Powyższe wykresy porównują wydajność w bardzo ogólny sposób. Przyjrzyjmy się jednak poszczególnym przypadkom. Oto sekwencyjny zapis i odczyt bloków o wielkości 64 kB, przy różnym obciążeniu kontrolera - pozwoli to oszacować maksymalną szybkość zapisu i odczytu danych. Pierwszy wykres przedstawia transfer przy kolejce I/O o długości 1 komendy, drugi - 64 komend.





Jak widać, proste kontrolery potrafią zapisać i odczytać dane z maksymalną szybkością dysku twardego, czyli ok. 60 MB/s. Kontrolery droższe, takie jak Adaptec 2410SA i 3Ware Escalade, odrabiają straty dopiero przy większym obciążeniu. Natomiast kontrolery Promise pracują tak samo wydajnie bez względu na obciążenie, warto jednak zwrócić uwagę, że ani przy małym, ani przy dużym obciążeniu nie są najszybsze.

Kolejna tabela prezentuje średni czas odpowiedzi dysku (w milisekundach) podczas wykonywania losowych operacji zapisu i odczytu. Poniższe wykresy prezentują wyniki z wykorzystaniem bloków danych o wielkości 2 kB. Przy małym obciążeniu, gdy do kolejki I/O trafia pojedyncza komenda, najszybciej to zadanie realizuje kontroler Promise TX2. Gdy obciążenie rośnie (na drugim wykresie kolejka 64 I/O), równie wydajny staje się kontroler Adaptec 1210SA.





Skoro w przypadku kontrolerów Promise włączenie lub wyłączenie buforowania może bardzo wpłynąć na ogólny wynik, to spójrzmy jeszcze, w jaki sposób wpływa to na transfer sekwencyjny i czas odpowiedzi podczas wykonywania operacji losowych.





Jak widać, wyłączenie bufora w kontrolerach Promise może przynieść pewnie korzyści. W przypadku sekwencyjnych operacji zapisu i odczytu wyraźnie wzrasta transfer danych, szczególnie w kontrolerze TX4. Trudno to wyjaśnić - obciążenie procesora w tym czasie nie jest takie duże (kilkanaście procent), a kontroler wykonuje jedynie kilkaset operacji I/O na sekundę i ma jeszcze bardzo duży zapas wydajności. Dodatkowo w kontrolerze TX4 nieznacznie skraca się czas odpowiedzi. Tak więc włączony bufor kontrolera FastTrak S150 TX4 może niekiedy przeszkadzać - być może dlatego w fabrycznej konfiguracji nie jest używany.

5