Symulacja w Badaniach i Rozwoju Vol. 1, No. 3/2010 Tadeusz NOWICKI, Ewa WRZOSEK Wojskowa Akademia Techniczna, ul. Kaliskiego 2, 00-908 Warszawa E-mail: tadeusz.nowicki@wat.edu.pl, wardak@o2.pl Modelowanie, symulacja i analiza systemów klasy klient-serwer 1 Wprowadzenie Praca zwizana jest z badaniem własnoci systemów informatycznych, których praca polega na załoonej, specyficznej formie współpracy midzy pewnymi komputerami, zwanymi klientami, oraz innymi, zwanymi serwerami. System klient serwer [1], [2] pozwala na lepsze wykorzystanie pracy uytkownika przy zminimalizowanych kosztach. Systemy tej klasy bazuj na funkcjonowaniu pojedynczych komputerów duej mocy zwanych serwerami i licznego zbioru stacji roboczych zwanych klientami. Zazwyczaj podstawowa decyzja o architekturze systemu klient-serwer dotyczy tego, czy podstawowe procesy obliczeniowe s po stronie serwera (cienki klient), czy po stronie stacji klienckich (gruby klient). Bardzo wana jest decyzja o odpowiednim doborze modelu klient serwer. Zły wybór, niedostosowany do rzeczywistego zapotrzebowania, moe okaza si bardziej kosztowny, ni zapewnienie tego, by kady komputer posiadał kady zasób w dowolnej wielkoci na własno. System taki okazuje si wtedy niewydajny, a poszczególne komponenty s nadmiernie, bd niedostatecznie obcione. Poszukuje si zatem rozwizania optymalnego, to znaczy takiej konfiguracji systemu klient serwer, aby jego rzeczywiste działanie było zgodne z oczekiwaniami, wydajne oraz jak najtasze. Powstaje pytanie: jak bez podejmowania decyzji o organizacji fizycznych eksperymentów zbada własnoci, w tym efektywno, danego systemu klient serwer? Najlepszym w tym przypadku rozwizaniem bdzie zaprojektowanie i zaimplementowanie symulatora systemów klient serwer, który umoliwi zbadanie i ocen wskaników efektywnoci systemów. W niniejszej pracy szczegółowo opisano budow i funkcjonalno symulatora systemów klient serwer oraz wykonano seri eksperymentów symulacyjnych dla ilustracji uzyskanych wyników. Wyjaniono to, co rozumie si pod pojciem klient oraz serwer [1], [2]. Przedstawiono architektur badanych systemów oraz rozłoenie aplikacji klient serwer pomidzy stacjami klienckimi, a maszynami serwerów. Wymieniono wskaniki efektywnoci, które bd badane przy pomocy programu symulacyjnego. Pocztkowo sprecyzowano granice symulatora, tzn. wybrano klas systemów klient serwer, których działanie ma by symulowane. Kolejnym punktem jest przedstawienie biblioteki symulacyjnej [3], na podstawie której działa symulator. Wymieniono te elementy biblioteki, które posłuyły do implementacji podstawowych elementów systemu klient serwer oraz wymieniono moliwoci pobierania statystyk z wykonanej symulacji. W dalszej czci zaprezentowano projekt symulatora wraz z czciow implementacj niektórych klas. 265
- +. I*#!* 2 Systemy klient-serwer Sformułowanie klient serwer jest zwizane z relacj midzy dwoma procesami bd systemami. W tej relacji procesy s zorganizowane w system w taki sposób, aby jedne wiadczyły usługi drugim. Klientem (ang. client) nazywamy proces zlecajcy zadania do wykonania na serwerze, za serwerem (ang. server) jest proces wiadczcy usługi. Procesy klientów i serwerów mog by zlokalizowane na tych samych, bd innych komputerach. Nie jest wymagana odrbno sprztowa. W rzeczywistych systemach proces moe nie mie cile okrelonej roli. Niejednokrotnie bywa tak, e pełni funkcj zarówno serwera, jak i klienta. Proces serwera moe by klientem serwera innej usługi. Mimo tego wygodnie jest załoy, e badany proces, w zalenoci od kontekstu, pełni tylko jedn z ról. Interakcja pomidzy klientem i serwerem znana jest jako zachowanie typu zamówienieodpowied (ang. request-reply behavior). Klient po zamówieniu usługi oczekuje odpowiedzi. Serwer pobiera napływajce od klientów zlecenia, realizuje je, po czym wysyła odpowiedzi do klientów. Podstawowe elementy systemu klient serwer to: klienci, serwery, sie komputerowa, wspólne protokoły sieciowe, wspólne zasady komunikacji, oprogramowanie. Warto scharakteryzowa pokrótce elementy systemów klient-serwer. Ich zrozumienie pomoe w prezentacji kolejnych wyników pracy. Klient Stacj robocz (ang. work station) nazywamy komputer bd terminal, na którym uruchamiane jest oprogramowanie z interfejsem uytkownika. Mianem klienta okrelamy najczciej oprogramowanie. Rol klienta jest udostpnienie uytkownikowi interfejsu, nawizanie połczenia komunikacyjnego z serwerem, generowanie zlece, przetwarzanie i wywietlanie odpowiedzi. Cechy charakteryzujce stacje klienckie, to: aktywno klient jest inicjatorem działa, wysyłanie da do serwera, oczekiwanie odpowiedzi od serwera. Ze wzgldu na wielko udziału klienta w implementacji interfejsu uytkownika, logiki aplikacji oraz składowania danych rozróniamy dwa typy klientów: Cienki klient (ang. thin client). W tym przypadku mówimy o systemie cienki klient serwer (ang. thin client / server). Klient ma niewielki udział w działaniu całego systemu. Cała logika aplikacji jest 266
1 0 >3*/ 0 3 *.3. 0 przeniesiona na serwer, który przechowuje ponadto wszystkie dane potrzebne do obsłuenia da klientów. Gruby klient (ang. fat client). Stacja kliencka jest maszyn w pełni wyposaon w urzdzenia peryferyjne, z kompletnym oprogramowaniem umoliwiajcym uruchamianie aplikacji. W tym modelu serwer słuy do przechowywania danych i udostpniania ich na dania klientów. Serwer Serwerem nazywamy program bd system oprogramowania wiadczcy usługi na rzecz innych programów. Jest to definicja niekompletna, poniewa serwerem czsto okrela si komputer, bd inny sprzt fizyczny, wiadczcy usługi. Istnieje zatem podział na serwery sprztowe i serwery oprogramowania. Do ogólnych cech serwera mona zaliczy: pasywno serwer czeka na zainicjowanie połczenia z klientem, czekanie na dania klientów jest tylko realizatorem przysłanych zlece, automatyczno w momencie otrzymania dania serwer przetwarza je i wysyła odpowied. Typowe serwery stosowane w praktyce profesjonalnych zastosowa, to: serwery plików, serwery baz danych, serwery nazw, serwery aplikacji, serwery internetowe. Oprogramowanie klient-serwer Aplikacja klient serwer jest oprogramowaniem uruchamianym na komputerze klienta, która odwołuje si do zdalnego serwera. W aplikacji klient serwer mona wyróni trzy poziomy: interfejs uytkownika, poziom przetwarzania, poziom danych. 3 Wskaniki efektywnoci systemów klient-serwer Przed podjciem bada efektywnociowych systemów klient serwer naley okreli wskaniki efektywnoci, jakimi kierowa si naley przy ocenie systemów tej klasy. Dowolna metoda badania systemów polega na ocenie wartoci tych wskaników (uzyskanych na przykład metod eksperymentów symulacyjnych). Do wskaników efektywnociowych odpowiadajcych systemom klasy klient-serwer zaliczy mona: 267
- +. I*#!* czas obsługi przez serwer jest to czas potrzebny serwerowi na przetworzenie pojedynczego zamówienia, obcienie serwera jest to procentowo wyraony iloraz czasu aktywnoci serwera do całego czasu symulacji, obcienie klienta jest to procentowo wyraony iloraz czasu aktywnoci klienta do całego czasu symulacji, czas oczekiwania na wysyłanie pakietu zadania/odpowiedzi jest to czas, jaki musi min, zanim zostanie wysłany pakiet, czas przebywania zadania/odpowiedzi w kolejce czas oczekiwania w kolejce na pewien zasób, którym moe by serwer, zarzdca bd klient, czas odpowiedzi jest to czas, po jakim na wysłane przez klienta zlecenie przychodzi odpowied; włczamy w to czas przebywania w sieci komunikacyjnej, (w co wliczamy czasy przebywania w kolejkach oraz czas obróbki przez zarzdc) oraz czas obsługi przez serwer, długo kolejki jest to liczba zlece przebywajcych w kolejce; przez długo kolejek badamy obcienie sieci, poniewa to włanie stany kolejek obrazuj obcienie sieci komputerowej, liczba niezrealizowanych zada jest to liczba da, które przekroczyły załoony, maksymalny czas odpowiedzi. Naley przyj, e powysze definicje nie maj charakteru cisłego w tym sensie, e dotycz wielu wystpie kadej z charakterystyk. Ponadto, liczne z wielkoci maj charakter stochastyczny. W tym sensie powinno si raczej mówi o oczekiwanych czasach, oczekiwanych długociach kolejek, oczekiwanych liczbach zada, itd. Oczywicie, podane wyej charakterystyki s jedynie wybranymi wskanikami słucymi ocenie funkcjonowania systemów klient-serwer. Mona by wymienia ich wicej, jednak s one wystarczajc propozycj dla opracowania metody bada efektywnociowych systemów tej klasy. Inne wskaniki wzbogaciłyby jedynie list parametrów efektywnociowych, jednak nie zmieniłyby sposobu bada systemu. 4 Symulator systemów klient-serwer Program symulacyjny, odwzorowujcy funkcjonowanie systemu klient-serwer, obejmuje działanie układu składajcego si z klientów i generowanych przez nich zada, sieci komunikacyjnej, zarzdcy oraz serwerów. Warto rozpocz rozwaania od okrelenia tego, jak architektur systemu bdzie reprezentował skonstruowany do bada model. Z uwagi na prób zbadania efektywnoci podstawowego systemu, symulator bdzie reprezentował architektur dwupoziomowa. Mamy zatem do czynienia z klientami korzystajcymi z usług serwerów, one za realizuj zamówienia samodzielnie, bez uywania obcych zasobów. Wczeniej wprowadzono pojcie cienkiego i grubego klienta. Balansowanie pomidzy tymi dwoma koncepcjami systemu klient serwer uzyskuje si dziki moliwoci ustawienia parametrów czasu tworzenia nowego zadania przez klienta oraz czasu przetwarzania zadania na serwerze. Zatem, zmieniajc proporcje tych wielkoci, uzyskuje si odpowiednio: 268
1 0 >3*/ 0 3 *.3. 0 model cienki klient serwer, gdy czas generacji zadania, w porównaniu do czasu obsługi, jest bardzo krótki, model gruby klient serwer, gdy czas obsługi jest znacznie dłuszy od czasu tworzenia zlecenia. W rzeczywistych systemach klient serwer sie komunikacyjna pozwala na przesłanie pewnej porcji informacji zwanej pakietem. Jest to podstawowa jednostka nonika informacji. W symulatorze istnieje moliwo generacji wielkoci zadania oraz ustawienia rozmiaru pakietu. Naley wspomnie równie o tym, e symulowane łcze ma swoj szybko, z któr przesyłane s pakiety. W programie symulacyjnym zaimplementowano działanie serwera sekwencyjnego. Jest to najprostsza metoda obsługi zlece. Niestety, nie jest zbyt efektywna, jeli chodzi o długo czasu oczekiwania zadania na obsług. dania musz czeka w kolejce, gdy serwer jest zajty. Zdecydowano si zatem na symulacj tego typu serwera, poniewa nadal jest do popularny w implementacjach systemów klasy klient-serwer. Przykładowo, bardzo popularny obecnie serwer WWW jest serwerem sekwencyjnym. dania napływajce przez sie s obsługiwane w kolejnoci przybycia, jedno po drugim. Zarzdca zaimplementowany w programie symulacyjnym obrazuje logik działania sieci komunikacyjnej. Pakiety w rzeczywistoci nios w sobie informacj dotyczc miejsca przeznaczenia. W pracy posłuono si tzw. zarzdc, który nadzoruje ruch w sieci. Dba o to, by pakiety trafiały do adresatów. Pełni równie funkcj decyzyjn. Przypisuje zadaniom odpowiednich wykonawców i rozsyła je zgodnie z algorytmem przydziału zada do serwerów. Modelowany system bdzie składa si z nastpujcych elementów: klientów i serwerów, zarzdcy, kolejek (w tym uwzgldniana jest sie komunikacyjna), zada i algorytmów rozdziału zada midzy serwery, generatorów liczb pseudolosowych. Zarzdca (Manager) zajmuje si głównie rozdzielaniem zada i odpowiedzi do kolejek odbiorców. Jego działanie, podobnie jak klienta, jest cykliczne. Zadania mog by przydzielane do serwerów zgodnie z nastpujcymi, popularnymi w implementacjach algorytmami przydziału zada: algorytm po kolei - zadania s tu przydzielane do procesorów po kolei, na przykład zgodnie z umown ich numeracj, algorytm najkrótsza kolejka zadanie w tym algorytmie jest przydzielane do tego procesora, do którego w kolejce do realizacji czeka najmniejsza liczba zada, algorytm waona najkrótsza kolejka zadanie w tym algorytmie jest przydzielane do tego procesora, do którego w kolejce do realizacji czeka najmniejsza liczba zada, przy czym liczba zada jest relatywnie 269
- +. I*#!* modyfikowana uwzgldniajca moce obliczeniowe poszczególnych procesorów, algorytm losowy - zadania s w tym przypadku przydzielane s w sposób losowy (równomierny lub inny, w zalenoci na przykład od mocy procesorów), algorytm zrównowaenie obcienia serwerów - zadania s w tym przypadku przydzielane do tych procesorów, które w ustalonym horyzoncie czasowym miały najmniejsze obcienie. Odpowiedzi serwerów zawieraj w sobie informacj, do jakiego klienta nale. Zgodnie z ni Zarzdca umieszcza odpowiedzi w odpowiedniej kolejce. Wzajemny relacje pomidzy elementami systemu przedstawia poniszy rysunek. Rys.1. Schemat modelu systemu klient-serwer Fig.1. Client-server system scheme Projekt został stworzony za pomoc aplikacji Umbrello w jzyku UML [3]. Z uwagi na czytelno przedstawianych schematów diagram klas podzielono na czci. W kadym schemacie umieszczone s tylko te informacje, które s istotne do zrozumienia danej funkcjonalnoci systemu (Rys.2). 270
1 0 >3*/ 0 3 *.3. 0 Rys.2. Schemat klas w modelu systemu klient-serwer. Fig.2.Client-server system class scheme Poniej przedstawione zostały skonstruowane klasy istotne z punktu widzenia samego procesu symulacji: klasa InitSimulaton i klasa Ticker. Rys. 3. Klasa InitSimulation i klasa Ticker Fig. 3. Init simulation class and Ticker class Graficznym przedstawieniem działania klienta zajmuje si klasa CustomerGUI. Pobiera i wywietla stan kadego klienta. Kademu obiektowi klasy Customer przypisany jest jeden obiekt klasy CustomerGUI. Patrzc z kolei na list metod klasy Server widzimy, e z wyjtkiem odziedziczonej metody Behavior zawiera tylko metody pobierajce i 271
- +. I*#!* przekazujce informacje potrzebne w trakcie działania serwera. Zapewniaj one poprawne działanie programu symulacyjnego. Obiekty klasy Server przez cały okres swojej aktywnoci pobieraj zadania ze swoich kolejek, obsługuj je i wysyłaj gotowe odpowiedzi. Działanie serwera jest obrazowane dziki graficznej klasie ServerGUI, która zajmuje si pobieraniem tych informacji, jakie trzeba wywietli w trakcie działania programu symulacyjnego (Rys.4). Rys. 4. Klasa Customer i klasa Serwer Fig. 4.Customer class and Server class Obiekty klasy Job słu jako noniki informacji statystycznych i pomocniczych w przesyłaniu i kompletowaniu ich przez klienta, zarzdc oraz serwera (Rys.4). Zarzdca (Manager) zajmuje si głównie rozdzielaniem zada i odpowiedzi do kolejek odbiorców. Jego działanie, podobnie jak klienta, jest cykliczne. Zadania mog by przydzielane do serwerów zgodnie z nastpujcymi algorytmami przydziału zada: waona najkrótsza kolejka, losowy, zrównowaenie obcienia serwerów, najkrótsza kolejka, po kolei. Odpowiedzi zawieraj w sobie informacj, do jakiego klienta nale. Zgodnie z ni Zarzdca umieszcza odpowiedzi w odpowiedniej kolejce (Rys.5). 272
1 0 > 3* / 0 3 *. 3. 0 Rys. 5. Klasa Job i klasa Manager Fig. 5. Job class and Manager class Klasa Jqueue definiuje kolejki w systemie klient-serwer. Rozszerzono j o metod Send, która zajmuje si przesyłaniem pakietów. Ka demu obiektowi klasy Jqueue odpowiada obiekt klasy JqueueGUI, który zajmuje si wy wietlaniem stanu kolejki. Z kolei klasa Raport posiada informacje na temat wszystkich obiektów, z których ma pobiera statystyki. Zatem, w momencie tworzenia raportu metod createraport, mo na bezpo rednio odwoła si do obiektów i pobra dane (Rys.6). Rys. 6. Klasa Jqueue i klasa Raport Fig. 6. Jqueue class and Raport class 273
- +. I*#!* 5 Implementacja symulatora systemu klient-serwer Program symulacyjny stworzony został w oparciu o bibliotek SIMLIB/C++, która jest projektem uczelnianym napisanym w jzyku C++ w Instytucie Informatyki i Inynierii na Uniwersytecie Technicznym w Brnie. Prace nad ni trwaj od 1990 roku i jest to projekt nadal rozwijany. Okno główne symulatora zostało przedstawione poniej (Rys.7). Rys. 7. Okno główne symulatora klient-serwer Fig. 7. Main windows of client-server simulator Mona tu skonfigurowa podstawowe charakterystyki eksperymentów symulacyjnych: czas symulacji, wielko pakietu, szybko łcza transmisji oraz wybra mona interesujcy algorytm przydziału zada. Poniej przedstawiono moliwoci w zakresie ustalania wartoci parametrów klientów i serwerów systemu (Rys.8). Rys. 8. Ustalanie wartoci parametrów klientów i serwerów Fig. 8. Client and server parameters configuration Symulacj uruchamia si przyciskiem Start symulacji, który jest dostpny pod kad z zakładek. W momencie nacinicia przycisku na ekranie pojawia si okno zobrazowania (animacji) procesu symulacji (Rys.9). Suwak prdkoci symulacji słuy 274
1 0 >3*/ 0 3 *.3. 0 zwalnianiu lub przyspieszaniu symulacji. Z pierwszej opcji korzysta si, gdy wany jest sam przebieg, a z drugiej, gdy interesujce s same wyniki symulacji. Wskanik postpu symulacji wywietla to, ile procent tego procesu zostało ju wykonane. Przycisk Zakocz powoduje natychmiastowe zakoczenie symulacji i wygenerowanie raportów na podstawie zebranych danych. Przycisk Pauza chwilowo wstrzymuje przebieg symulacji. Przycisk Kontynuuj z kolei wznawia wczeniej zatrzymany przebieg symulacji. Rys. 9. Animacja procesu symulacji Fig. 9. Simulation process animation Raport szczegółowy składa si z oddzielnych zakładek, w których mona odnale nastpujce statystyki: zajto kolejki, obcienie serwerów, czas przejcia zadania przez system, czas wykonania zadania, poziom realizacji zada, obcienie klientów (Rys.10). Rys. 10. Raporty z procesu symulacji Fig. 10. Simulation process raporting 275
- +. I*#!* Podejrze te mona róne charakterystyki dynamiczne, np. wykres zmian długoci kolejki serwera w trakcie symulacji (Rys.11). Podobnie zarejestrowa i zobrazowa mona wykres liczby pakietów zada i odpowiedzi w sieci komputerowej (Rys. 12), jak te wiele innych, wanych do oceny efektywnoci funkcjonowania systemów klasy klient-serwer, charakterystyk. Rys. 11. Długoci kolejek serwera Fig. 11. Length of server queue Rys. 12. Wykres liczby pakietów w sieci komputerowej Fig. 12. Number of packages in computer network 6 Podsumowanie Przedstawiono projekt i implementacj symulatora programowego pozwalajcego dla zadanych parametrów systemu klasy klient-serwer uzyskiwa oszacowania wartoci wskaników efektywnoci jego funkcjonowania. Pokazano te to, jak posługiwa si opracowanym symulatorem i moliwoci analizy systemów klasy klient-serwer na podstawie wyników uzyskanych z eksperymentów symulacyjnych. Uzyskane wyniki pozwalaj na ocen funkcjonowania algorytmów rozdziału zada miedzy serwery, pozwalaj równie na ustalenie proporcji midzy grubym i cienkim klientem w sensie projektowym dla konkretnych zastosowa (aplikacji). Dziki 276
1 0 >3*/ 0 3 *.3. 0 odpowiednio skonstruowanym scenariuszom mona równie uzyska ocen wpływu wartoci parametrów sieci komputerowej na prac całego systemu. Literatura 1. Tanenbaum A.,Van Steen M. Systemy rozproszone Zasady i paradygmaty, WNT, Warszawa 2006 2. Hall C. Techniczne podstawy systemów klient serwer, WNT, Warszawa 1996 3. Strona biblioteki SIMLIB/C++ http://www.fit.vutbr.cz/~peringer/simlib/, Streszczenie W pracy przedstawiono projekt i implementacj symulatora programowego systemu klientserwer. Omówiono charakterystyki takiego systemu. Zdefiniowano poszczególne elementy modelu systemu. Zaprezentowano moliwoci symulatora w zakresie bada efektywnoci systemów klasy klient-serwer. Pokazano szczegółowe charakterystyki, jakie mona uzyska posługujc si opracowanym symulatorem. Modeling, simulation and analysis of client-server system Summary In this work project and implementation of software simulator of client-server system is presented. Selected characteristics of such system are discussed. Every elements of client-server model are defined. Possibilities of simulator from the system efficiency point of view are presented. Many characteristics which can be obtained during simulation experiments of client-server exploitation are shown. 277