You are on page 1of 6

systemy wieloagentowe, systemy rozproszone,

przetwarzanie rozproszone, obliczenia równoległe,


migracja zadań, równowaŜenie obciąŜeń,

Kamil PAŚKO, Michał STANEK*

WIELOAGENTOWA ARCHITEKTURA ROZPROSZONEGO


SYSTEMU PRZETWARZANIA ZADAŃ Z DYNAMICZNYM
RÓWNOWAśENIEM OBCIĄśEŃ

W artykule przedstawiona została architektura wieloagentowego systemu rozproszonego przetwa-


rzania zadań wraz z omówieniem algorytmu równowaŜenia obciąŜenia poszczególnych węzłów sys-
temu. W pierwszej części artykułu opisane zostały zadania wykonywane przez agentów poszczególne
typy agentów, następnie przedstawiony został algorytm równowaŜenia obciąŜenia systemu prowadzą-
cy do minimalizacji średniego czasu wykonania zadania w. W końcowej części artykułu zaprezento-
wane zostały otrzymane wyniki oraz moŜliwe dalsze usprawnienia.

1. WSTĘP
Analizując historię rozwoju superkomputerów, wyróŜnić moŜemy dwa sposoby ich
projektowania. Pierwszy, w którym bardzo duŜa moc obliczeniowa wynika z zastoso-
wania jednego bardzo szybkiego procesora, drugi zakładający wykorzystanie duŜej
ilości średnio wydajnych i powszechnie dostępnych procesorów w celu osiągnięcia
wzrostu mocy obliczeniowej poprzez zrównoleglenie procesu obliczeniowego.
Nie trzeba jednak kupować superkomputera, aby móc korzystać z dobrodziejstw
przetwarzania równoległego. Rozwój sieci komputerowych w tym Internetu umoŜliwił
powstanie takich projektów jak np. SETI@HOME[1], w którym do analizy odbiera-
nego przez radioodbiorniki sygnału wykorzystywana była moc obliczeniowa tysięcy
komputerów uŜytkowników Internetu.

*
Politechnika Wrocławska, Instytut Informatyki Stosowanej, 50-370 Wrocław, Wyb. Wyspiańskiego 27,
e-mail: eximius@o2.pl, michal.stanek@pwr.wroc.pl, Koło Naukowe Sztucznej Inteligencji „CJANT"
W artykule przedstawiona jest architektura oraz algorytm równowaŜenia obciąŜe-
nia systemu rozproszonego przetwarzania zadań umoŜliwiającego wykorzystanie mo-
cy obliczeniowej wielu połączonych za pomocą sieci komputerów.

2. BUDOWA SYSTEMU
Rozproszony system przetwarzania zadań tworzą połączone siecią komputery z
uruchomionym autorskim programem MARS (MultiAgent Resource Sharing System).
KaŜdy komputer w takim systemie nazywać będziemy dalej węzłem. Zlecone zadania
obliczeniowe mogą być wykonywane na kaŜdym węźle systemu, istnieje jednak do-
kładnie jeden węzeł, który poza wykonywaniem zadań komunikuje się z uŜytkowni-
kami w celu przyjmowania od nich Ŝądań oraz zwracania rezultatów obliczeń.
Wśród zadań, jakie mogą zlecić uŜytkownicy wyróŜnić moŜemy zadania niepo-
dzielne oraz n-dekomponowalne. Poprzez zadanie n-dekomponowalne rozumiemy
takie zadanie, które moŜe zostać rozłoŜone na n zadań niepodzielnych (np. poszuki-
wanie liczb pierwszych, wyszukiwanie wzorca w tekście, itp.). Zadania takie mogą
być następnie realizowane równolegle. Zadanie niepodzielne, to takie, które w całości
musi zostać wykonane w sposób sekwencyjny.
Celem działania systemu jest zrealizowanie wszystkich zleconych przez uŜytkow-
ników zadań w jak najkrótszym czasie. Oczywistym jest, Ŝe cel ten zostanie osiągnięty
tylko wtedy, kiedy wykorzystywana będzie w sposób równomierny moc obliczeniowa
wszystkich węzłów systemu[3].
Zaproponowany system składa się z wielu współpracujących ze sobą agen-
tów (rys. 1), czyli programów „działających w pewnym środowisku, zdolnych do ko-
munikowania się między sobą, monitorowania swego otoczenia i podejmowania auto-
nomicznych decyzji w celu osiągnięcia celu”[2]. PoniŜej opisane są zadania jakie wy-
konują poszczególni agenci.
Dokładnie jeden agent obsługujący, umieszczony w pierwszym węźle systemu,
pełni funkcję pośrednika pomiędzy klientami a systemem. Dla kaŜdego zadania two-
rzy odpowiedniego agenta zadania oraz wskazuje mu węzeł sieci, na którym ma roz-
począć pracę. Agent obsługujący przekazuje równieŜ wyniki pracy agentów zadań
odpowiednim klientom.
Agent zadań jest podstawową jednostką systemu, wykonuje on zadania zlecone
przez klientów. Agent zadań ma moŜliwość migracji pomiędzy węzłami systemu [4]
lub w przypadku zadań n-dekomponowalnych utworzenie nowego agenta zadania i
przekazanie mu części realizowanego obecnie zadania, a następnie odebrania wyni-
ków jego obliczeń.
Tablica, jest to współdzielona i dostępna dla wszystkich agentów przestrzeń infor-
macyjna. W tablicy tej znajdują się informacje na temat poziomu obciąŜenia poszcze-
gólnych węzłów obliczeniowych.
Tablica ogłoszeń
Węzeł 2 Węzeł N
System operacyjny System operacyjny
JAVA JAVA
MARS MARS
Agent
zadania 1
..... Agent
zadania 1
....

....
Agent Agent
Agent Agent
sterujący sterujący
zadania K zadania K

TCP/IP TCP/IP

Sieć
System operacyjny
JAVA
MARS
Agent
Agent zadania 1
obsługujący
Klient

....
Agent
sterujący Agent
zadania K

Klient TCP/IP

Węzeł 1
Rys. 1. Diagram przedstawiający poszczególne elementy systemu

3. ALGORYTM RÓWNOWAśENIA OBCIĄśEŃ


Aby cel pracy systemu, czyli wykonanie wszystkich zleconych zadań w moŜliwie
najkrótszym czasie, mógł być zrealizowany konieczne jest dynamiczne równowaŜenie
obciąŜenia pracy kaŜdego węzła systemu, co przejawia się między innymi kierowa-
niem nowych zadań na najmniej obciąŜone węzły systemu oraz przenoszenie zadań z
węzłów najbardziej obciąŜonych na węzły o mniejszym obciąŜeniu. Od algorytmu
równowaŜenia obciąŜenia zaleŜy średni czas, po jakim klient otrzyma rozwiązanie
swojego zadania [3].
Za dynamiczne równowaŜenie obciąŜenia w systemie odpowiedzialni są agenci
sterujący oraz agent obsługujący. Zadanie agenta obsługującego polega na wskazaniu
nowo tworzonym agentom zadań węzłów systemu o najmniejszym obciąŜeniu. Zada-
niem agenta sterującego jest badanie poziomu obciąŜenia węzła, na którym się znaj-
duje i w przypadku stwierdzenia, Ŝe poziom obciąŜenia innych węzłów jest niŜszy
wybranie jednego agenta zadania i zaŜądanie od niego podzielenia zadania (w przy-
padku zadania n-dekomponowalnego) lub wymuszenie migracji na inny węzeł (w
przypadku zadanie nie podzielnego). Dokładny algorytm działania agenta sterującego
opisany jest poniŜej.
Algorytm działania agenta sterującego
1. monitoruj obciąŜenie procesora węzła przez okres ∆t
2. wyślij średnią wartość obciąŜenia procesora w czasie ∆t do tablicy ogłoszeń
3. pobierz wartości obciąŜeń innych węzłów systemu
4. wyznacz średnie obciąŜenie systemu c (wzór 1)
5. wyznacz odchylenie standardowe σ (wzór 2)
6. sprawdź czy aktualne obciąŜenie węzła jest większe niŜ c + σ , jeŜeli tak to przejdź
do kroku 7, jeŜeli nie to do kroku 1
7. stwórz listę B zawierająca agentów zadań realizujących zadania n-dekomponowalne,
8. jeŜeli lista B jest niepusta to przejdź do kroku 9 w przeciwnym razie do 12
9. stwórz listę A węzłów których obciąŜenie jest mniejsze od c − σ (wzór 3)
10. wyślij Ŝądanie podziału zadania do dowolnego agenta z listy B oraz przekaŜ mu listę A
(najmniej obciąŜonych węzłów)
11. przejdź do kroku 1
12. jeśli w węźle znajduje się przynajmniej dwóch agentów zadań to wyślij informację do
dowolnego agenta o konieczności migracji oraz podaj adres najmniej obciąŜonego wę-
zła cmin (wzór 4)
N

∑c i
(1)
c= i =1
,
N
N

∑ (c i + c) 2
(2)
σ= i =1
,
N −1
{
A = i i ∈ W ∧ ci < c + σ , } (3)
c min = arg min{ci }, i ∈ W , (4)
i

Opis wzorów wykorzystywanych w algorytmie: N to całkowita liczba węzłów, c to


średnie obciąŜenie wszystkich węzłów systemu, ci oznaczona obciąŜenie i-tego węzła,
σ to odchylenie standardowe obciąŜenia węzłów, W oznacza zbiór wszystkich wę-
złów systemu, A to zbiór najmniej obciąŜonych węzłów, cmin to najmniej obciąŜony
węzeł w systemie.

Agent zadań realizujący zadanie n-dekomponowalne w przypadku otrzymania Ŝą-


dania podziału zadania tworzy nowego agenta zadań, przekazuje mu część swojego
zadania oraz z przekazanej przez agenta sterującego listy A (węzłów najmniej obcią-
Ŝonych) wybiera węzeł, z którym ma najszybszą komunikację (czas wysłania i ode-
brania komunikatu jest najkrótszy). W przypadku otrzymania Ŝądania migracji na inny
węzeł zaprzestaje wykonywania zadania na bieŜącym węźle, przenosi się na wskazany
przez agenta sterującego węzeł docelowy i kontynuuje realizację wstrzymanego wcze-
śniej zadania.

4. WYNIKI BADAŃ
Przedstawiony system oraz algorytm równowaŜenia obciąŜenia zaimplementowany
został w języku JAVA oraz przetestowany w ramach systemu składającego się z czte-
rech węzłów, których konfiguracja podana została poniŜej:
A. Pentium II – 300 MHz/192 MB/ Linux Debian
B. Pentium III – 500 MHz/256 MB/ Linux Debian
C. Pentium M – 1.3 GHz/512 MB/ Linux Debian
D. AMD Sempron 1.5 GHz/256 MB/ MS Windows XP Profesional
Jako zadanie n-dekomponowalne wybrany został problem poszukiwania liczb
pierwszych, natomiast jako zadanie niepodzielne wybrany został problem poszukiwa-
nia ekstremów liniowych funkcji wielu zmiennych z ograniczeniami liniowymi meto-
dą simpleks[5]. Przebadane zostały czasy wykonania pojedynczego zadania, serii pię-
ciu zadań jednego typu oraz dziesięciu zadań, z czego pięć stanowiły zadania niepo-
dzielne, a drugie pięć zadania n-dekomponowalne.
275 37,5 350
250 35 325
32,5 300
225 30 275
200 27,5 250
25
Czas [sek]

Czas [sek]

Czas [sek]

175 225
22,5
150
Średnia 20 Średnia 200
175
Średnia
125 17,5
150
15
100 125
12,5
75 10 100
50 7,5 75
5 50
25
0
A B C D M 2,5
0
A B C D M 25
0
A B C D M
Komputer
Średnia Komputer
Średnia Komputer
Średnia

a) 1 zadanie n-dekomponowalne b) 1 zadanie podzielne c) 5 zadań niepodzielnych


1300 350
1200 325
1100 300
1000 275
900 250
Czas [sek]

Czas [sek]

225
800
700 Średnia 200
175
Średnia
600
150
500
125
400 100
300 75
200 50
100
0
A B C D M 25
0
A B C D M
Komputer
Średnia Komputer
Średnia

d) 5 zadań n-dekomponowalnych e) 5 zadań niepodzielnych oraz 5 zadań podzielnych

Rys. 2. Wyniki pomiarów realizacji zadań na pojedynczych węzłach w rozproszonym systemie reali-
zacji zadań MARS

Na rys. 2 przedstawione zostały czasy wykonania zadań, na pojedynczym węźle


(wszystkie zadania wykonywane były przez jeden komputer) oraz z wykorzystaniem
rozproszonego systemu przetwarzania zadań (MARS) wykorzystującym omówiony
mechanizm równowaŜenia obciąŜeń. Uzyskane wyniki wskazują, Ŝe z wykorzysta-
niem systemu czas wykonania zadania jest średnio 44% mniejszy niŜ przy wykorzy-
staniu tylko jednego węzła obliczeniowego.

5. PODSUMOWANIE
Zaproponowana wieloagentowa architektura systemu rozproszonego przetwarzania
zadań w znaczący sposób pozwoliła zmniejszyć czas oczekiwania klienta na wykona-
nie zadania. Przedstawiony algorytm równowaŜenia zasobów zapewnia ponadto, Ŝe
moc komputerów wchodzących w skład systemu będzie wykorzystana w sposób rów-
nomierny.
Dalsze kierunki rozwoju systemu polegać będą na odejściu od stosowanej obecnie
miary uwzględniającej jedynie stopień obciąŜenia procesora na rzecz bardziej obiek-
tywnej miary uwzględniającej dostępną moc obliczeniową węzła oraz poziom zaso-
bów pamięci. Planowane jest równieŜ opracowanie algorytmów pozwalających na
odzyskanie zadań w przypadku uszkodzenia któregokolwiek z węzłów systemu.

LITERATURA

[1] D.P. Anderson, J. Cobb, E. Korpela, M. Lebofsky, D. Werthimer, SETI@home: an experiment in


public-resource computing, Communications of the ACM, 56-61, 2002
[2] G. Weiss, Multiagent systems: a modern approach to distributed artificial intelligence,
MIT Press, 1999
[3] K. Chow and Y. Kwok, On Load Balancing for Distributed Multiagent Computing, IEEE Transac-
tions On Parallel And Distributed Systems, VOL. 13, NO. 8, AUGUST 2002, 787-801
[4] Andreia C. de Aquino, Adriana C. Biancho, Maurício G.V. Ferreira, José Demisio S. da Silva, A
Multi-agent Load Balancing Architecture for Distributed Object Applications, Real-Time Computing
Systems and Applications, volume 2, 1056-1061, 2006
[5] Operations Research - Linear Programming - Simplex Algorithm, 10 marzec 2007,
http://www.egwald.com/operationsresearch/lpsimplex.php

MULTIAGENT DISTRIBUTED TASK SOLVING SYSTEM ARCHITECURE WITH LOAD BAL-


ANCING ALGORITHM

Article describes architecture of multiagent distributed task solving system and load balancing algo-
rithms used to distribute tasks among systems nodes to achieve better performance. First section present
system architecture and agents responsibility, next section describes details of load balancing algorithm.
Last section contains obtained results and possible future improvements.

You might also like