Pomysły na wydajność
- 25.11.2002
Pomimo starań dostawców sprzętu i oprogramowania, problem wydajności rozwiązań informatycznych wciąż pozostaje aktualny.
Pomimo starań dostawców sprzętu i oprogramowania, problem wydajności rozwiązań informatycznych wciąż pozostaje aktualny.
W codziennej praktyce poszukiwanie sposobu zwiększenia wydajności w systemach informatycznych sprowadza się do analizy kilku obszarów. Istotne są głównie: architektura systemu, sprawność serwera, wydajność bazy danych i wydajność pamięci masowych.
Niewydajne definicje
Czym jest wydajność? Pojęcie wydajności we współczesnych systemach informatycznych, nadużywane w języku broszur marketingowych, jest wieloznaczne. Mamy bowiem podawaną przez producentów wydajność nominalną, inaczej teoretyczną, i kontrastującą z nią wydajność rzeczywistą. Wydajność teoretyczna może służyć do określenia typu czy klasy rozwiązań. Ta druga natomiast określa rzeczywiste osiągi, które jednak dla poszczególnych produktów o tej samej wydajności teoretycznej mogą być zaskakująco różne.
Pochodną tego problemu jest wydajność rejestrowana w laboratorium w porównaniu z wydajnością możliwą do uzyskania w realnym środowisku przetwarzania danych. Najlepszym przykładem są testy wydajności transakcyjnej baz danych TPC - wyników notowanych podczas testów zazwyczaj nie da się powtórzyć w typowym środowisku biznesowym. Stąd wyniki testów laboratoryjnych, przeprowadzonych kosztem ogromnych nakładów finansowych, nie powinny być podstawą do wyboru konkretnego rozwiązania, ale spełniać jedynie rolę pomocniczą.
Wydajność transakcyjna, czyli określenie liczby transakcji możliwych do wykonania we wskazanym czasie, często bywa mylona z wydajnością obliczeniową, odnoszącą się do sprawności w wykonywaniu obliczeń arytmetycznych. Pierwsza zależy głównie od konstrukcji baz danych i wydajności podsystemu wejścia-wyjścia (I/O), druga zaś w największej mierze od zainstalowanej mocy obliczeniowej, głównie od liczby i mocy procesorów.
Rozróżnienia wymagają także pojęcia wydajności technicznej i biznesowej. Nie pomoże bowiem zastosowanie wieloprocesorowego serwera, jeżeli aplikacja nie potrafi wykorzystać jego zasobów i działa tak samo wolno jak na jednym procesorze lub nawet wolniej. Co z tego, że system operacyjny może szybko kopiować pliki, skoro kopiowanie danych między tabelami w bazie odbywa się z wykorzystaniem innych, wielokrotnie wolniejszych mechanizmów? Jaki jest pożytek z szybkiej macierzy, gdy aplikacja wymienia dane z bazą poprzez mało wydajny interfejs? O sprawności całego rozwiązania decyduje jego najsłabszy element.
Szybko, znaczy równolegle
Wydajność najczęściej kojarzy się z szybkością komputera. General-nie jest to założenie słuszne, ale z pewnymi zastrzeżeniami. Ten sam sprzęt można uznać za szybki lub wolny, w zależności od rodzaju zadań, jakie ma wykonywać. Przykładowo, komputery mainframe mają niezrównaną wydajność transakcyjną, jednak ich wydajność obliczeniowa w porównaniu z serwerami RISC, a nawet mocnymi serwerami PC, jest mizerna.
Teoretycznie wydajność komputerów rośnie wraz z przyrostem liczby procesorów. W powszechnie stosowanej architekturze SMP (Symmetric Multi Processing) zwiększa-nie liczby procesorów powoduje jednak coraz mniejszy przyrost mocy, równolegle bowiem rośnie problem synchronizacji między nimi i opóźnienia w dostępie do pamięci. W praktyce dodawanie kolejnego procesora zwiększa moc serwera jedynie o 30-40% nominalnej mocy nowego układu. W przypadku serwerów RISC współczynnik ten udaje się utrzymać jedynie przy liczbie procesorów nie większej niż osiem i to tylko pod pewnymi warunkami; w serwerach PC - co najwyżej przy czterech procesorach. Przy większej liczbie procesorów narzut wynikający z opóźnień jest tak duży, że zwiększanie ich liczby przestaje być opłacalne.