pobierz plik referatu
Transkrypt
pobierz plik referatu
Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Rozdział 14 w System agentów programowych 1 Wstęp da .b w w Streszczenie. System agentów programowych (system SA) bazuje na zasobach gridowych nadzorowanych przez agentów, którzy mogą wykonywać i przekazywać zadania do wykonania. W rozdziale przedstawiono założenia systemu SA, strukturę agentów programowych i testy wydajnościowe. Dystrybucja zadań, wykonywanie i scalanie jest przystosowane do współpracy z wieloma stacjami roboczymi w trybie wielodostępnym. System SA pracuje w architekturze gridu, dzięki czemu możliwe jest lepsze balansowanie wydajnością. Balans obciążeń zapewniony jest poprzez sprawdzanie obciążenia na poszczególnych komputerach poprzez moduł GAPS. Elastyczność zapewniona jest przez dynamicznie ładowane pluginy, które pozwalają niewielkim kosztem zdalnie rozwijać możliwości całego systemu SA. Opracowane zostały metody badania i przewidywania wydajności, dzięki którym system jest bardziej równomiernie obciążony. Agent jest autonomiczną jednostką, która podejmuje decyzje, przyjmuje zadania do wykonania i wysyła wyniki. pl s. Systemy agentów programowych (ang. Software Agents SA) realizowane w technologii gridowej rozpatrywano min. w pracach [1], [2], [3], [4]. Systemy SA pozwalają na równoległe rozwiązywanie zadań w wielu węzłach gridu. Problemem jest dystrybucja i równy podział pracy. Balans obciążenia może być optymalny dla stałej liczby komputerów ze z góry znaną wydajnością. W gidach mamy do dyspozycji pewną liczbę komputerów, włączających i wyłączających się z systemu SA w losowych chwilach czasu, z nieznanymi parametrami wydajnościowymi (niektóre węzły mogą rozwiązywać inne zadania). W gridzie bardzo trudno jest uzyskać równomierne obciążenia pracą węzłów systemu SA minimalizując zarazem straty spowodowane rozproszeniem. W drugim podrozdziale przedstawiono założenia systemu opartego na agentach, w trzecim ujęto ogólne informacje o agencie, strukturze, dystrybucji zadań, komunikacji, bezpieczeństwie i monitorowaniu wydajności. Czwarty podrozdział zawiera testy systemu PAS, a ostatni zawiera konkluzje. Marcin Gorawski, Sławomir Bańkowski: Politechnika Śląska, Instytut Informatyki, ul. Akademicka 16, 44-100 Gliwice, Polska email:{m.gorawski, s.bankowski}@polsl.pl (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 M. Gorawski, S. Bańkowski 2 Założenia systemu SA w System agentów rozproszonych w gridzie przyjmuje wiele założeń, które są konieczne dla jego efektywnej pracy. Podstawowym wymogiem jest łatwość obsługi systemu SA, gdzie użytkownik mając do czynienia ze skomplikowanym środowiskiem przetwarzania równoległego nie powinien odczuwać tego, że pracuje na wielu stanowiskach jednocześnie. Kolejnym wymaganiem jest przejrzystość konfiguracji. Zwykle systemy posiadają wiele parametrów, od których zależy poprawne działanie. Należy zapewnić, aby w systemie SA najbardziej potrzebne parametry można było szybko ustawić, natomiast parametry dodatkowe miały odpowiedni opis. Przezroczystość oznacza, że pracując na kilku komputerach systemu SA równolegle, użytkownik nie musiał wiedzieć, które komputery w danej chwili są wykorzystywane. Wymóg bezpieczeństwa określa mechanizmy autoryzacji i szyfrowania komunikacji. Agenci mogą być uruchamiani na różnych stanowiskach sprzętowych i niezależnie od nich powinni pracować tak samo, czyli system SA musi być interoperacyjny. Wymóg balansowania obciążeń określa maksymalne wykorzystanie zasobów systemu SA. Bardziej czasochłonne zadania powinny być wykonywane na szybszych komputerach, a mniejsze na bardziej obciążonych i słabszych stacjach roboczych. Uruchomienie agentów na wielu komputerach wiąże się ze stałą dostępnością zasobów, trzeba unikać sytuacji, gdy jeden z zasobów jest niedostępny z powodu awarii agenta. Skalowalność oznacza, że zwiększanie liczby komputerów z agentami powinno proporcjonalnie zwiększać wydajność całego systemu SA, natomiast elastyczność powinna zapewniać jego stabilną pracę w przypadku awarii komputerów. Agent jest autonomiczny, czyli posiada zdolność podejmowania samodzielnych decyzji na podstawie odkrywanej wiedzy. Cały system SA jest podzielony na niezależne komponenty, nie wszystkie są konieczne do prawidłowego działania SA, jednak wspomagają proces lepszego wykorzystania dostępnych zasobów. da .b w w 3 Budowa agenta 3.1 Struktura agenta pl s. Strukturę agenta przedstawiona rys. 1. Współdzielony dostęp do wszystkich zasobów zapewnia wysoki współczynnik skalowalności, natomiast bezpieczeństwo jest zapewnione przez logowanie do systemu każdego użytkownika. Komunikacja odbywa się na wielu poziomach jednocześnie zapewniając, że niedostępność jednego z serwisów nie spowoduje całkowitej blokady systemu. Agent składa się z kilku modułów, które współpracują ze sobą. Moduł Zarządzanie jest odpowiedzialny za dystrybucję zadań wewnątrz agenta. Bezpieczeństwo może sprawdzać zadania przychodzące do agenta, czy pochodzą z pewnego źródła. Klienci zapewniają dostęp do katalogów i innych usług przez sieć, natomiast Konfiguracja pozwala ustawić i przechować najważniejsze dane agenta. Moduł Wykonywanie zadań jest najbardziej istotny z punktu widzenia wydajności. Zadania są dodawane do przestrzeni, po czym kolejno wykonywane przez odpowiednie moduły. Dostęp do baz danych zapewnia zarządzanie i utrzymywanie połączeń do różnych baz poprzez JDBC lub ODBC. 140 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Agenci programowi Schemat agenta Klienci Koordynacja (AgentCheck) Konfiguracja (GALS) GJSS Logowanie (GALS) Zarządzanie (AgentCore) GIIS GADS Dostęp do baz danych (GDBC) Lokalne zasoby i dane Serwer wydajności (GAPS) Bezpieczeństwo (GASS AgentSecurity) w w Wykonywanie zadań (GAWS) Agregacje (GDBC) Komunikacja (GAWS – AgentCommunication) UDP Socket RMI JINI HTTP w Rys. 1. Schemat agenta s. 3.2 Zadania da .b Składowe agenta: − Grid Log Monitor Service (GLMS) – zbieranie logów systemowych, − Grid Agent Login Service (GALS) – logowanie do systemu, − Grid Agent Security Service (GASS) – ustawianie uprawnień, bezpieczeństwo, − Grid Agent Performance Service (GAPS) – mierzy i przewiduje wydajność agentów, − Grid Data Bases Connections (GDBC) – połączenia do baz danych poprzez ODBC lub JDBC, − Grid Agent Worker Service (GAWS) – zarządza zadaniami i połączeniami, − Grid Index Information Service (GIIS) – katalog usług dla agentów, − Grid Java Space Service (GJSS) – katalog zadań dla agenta, − Grid Agent Data Sernice (GADS) – katalog danych dla agenta. Zadanie składa się z szeregu parametrów wraz z wartościami. Nazwy parametrów są dowolne, serializowanie polega na wypisaniu zadania w postaci: Przykładowe zadanie to: pl Parametr1=Wartość1;Parametr2=Wartość2;Parametr3=Wartość3;Parametr4=War tość4;Parametr5=Wartość5;Parametr6=Wartość6;Parametr7=Wartość7; workerGroup=math;workerFun=do;time=0;groupId=319225031;e0=5000000.5;ve rsion=3.2.0.0;endMode=r(p1);p2=1.8;p1=1.4;giis=false;num=0;gjss=true;w orkerMode=r(p1);b0=1.0;timeout=1116262256207;count=1;timeCreate=18:50: 46;valueSum=3498326.3905740315;endGroup=math;group=workerQueue;id=7577 38465;endFun=add;fun=set;dimensions=1;splitParts=2;agentName=Agent11; 3.3 Dystrybucja, wykonywanie i scalanie zadań Użytkownik może dodać zadanie do wykonania. Parametry są uzupełniane i zadanie jest przekazywane do wykonania, zazwyczaj pierwsze wykonanie wiąże się ze stworzeniem odpowiedniego kubełka do przechowywania odpowiedzi, podziałem i rozesłaniem zadań. 141 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 M. Gorawski, S. Bańkowski w Podzielone zadanie trafia do kolejki zadań czekających na wykonanie. Pobranie zadania z kolejki usuwa je i przenosi do kolejki aktualnie wykonywanych. Jeżeli przyjdzie zadanie już wykonane, to jest usuwane z kolejki wykonywanych i jest przenoszone do kolejki wykonanych. Jeżeli przychodzi nowe skończone zadanie, to sprawdzany jest parametr groupId i na tej podstawie kieruje się do odpowiedniego kubełka. Kubełek to osobna klasa zarządzająca zbieraniem i scalaniem wyników. Sprawdza ID zadania i na tej podstawie może ignorować je, jeżeli było ono już wcześniej rozwiązane, lub uaktualnić wyniki (sum, count, min, max) i przenieść zadanie z wykonywanych do skończonych. Całe zadanie jest skończone, jeżeli kolejka zadań czekających na wykonanie i kolejka zadań wykonywanych są puste. w 3.4 Kolejkowanie zadań da .b w Każdy zbiór zadań dostaje takie same grupowe ID, po którym można rozpoznać zadanie, następnie wszystkie zadania zostają przesłane do katalogu (GIIS, GJSS lub GADS). Przy pobieraniu zadania katalog powinien zwrócić uwagę, czy dla danego agenta nie ma zadania do wykonania na lokalnej bazie danych (porównywanie adresów IP zadania i agenta pytającego o nowe zadanie do wykonania). Wadą takiego rozwiązania jest spowolnienie pracy zadań w przypadku, gdy inne zadanie trafia do systemu. Możliwe są trzy rozwiązania: − Kolejka FIFO – zapytania, które trafiają wcześniej do systemu są wykonywane w pierwszej kolejności. Powoduje to blokowanie innych zadań, które czekają w kolejce na wykonanie (rys. 2). Przychodzi zadanie 1 Przychodzi zadanie 2, czeka wykonanie zadania 2 Zadanie 1 Zadanie 2 Rys. 2. Kolejkowanie zadań – FIFO pl s. − Tasowanie zadań do wykonania – zapytania są tasowane, dzięki czemu każde zadanie, które trafi do systemu ma szansę wykonywać się od razu. Zaletą takiego rozwiązania jest uzyskiwanie częściowych wyników zapytań po niedługim czasie niezależnie od obciążenia systemu (rys. 3). Przychodzi zadanie 1 Przychodzi zadanie 2, czas wykonania zadania 1 wydłuża się Zadanie 1 Zadanie 1 Zadanie 2 Rys. 3. Kolejkowanie zadań – tasowanie − Priorytety dla zadań – każdy użytkownik definiując zapytanie może ustawić priorytet zadania, przy czym zadania z wyższym priorytetem będą wykonywane w pierwszej kolejności (rys. 4). 142 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Agenci programowi Przychodzi zadanie 1 Przychodzi zadanie 2, wywłaszczenie Dokończenie zadania 1 Zadanie 1 Priorytet 2 Zadanie 1 Priorytet 2 Zadanie 2 Priorytet 3 w Rys. 4. Kolejkowanie zadań – priorytety w w W drugim przypadku zadania będą dostarczane losowo. Oznacza to wydłużenie czasu na skompletowanie wyników dla wszystkich zadań. Jednocześnie wszystkie zadania się wykonują - największą szansę na pobranie ma te zapytanie, które ma najwięcej zadań w katalogu. Częściowe odpowiedzi zadań dodanych jako ostatnie mogą pojawić się bardzo szybko (na ich podstawie można w niektórych przypadkach obliczyć przybliżone wyniki całkowite). W przypadku wszystkich zadań całkowity czas wykonania jest podobny. 3.5 Komunikacja da .b Elastyczność agenta jest ściśle powiązana z możliwościami komunikacji. Podstawowym połączeniem jest gniazdo sieciowe (ang. Socket). Inne bezpośrednie połączenia to datagramy i RMI, dodatkowo może być zarejestrowany w katalogu usług GIIS (RMI), w katalogach GJSS (JavaSpaces) lub GADS (Socket). Aby przesyłać pliki i dane o większym rozmiarze, używany jest klient http. Wybór komunikacji określa polityka wewnętrzna agenta konfigurowana przez użytkownika. Przy wysyłaniu zadania sprawdzane jest, czy istnieje połączenie bezpośrednie z wybranym agentem, jeżeli tak, to wybierana jest ta forma komunikacji; w przypadku, gdy nie ma połączenia bezpośredniego, wybierany jest jeden z katalogów. Komponent GAWS (ang. Grid Agent Worker Service) zarządza komunikacją i wykonywaniem zadań, zawiera spis dostępnych agentów wraz z ich identyfikatorami sieciowymi. W określonych odstępach czasu lista jest uaktualniana z katalogów, a także przez samych agentów połączonych bezpośrednio. Dzięki zastosowaniu tablicy haszującej, dla każdego agenta może być szybko pobrana klasa, która realizuje połączenie bezpośrednie. Rysunek 5 przedstawia komunikację pomiędzy agentami w hierarchicznej strukturze. VO (ang. Virtual Organization) oznacza Organizację Wirtualną, w ramach, której agenci wymieniają się zadaniami bez konieczności korzystania z katalogu usług. Organizacja Wirtualna to zbiór zasobów tworzących logiczną całość. Przykładem może być dział w firmie, wszystkie komputery jednej grupy projektowej, czy stanowiska pracujące nad tym samym projektem. Przy małej liczbie węzłów połączonych można stworzyć jedną VO, wtedy każdy agent będzie posiadał aktywne połączenie wszystkimi pozostałymi. Komunikacja będzie optymalna, jednak balansowanie znacznie utrudnione. W przypadku dodania nowego zadania, jest ono dzielone na kilka fragmentów (zazwyczaj pięć/sześć razy więcej, niż jest dostępnych agentów), a następnie rozsyłane kolejno do wszystkich agentów. Gdy nadejdzie rozwiązanie od konkretnego agenta (parametr from zadania), przesłane zostaje mu nowe zadanie. W takim przypadku użycie agentów jest zupełne w całym cyklu trwania obliczeń z wyjątkiem krótkiego (około 20-80ms) oczekiwania na nowe zadanie. pl s. 143 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 M. Gorawski, S. Bańkowski VO A A A A A VO A GIIS, GJSS, lub GADS A A A w Rys. 5. Hierarchiczna struktura Agentów w ramach Organizacji Wirtualnej i połączenia przez GIIS, GJSS lub GADS w 3.6 Zewnętrzne pluginy da .b w Istnieją sytuacje, kiedy agent jest uruchomiony na kilkuset komputerach VO i wymagana jest funkcja obliczeń współbieżnych, której on nie ma zaimplementowanej. Własność interoperacyjności systemu SA pozwala na dynamiczne ładowanie klas (pluginów) zapewnionego przez język Java. Trudno jest dopisywać jedną funkcję do agenta, kompilować program, a następnie ponownie uruchamiać go na wszystkich komputerach. W takim wypadku trzeba dodać jedną klasę według danego interfejsu, a następnie udostępnić ją wszystkim agentom do pobrania. Zaufany agent przesyła zadanie ściągnięcia i uruchomienia pluginów. Od tej momentu każdy agent jest w stanie wykonywać algorytm, obliczeń równoległych. Ładowanie zewnętrznych pluginów zapewnia dużą elastyczność systemu SA. Taki sam mechanizm może być wykorzystany do dzielenia problemu na mniejsze fragmenty i wykonanie równoległe w wielu węzłach VO. 3.7 Bezpieczeństwo pl s. Własność zapewnienia bezpieczeństwo agenta polega na sprawdzaniu uprawnień do wykonania każdego zadania. Nie spowalnia to znacznie systemu SA, ponieważ liczba zadań przekazanych jest stosunkowo mała, natomiast sprawdzenie odbywa się poprzez porównanie SID (ang. SessionID) zadania z odpowiednim uprawnieniem dla zadania. Wykorzystanie tablicy haszującej znacznie przyspiesza bezpieczeństwo i uniezależnia od całkowitej liczby uprawnień i agentów w systemie. Komponent GASS (ang. Grid Agent Security Service) może pracować w trzech trybach – z zachowaniem pełnego bezpieczeństwa, częściowego bezpieczeństwa lub pomijając je całkowicie. W pierwszych dwóch trybach do każdego stworzonego zadania dodawany jest SID dla określonego uprawnienia. Każde zadanie przychodzące „z zewnątrz” (od innego agenta lub z katalogu) jest sprawdzane poprzez porównanie pola SID. Tryb pierwszy różni się od drugiego tym, że sprawdzanie odbywa się poprzez zaufany katalog GIIS dla każdego zadania osobno. Możliwe jest wtedy zdefiniowanie puli jednorazowych SID-ów, które po jednokrotnym sprawdzeniu są kasowane. Przy rejestrowaniu się do katalogu GIIS, agent pobiera dla siebie pulę SID-ów, a następnie wysyłając zadania dołącza je po kolei, każdego używając tylko raz. Przy odebraniu zadania, agent sprawdza zadanie w GIIS. Dany SID jest kasowany z listy i funkcja zwraca dostępne uprawnienia. W trybie drugim uprawnienia są przydzielane raz, zaufani agenci zarejestrowani w GIIS mogą wymieniać się informacjami między sobą, natomiast nie będą przyjmować zadań od innych agentów. Ten tryb jest bardzo efektywny, lecz nie gwarantuje wysokiego poziomu bezpieczeństwa. 144 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Agenci programowi 3.8 Pomiar wydajności w Komponent GAPS (ang. Grid Agent Performance Service) odpowiada za pobieranie i przechowywanie informacji o stanie liczników systemowych komputerów z agentami i umożliwia uruchomienie serwera wydajności „Performance Server”. Pozwala na przechowanie dowolnej liczby charakterystyk od lokalnego serwera lub od innych agentów. Serwis udostępnia okna do wyznaczania charakterystyk w czasie rzeczywistym, a także przewiduje wydajność prognozowaną korzystając z poprzednich wartości. Typy liczników systemowych pobierane są z lokalnego serwera wydajności. w 4 Wyniki badań i testy systemu SA 4.1 Sprawność zarządzania zadaniami d .b w Pierwszy z wykonanych testów dotyczył sprawności komunikacji w systemie SA. Zadanie zostało podzielone na daną liczbę fragmentów, a następnie wykonane na jednym komputerze. Przesyłanie odbywało się bezpośrednio VO, za pośrednictwem GIIS, GJSS lub GADS. W przypadku zwiększania liczby fragmentów, czas zarządzania proporcjonalnie wzrastał. Przesyłane zadanie dotyczyło obliczenia sumy pewnego ciągu liczbowego (rys.6). 17500 czas wykonania 17000 16500 VO GIIS 16000 GJSS GADS 15500 14500 1 5 10 15 .p as 15000 20 25 30 liczba zadań Rys. 6. Czas wykonania zadania w zależności od liczby zadań i sposobu przesyłu Najlepiej wypadła komunikacja w ramach VO (szybsza około 100-500 ms), między GIIS i GJSS nie zanotowano większych różnic. Średni czas obsługi zadania (podział, przesył, odesłanie wyniku – bez obliczenia zadania) wynosił 30ms. Z tego powodu zbyt drobny podział (np. na tysiąc zadań) może znacznie zwolnić czas wykonania nawet o kilka minut l 4.2 Tworzenie i parsowanie zadań Zadanie jest tablicą haszującą, w której kluczem jest nazwa parametru. Test miał na celu zbadanie, czy tworzenie nowych zadań poprzez wpisywanie parametrów lub parsowanie serializowanych zadań jest czasochłonne. W obu przypadkach było tworzonych lub parsowanych 1000 zadań. Zarówno czas tworzenia jak i parsowania zadania jest bardzo krótki i wynosi poniżej 0,6 ms nawet dla 30 parametrów (rys. 7). 145 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 M. Gorawski, S. Bańkowski 600 czas [ms] 500 400 tworzenie zadań 300 tworzenie + parsowanie zadań 200 w 100 0 10 15 20 25 30 liczba parametrów w Rys. 7. Czas tworzenia i parsowania 1000 zadań w 4.3 Przyspieszenie pracy w wielu węzłach 3,5 przyspieszenie 3 2,5 2 1,5 0,5 0 1 2 3 1 Agent 2 Agentów 3 Agentów as 1 d .b Przyspieszenie jest bliskie liczby komputerów, na których wykonywało się zadanie (rys. 8). Przy dłuższych zadaniach wyniki są lepsze, gdyż czas zarządzania, który jest stały dla tej samej liczby podzadań, jest odpowiednio mniejszy niż czas właściwego wykonywania zadania. 4 5 długość zadania 4.4 Dystrybucja pluginów .p Rys. 8. Przyspieszenie w zależności od liczby agentów i długości wykonywanego zadania l Test polegał na mierzeniu czasu dystrybucji kilku klas w ramach systemu SA (rys. 9). Do jednego agenta użytkownik dodaje plugin, a następnie jest mierzony czas między dodaniem, a uruchomieniem pluginów na wszystkich jednostkach. 146 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 Agenci programowi 6400 w czas dystrybucji [ms] 6200 6000 5800 1 Agent 5600 5 Agentów 5400 10 Agentów 5200 5000 4800 1 2 3 4 liczba pluginów w w Rys. 9. Czas dystrybucji pluginów w zależności od ich liczby 5 Podsumowanie da .b Przedstawiony system agentów programowych bazuje na architekturze gridu. Pojedynczy agent posiada możliwość konfiguracji, połączenia się do zdalnego katalogu, a także bezpośrednio do innych agentów. Zadania są rozdzielane i wykonywane równolegle w wielu węzłach, co znacznie przyspiesza ich wykonanie. Wbudowane funkcje mierzą wydajności lokalnych węzłów pozwalając na dobre balansowanie obciążeń w wieloużytkownikowym trybie pracy systemu SA. To pozwala na pełne wykorzystanie zasobów sprzętowych w nieznanym środowisku systemu SA, w szczególności można omijać maszyny bardzo słabe, lub rozsyłać po kilka zadań do komputerów najmocniejszych. W przypadku skupionych systemów SA zalecane jest tworzenie VO, dzięki czemu nadmiarowość struktury agentów nie stanowi problemu, w przeciwnym razie, katalogi usług zapewniają dobre równoważenie obciążeń. Elastyczność systemu SA poprzez dodanie obsługi dystrybuowanych pluginów znacznie zwiększa możliwości jego zastosowania. Poprzez użycie tablicy haszującej i parametrów z wartościami, zadania są bardzo uniwersalne i łatwo je rozbudować. Jak pokazały załączone testy systemu SA, zarówno tworzenie i parsowanie zadań przebiega bardzo szybko, a prosta serializacja umożliwia przesył zarówno za pomocą JavaSpaces, RMI, jak i gniazd sieciowych czy datagramów. 2. 3. 4. 5. l 1. p s. Literatura Marcin Gorawski, Sławomir Bańkowski: Agenci programowi w przetwarzaniu gridowym, I Krajowa Konferencja Naukowa Technologie Przetwarzania Danych, Poznań 2005. Faruk Polat, Reda Alhajj: A multi-agent tuple-space based problem solving framework, Middle East Technical University, 06531 Ankara, Turkey 1998. Junwei Cao, Daniel P. Spooner, Stephen A. Jarvis, Subhash Saini and Graham R. Nudd, AgentBased Grid Load Balancing Using Performance-Driven Task Scheduling, 2003. H.N. Lim Choi Keung, J.Cao, D.P. Spooner, S.A. Jarvis, G.R. Nudd, Grid Information Services using Software Agents, 2003. Jorge R. Bernardino, Pedro S. Furtado, Henrique C. Madera, Approximate Query Answering Using Data Warehouse Stripping, 2003. 147 (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006 Rozdział monografii: 'Bazy Danych: Struktury, Algorytmy, Metody', Kozielski S., Małysiak B., Kasprowski P., Mrozek D. (red.), WKŁ 2006 w da .b w w pl s. (c) Copyright by Politechnika Śląska, Instytut Informatyki, Gliwice 2006