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

Podobne dokumenty