Wyznanie wydajności

Dyskusja o wydajności macierzy toczy się zwykle w atmosferze podobnej do sporów religijnych, dlatego w interesie każdego klienta leży zdobycie wiedzy, pozwalającej odróżniać argumenty od dogmatów.

Dyskusja o wydajności macierzy toczy się zwykle w atmosferze podobnej do sporów religijnych, dlatego w interesie każdego klienta leży zdobycie wiedzy, pozwalającej odróżniać argumenty od dogmatów.

Wydajność to pojęcie, które w środowisku producentów i integratorów systemów pamięci masowych wywołuje szczególnie silne emocje i być może właśnie przez to jest źródłem największej liczby nieporozumień. Każdy z dostawców zbudował wokół wydajności własną wersję prawdy jedynie słusznej, w ramach której pielęgnuje określone dogmaty.

Według jednych wydajność macierzy jest pochodną wydajności jej poszczególnych elementów składowych: dysków, pamięci buforowej, układów sterujących (kontrolerów) oraz wszystkich traktów komunikacyjnych między nimi. Niektórzy twierdzą, że najważniejsza z punktu widzenia wydajności macierzy jest sprawność algorytmiczna oprogramowania zarządzającego, w tym zwłaszcza oprogramowania sterującego przepływem danych w pamięci buforowej. Jeszcze w innym podejściu wydajność zależy przede wszystkim od dostosowania konfiguracji macierzy do wymagań aplikacji, które z niej korzystają.

Postronny obserwator może odnieść wrażenie, że zażarta dyskusja między wyznawcami poszczególnych "teorii wydajności" jest merytorycznie uzasadniona - każda ze stron podnosi przecież sensownie brzmiące argumenty. I tak, i nie zarazem. Obstawanie przy swojej wersji nie jest bowiem zwykle - jak starają się to przedstawiać producenci - wynikiem dokonania przez nich wolnego wyboru. Dawno temu inżynierowie wymyślili pewną konstrukcję, do której programiści stworzyli, a testerzy i klienci przetestowali oprogramowanie działające w określony sposób. Zasadnicza zmiana architektury, nawet jeżeli wydaje się oczywista, nie jest więc w praktyce możliwa w krótkim okresie. Kto bowiem zainwestuje pieniądze i czas w stworzenie od podstaw nowego oprogramowania firmware?

Mając to na uwadze, argumentów przytoczonych podczas prezentacji systemów pamięci masowych trzeba słuchać nadzwyczaj uważnie. Kwestie naprawdę istotne dla wydajności są w nich bardzo często pomijane, a to, co jest przedstawiane jako recepta na wydajność, nie zawsze ma z nią wiele wspólnego. Prezentujemy przegląd rzeczywistych problemów związanych z wydajnością systemów dyskowych pamięci masowych. Zapoznanie się z nimi powinno ułatwić zadawanie dostawcom właściwych pytań.

Rozgrzeszanie dysku

Producenci macierzy przyznają, że na poziomie dysków konkurencja między nimi praktycznie nie istnieje - większość dysków SCSI i Fibre Channel pochodzi od Hitachi, która przejęła też niedawno dział dysków twardych IBM, Seagate, Maxtor i Fujitsu. Często stosowanym wyznacznikiem wydajności dysków jest liczba megabajtów przypadających na głowicę: im większa pojemność dysku, tym mniejsza jego wydajność. Rzeczywiste różnice w wydajności dysków o tych samych pojemnościach są niewielkie.

Współczesny dysk działający z prędkością 10 tys. obr./min może przeciętnie obsłużyć nieco ponad 100 żądań I/O. Przy 15 tys. obrotów liczba ta wzrasta do ok. 150-180. W obu przypadkach chodzi o żądania typu losowego. Można więc przyjąć, że wydajność podsystemu dyskowego macierzy jest wprost proporcjonalna do liczby możliwych do zainstalowania w niej dysków. Zasada ta wymaga pewnego uściślenia: z punktu widzenia aplikacji istotne jest to, ile dysków fizycznych obsługuje jej dane. Inaczej mówiąc, chodzi o to, ile dysków fizycznych można połączyć w grupę tworzącą jeden wolumen logiczny, który można następnie udostępnić aplikacji. Im więcej, tym lepsza wydajność - oczywiście przy założeniu, że wąskim gardłem nie są obsługujący dyski kontroler ani jego połączenie z dyskami.

Idąc tym tropem, producenci macierzy wirtualnych, takich jak HP EVA 5000/3000 czy StorageTek V2X, umożliwiają równomierne "rozrzucanie" danych pojedynczej aplikacji pomiędzy wszystkie dyski macierzy. Podobny, choć nie identyczny, efekt można jednak uzyskać na "zwykłej" macierzy. Na poziomie systemu operacyjnego trzeba w tym celu stworzyć partycję systemu plików obejmującą wiele udostępnianych przez macierz dysków logicznych. Które z obu tych rozwiązań jest wydajniejsze? Warto sprawdzić doświadczalnie.

Dla wydajności pojedynczego dysku rodzaj zastosowanego w nim interfejsu - SCSI lub FC-AL - nie ma większego znaczenia. Wydajność interfejsu jest bowiem wielokrotnie większa od ilości danych, jaką głowice są w stanie odczytać, a tym bardziej zapisać na talerzach dysku w jednostce czasu. Rodzaj złącza może mieć co najwyżej wpływ na możliwości skalowania pojemności macierzy: równoległa magistrala SCSI pozwala na podłączenie do 15 urządzeń, natomiast stosowana w dyskach technologia FC-AL (Fibre Channel-Arbitrated Loop), do 127. Trzeba jednak zaznaczyć, że pojedynczy kontroler macierzowy może równolegle obsługiwać wiele magistral/pętli.

W przypadku dysków Fibre Channel istotny dla wydajności może być jedynie fakt, czy oba porty FC dysku FC-AL działają jednocześnie (tryb Active-Active), czy też jedna z nich włącza się dopiero w razie awarii pierwszej (Active-Passive). W przypadku dużej liczby losowych żądań I/O dwie aktywne pętle umożliwią jednoczesny odczyt/zapis do 2 urządzeń jednocześnie.

Dla wydajności podsystemu dyskowego macierzy istotny jest nie tyle rodzaj interfejsu, co fakt, ile dysków rzeczywiście działa w ramach pojedynczej magistrali SCSI czy pętli FC. Im jest ich mniej, tym mniejszy tłok i opóźnienia na łączach. Liczba dysków wpięta do jednej magistrali/pętli nie jest jednak zupełnie dowolna - zależy (a w każdym razie powinna) od rodzaju aplikacji. Gdy dane są rozproszone i w efekcie bloki danych przesyłane przez jedno urządzenie są relatywnie małe, np. w przypadku baz danych, do jednej magistrali/pętli można podłączyć więcej dysków. W przypadku przewagi transmisji strumieniowych, charakterystycznych dla dużych plików, wypełnienie pasma magistrali/pętli następuje przy mniejszej liczbie dysków.

Regułę tę można też wyrazić inaczej. Im więcej operacji I/O musi obsłużyć pojedyncza magistrala/pętla, tym mniej danych (liczonych w MB) można w niej przesłać w jednostce czasu - relatywnie duża część pasma jest bowiem pochłaniana przez nagłówki protokołu i informacje o błędach, a ponadto występuje więcej opóźnień w synchronizacji. Im mniej operacji I/O, tym udział danych w transmisji może być większy.

Niezależnie od powyższego w zastosowaniach bazodanowych naczelną zasadą z punktu widzenia wydajności jest ujednolicenie wielkości bloku danych w całym łańcuchu transmisyjnym: macierz - system plików - sieć FC - serwer. W ten sposób zapobiega się - kosztownym wydajnościowo - zakleszczeniom bazy.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200