almost there

This commit is contained in:
Pünkösd Marcell 2021-12-19 01:06:13 +01:00
parent a30824b7e3
commit 6ceed8ed9a
8 changed files with 43 additions and 34 deletions

View File

@ -2,12 +2,12 @@
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
\chapter*{\koszonetnyilvanitas}\addcontentsline{toc}{chapter}{\koszonetnyilvanitas} \chapter*{\koszonetnyilvanitas}\addcontentsline{toc}{chapter}{\koszonetnyilvanitas}
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
Szeretném köszönetemet kifejezni konzulensemnek, Dr.~Maliosz~Markosznak, amiért lehetővé tette, hogy egy ilyen remek témán dolgozzak és emellett a rengeteg segítséget, amit Dr.~Simon~Csabával közösen adtak munkám során. Szeretném köszönetemet kifejezni konzulensemnek, Dr.~Maliosz~Markosznak, tiszteletre méltó türelméért és amiért lehetővé tette, hogy egy ilyen remek témán dolgozzak és emellett a rengeteg segítséget és támogatást, amit Dr.~Simon~Csabával közösen adtak munkám során.
Emellett köszönettel tartozom a Távközlési és Médiainformatikai Tanszék Nagysebességű Hálózatok Laboratóriumának (HSN LAB) és a Schönherz Kollégiumban található Schönherz Elektronikai Műhelynek (SEM), hogy biztosították számomra az eszközöket, szerszámokat és helyszínt a munkámhoz. Külön szeretném megköszönni Torma~Kristófnak, amiért anno segített elindulni a \textit{Kubernetes} rendszerek üzemeltetésének és használatának rögös útján. Így kellő tapasztalattal tudtam belevágni feladatom megoldásába.
Emellett szeretném megköszönni családomnak és barátaimnak a végtelen támogatást amit kaptam. Külön szeretném megköszönni a Schönherz kollégiumban működő Kollégiumi~Számítástechnikai~Kör egykori és jelenleg aktív tagjainak támogatását. A körben eltöltött éveim során elképesztő mennyiségű szakmai tudásra tettem szert, rengeteget fejlődtem és mindemellett sok barátságot szereztem.
Kiemelném Rafael~László és Majthényi-Wass~Józsué nevét: nélkülük minden bizonnyal mérésre alkalmas hardver erőforrás hiányában maradtam volna a dolgozatom egyik legfontosabb pontján.
% lackó, Josh, kszk Emellett szeretném megköszönni barátnőmnek Alexának, családomnak és barátaimnak a végtelen támogatást amit tőlük kaptam.
% kszk

View File

@ -62,7 +62,7 @@ Az előszűrés által adott sávszélesség megtakarítást nehéz megbecsülni
Eredeti Tanító minta részlet & 190 & 152 & 80.0\% \\ Eredeti Tanító minta részlet & 190 & 152 & 80.0\% \\
Erdei hangfelvétel madárcsiripeléssel & 1000 & 288 & 28.8\% \\ Erdei hangfelvétel madárcsiripeléssel & 1000 & 288 & 28.8\% \\
Erdő, kevés madárcsiripeléssel & 316 & 53 & 16.7\% \\ Erdő, kevés madárcsiripeléssel & 316 & 53 & 16.7\% \\
Erdőszél, este & 1500 & ? & ?\% \\ %TODO: Ezt ne felejtsem el kitölteni Éjszaka, havazás & 1500 & 1 & 0.06\% \\
\hline \hline
\end{tabular} \end{tabular}
\caption{Első fázisú \acrshort{mi} áteresztésének vizsgálata különböző hangmintákra} \caption{Első fázisú \acrshort{mi} áteresztésének vizsgálata különböző hangmintákra}

View File

@ -3,20 +3,27 @@
\chapter{Konklúzió} \chapter{Konklúzió}
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
% TODO: Ez az egész fos mert a dipterv1 végére íródott
\section{Összefoglalás} \section{Összefoglalás}
A %féléves A munkám első részében a felhő és peremhálózati számítástechnika alkalmazási területeit, jellemző felhasználási módjait tekintettem át. Megvizsgáltam több keretrendszert is, az ezek mögött rejlő ötleteket és megoldásokat és kiválasztottam az ideális környezetet a feladatom megvalósításához..
munkám első részében a felhő és peremhálózati számítástechnika alkalmazási területeit, jellemző felhasználási módjait tekintettem át. Megvizsgáltam több keretrendszert is, az ezek mögött rejlő ötleteket és megoldásokat.
Az irodalomkutatás során szerzett ismeretek alapján olyan alkalmazásokat kerestem, amelyek működéséhez előnyösen járul hozzá a peremhálózati rendszerek alkalmazása. Kutatásaim során kettő alkalmazást is találtam, amelyek egyenként különböző előnyeit képesek kihasználni a felhő és peremhálózati rendszerek együttes alkalmazásának. Az alkalmazásokat részletesen tanulmányoztam és bemutattam. Az irodalomkutatás során szerzett ismeretek alapján olyan alkalmazásokat kerestem, amelyek működéséhez előnyösen járul hozzá a peremhálózati rendszerek alkalmazása. Kutatásaim során kettő alkalmazást is találtam, amelyek egyenként különböző előnyeit képesek kihasználni a felhő és peremhálózati rendszerek együttes alkalmazásának. Az alkalmazásokat részletesen tanulmányoztam és bemutattam.
% TODO Ezek után megvizsgáltam a dinamikus átütemezés előnyeit és megvalósítási lehetőségeit a választott alkalmazásaim kontextusában.
% átalakítottam, hogy jó legyen edge-be
% kimértem, hogy jó lett Megterveztem és felállítottam egy tesztkörnyezetet az átalakított alkalmazások tesztelésére. Ez a tesztkörnyezet megfelelő modelljét adta egy éles peremhálózati és felhő rendszernek.
Ezek után az elkészített tesztkörnyezetben demonstráltam a dinamikus komponens mozgatást működését és hatásait felhő és peremhálózati infrastruktúrák közt.
\section{Jövőbeni tervek} \section{Jövőbeni tervek}
% TODO: Big todo Az elkészült ütemező rendszert tekintve érdekes fejlesztési irány lenne megvizsgálni annak a lehetősségét, hogy miként lehetne általánossá tenni a működését annak érdekében, hogy könnyen lehessen újabb illeszteni hozzá. Jelenleg a rendszer elkészítése során csak az általam vizsgált alkalmazások igényeit és működését vettem figyelembe. Úgy vélem egy általános megoldás mindenképpen hiánypótló lenne jelenleg az iparban.
Mint ahogy \aref{sec:birbnetes-evaluation}.\ alfejezetben is említettem, a peremhálózaton futó hangminta előszűrés áteresztő képessége szinte csalódáskeltően alacsony. Mindenképpen meg kell vizsgálni annak a lehetőségét, hogy miként lehet a dinamikus ütemezés kontextusában a skálázást is megvalósítani.
A robotkarok vezérlését megvalósító alkalmazás dinamikus ütemezésénél egy erős megkötés volt, hogy a közvetlen vezérlést megvalósító szolgáltatások belső állapottal rendelkeznek, így preemptív átütemezésük szinte megoldhatatlan. Úgy vélem, hogy megoldható lenne a vezérlési komponenseket állapotmentessé tenni illetve megoldani a biztonságos átütemezését az egyes komponenseknek miközben egy \textit{program} épp fut. Ezzel tovább lehet növelni az alkalmazás flexibilitását és ellenállását a bekövetkező hálózati változásoknak, ezzel is javítva a teljesítőképességét és megbízhatóságát a felhő alapú robotvezérlésnek.
Implementációs szempontból úgy vélem hasznos ötlet lenne a várakozási sorok kiszervezése az egyes előszűrő szolgáltatásokból és egy közös várakozási sort fenntartani minden adatközpontban ahol a feldolgozó egység fut. Ennek az apró változtatásnak hála a skálázás megvalósításával sokkal hatékonyabb lenne az alkalmazás működése, hiszen az újonnan induló komponensek a korábban felgyűlt mintákon is tudnának dolgozni. Emellett egy-egy feldolgozó szolgáltatás kiesése nem járna adatvesztéssel.
% közös queue/site

View File

@ -11,7 +11,7 @@ Ezekre a problémákra adhat megoldást, ha a felhőt kiterjesztjük az eddig me
\section{A dolgozat célja} \section{A dolgozat célja}
Munkám célja, hogy alapos áttekintést adjak a felhő és a peremhálózati számítástechnika jelenlegi állapotáról, alkalmazásának előnyeiről és kihívásairól. Munkámat konkrét alkalmazások segítségével mutatom be és eredményeimet mérésekkel fogom alátámasztani. Munkám célja, hogy alapos áttekintést adjak a felhő és a peremhálózati számítástechnika jelenlegi állapotáról, alkalmazásának előnyeiről és kihívásairól. Munkámat konkrét alkalmazások segítségével mutatom be és eredményeimet mérésekkel támasztom alá.
\section{Fejezetek áttekintése} \section{Fejezetek áttekintése}
@ -19,10 +19,12 @@ Az első fejezet bemutatja a feladatot és a kutatás hátterét.
A második fejezetben részletesen bemutatom a felhő és a peremhálózati számítástechnikát és az azt megvalósító keretrendszereket. A második fejezetben részletesen bemutatom a felhő és a peremhálózati számítástechnikát és az azt megvalósító keretrendszereket.
A harmadik fejezet egy korábbi felhő és \acrshort{iot} alapú projektet mutat be, amely a szőlővidékek kártevővédelmére lett kifejlesztve. Emellett megvizsgálja a peremhálózati rendszerek alkalmazásának lehetőségét. A harmadik fejezet egy felhő és \acrshort{iot} alapú projektet mutat be, amely a szőlővidékek kártevővédelmére lett kifejlesztve. Emellett megvizsgálja a peremhálózati rendszerek alkalmazásának lehetőségét. És bemutatja annak tervezését és implementációját.
A negyedik fejezet egy gyártósori szcenáriót mutat be, ahol szintén körbejárja a peremhálózati rendszerek alkalmazásának lehetőségét, majd bemutatja az átalakítás tervezési és implementálási folyamatát. A negyedik fejezet egy gyártósori szcenáriót mutat be, ahol szintén körbejárja a peremhálózati rendszerek alkalmazásának lehetőségét, majd bemutatja az átalakítás tervezési és implementálási folyamatát.
Az ötödik fejezet a végeszközöket kiszolgáló komponensek dinamikus mozgatásával foglalkozik a felhő adatközpont és a peremhálózati rendszerek között. Az ötödik fejezet a végeszközöket kiszolgáló komponensek dinamikus mozgatásával foglalkozik a felhő adatközpont és a peremhálózati rendszerek viszonylatában.
A hatodik fejezet egy teszt környezet tervezésével és kialakításával foglalkozik, majd a hetedik fejezet a korábban ismertetett két alkalmazás tesztelését mutatja be ebben a környezetben. A hatodik fejezet egy teszt környezet tervezésével és kialakításával foglalkozik, majd a hetedik fejezet a korábban ismertetett két alkalmazás tesztelését mutatja be ebben a környezetben.
Ezután munkám eredményét a nyolcadik fejezetben foglalom össze.

View File

@ -12,7 +12,7 @@ A peremhálózati adatközpontok lehetőségeinek dinamikus kihasználásra felk
\subsection{Környezet} \subsection{Környezet}
Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ szekcióban ismertetett ütemező szoftvert is. Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ alfejezetben ismertetett ütemező szoftvert is.
Az alkalmazás működésének teszteléséhez egy olyan forgatókönyvet állítottam össze, amelyben az ütemező számára mind a három adatközpont potenciális jelölt lehet az előszűrő szolgáltatás beütemezésére. Ehhez az alábbi prioritási sorrendet állítottam fel: Az alkalmazás működésének teszteléséhez egy olyan forgatókönyvet állítottam össze, amelyben az ütemező számára mind a három adatközpont potenciális jelölt lehet az előszűrő szolgáltatás beütemezésére. Ehhez az alábbi prioritási sorrendet állítottam fel:
\begin{enumerate} \begin{enumerate}
@ -21,7 +21,7 @@ Az alkalmazás működésének teszteléséhez egy olyan forgatókönyvet állí
\item \texttt{cloud} \item \texttt{cloud}
\end{enumerate} \end{enumerate}
A mérés elvégezéséhez szükségem volt arra, hogy a klienseket emuláló virtuális gép képes legyen több \acrshort{iot} eszköz emulálására. \Aref{sec:birbnetes_short_desc}.\ szekcióban ismertetett kétrétegű szoftver architektúra miatt ez könnyen kivitelezhető volt. Egy új platform illesztő szoftver komponenst implementáltam, amely az \acrshort{iot} eszközön lévő hardverelemeket emulálja. A mikrofon emulációja egy fixen felvett hangfájl tartalmát szolgálja ki a logikai résznek, a többi hardver elem működése pedig csak naplózásra kerül. A mérés elvégezéséhez szükségem volt arra, hogy a klienseket emuláló virtuális gép képes legyen több \acrshort{iot} eszköz emulálására. \Aref{sec:birbnetes_short_desc}.\ alfejezetben ismertetett kétrétegű szoftver architektúra miatt ez könnyen kivitelezhető volt. Egy új platform illesztő szoftver komponenst implementáltam, amely az \acrshort{iot} eszközön lévő hardverelemeket emulálja. A mikrofon emulációja egy fixen felvett hangfájl tartalmát szolgálja ki a logikai résznek, a többi hardver elem működése pedig csak naplózásra kerül.
Miután ez megvolt egy egyszerű szkriptet készítettem, amely konfigurálható számú \acrshort{iot} hardver emulációját indítja el és felel az életciklusuk kezeléséért. Ennek segítségével a mérések során tetszőleges számú eszközt tudtam emulálni. Miután ez megvolt egy egyszerű szkriptet készítettem, amely konfigurálható számú \acrshort{iot} hardver emulációját indítja el és felel az életciklusuk kezeléséért. Ennek segítségével a mérések során tetszőleges számú eszközt tudtam emulálni.
@ -44,6 +44,7 @@ Egy eszköz átütemezése nem orvosolta még a problémát, ezért átütemezet
\subsection{Értékelés} \subsection{Értékelés}
\label{sec:birbnetes-evaluation}
A tesztek eredménye jól demonstrálja, az ütemező algoritmus és az átalakított alkalmazások helyes működését. A tesztek eredménye jól demonstrálja, az ütemező algoritmus és az átalakított alkalmazások helyes működését.
@ -57,9 +58,9 @@ Emellett feltűnő volt, hogy a rendszer nagyon lassan reagál a terhelésre és
\subsection{Környezet} \subsection{Környezet}
Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ szekcióban ismertetett ütemező szoftvert metrika gyűjtő komponenseit is, mivel itt nem volt szükség az ott ismertetett ütemező futtatására. Az alkalmazás teszteléséhez feltelepítettem az alkalmazást a felhő adatközpontot szimbolizáló klaszterbe. Ugyanebbe a klaszterbe telepítettem \aref{sec:scheduler}.\ alfejezetben ismertetett ütemező szoftvert metrika gyűjtő komponenseit is, mivel itt nem volt szükség az ott ismertetett ütemező futtatására.
A robotkarok szimulálására \aref{sec:ursim_simulator}.\ szekcióban ismertetett \textit{DockURSim} szoftvert futtattam két példányban. Mivel a vezérlő szolgáltatások \acrshort{ip} cím alapján kapcsolódnak az egyes robotkarokhoz, így a klienseket emuláló virtuális gépnek felvettem két \acrshort{ip} címet, az egyik szimulátor portjait az egyik címhez a másikat a másikhoz rendeltem. Így képes voltam két robotkar szimulálására. A robotkarok szimulálására \aref{sec:ursim_simulator}.\ alfejezetben ismertetett \textit{DockURSim} szoftvert futtattam két példányban. Mivel a vezérlő szolgáltatások \acrshort{ip} cím alapján kapcsolódnak az egyes robotkarokhoz, így a klienseket emuláló virtuális gépnek felvettem két \acrshort{ip} címet, az egyik szimulátor portjait az egyik címhez a másikat a másikhoz rendeltem. Így képes voltam két robotkar szimulálására.
A méréshez növeltem a kliens és az egyes adatközpontok közötti linkek késleltetését úgy, hogy a következő értékeket érjék el: A méréshez növeltem a kliens és az egyes adatközpontok közötti linkek késleltetését úgy, hogy a következő értékeket érjék el:
\begin{itemize} \begin{itemize}

View File

@ -257,4 +257,4 @@ Népszerűségének köszönhetően sok dokumentáció, leírás és egyéb seg
% TODO: Még lehetne írni jókat erről % TODO: Még lehetne írni jókat erről
\textbf{A feladatom megoldásához én ezt a keretrendszert választottam}, ennek okát \aref{sec:cloud_framework}.\ szekcióban részletezem. \textbf{A feladatom megoldásához én ezt a keretrendszert választottam}, ennek okát \aref{sec:cloud_framework}.\ alfejezetben részletezem.

View File

@ -4,8 +4,7 @@
\label{chapter:dynamic_scheduling} \label{chapter:dynamic_scheduling}
%---------------------------------------------------------------------------- %----------------------------------------------------------------------------
Az előző fejezetekben ismertetett, átalakított alkalmazások jól ki tudják használni a peremhálózati informatikai infrastruktúra adta lehetőségeket. Mint azt a \aref{sec:peremhalozati_rendszerek}.\ %szekcióban Az előző fejezetekben ismertetett, átalakított alkalmazások jól ki tudják használni a peremhálózati informatikai infrastruktúra adta lehetőségeket. Mint azt a \aref{sec:peremhalozati_rendszerek}.\ alfejezetben is ismertettem, a peremhálózati rendszerek és a hagyományos adatközpontok több dologban különböznek. Egyik ilyen különbség a telepítésük sűrűsége. Ez a tulajdonság lehetővé teszi, hogy a megvalósított alkalmazás szempontjából bizonyos szolgáltatásokat a felhasználókhoz \enquote{közel} futtasson. Ennek a \enquote{közelségnek} önmagában számos előnye tud lenni, mint például a csökkentett hálózati késleltetés és terhelés. Tipikusan a peremhálózati infrastruktúrákra jellemző, hogy a felhő végtelennek tűnő számítási kapacitásához képest erősen limitált erőforrások állnak rendelkezésre.
alfejezetben is ismertettem, a peremhálózati rendszerek és a hagyományos adatközpontok több dologban különböznek. Egyik ilyen különbség a telepítésük sűrűsége. Ez a tulajdonság lehetővé teszi, hogy a megvalósított alkalmazás szempontjából bizonyos szolgáltatásokat a felhasználókhoz \enquote{közel} futtasson. Ennek a \enquote{közelségnek} önmagában számos előnye tud lenni, mint például a csökkentett hálózati késleltetés és terhelés. Tipikusan a peremhálózati infrastruktúrákra jellemző, hogy a felhő végtelennek tűnő számítási kapacitásához képest erősen limitált erőforrások állnak rendelkezésre.
Könnyen beláthatjuk ezekből adódóan, hogy fontos szerepe van annak a kérdésnek, hogy egyes szolgáltatásokat mikor és melyik peremhálózati rendszeren futtatunk, vagy hogy megéri-e kihelyezni őket a felhő által nyújtott futtatókörnyezetből. Egy rosszul megválasztott szolgáltatás elhelyezés könnyen lehet, hogy az előnyök teljes ellentétét idézi elő megnövekedett költségek mellett. Mivel a peremhálózati rendszerek sokkal nagyobb számban állnak rendelkezésre és a helyes elhelyezés is kockázatos feladat, ezért az elhelyezési feladatokat minden esetben \enquote{kézzel} megoldani jelentős kihívást tud jelenteni. Könnyen beláthatjuk ezekből adódóan, hogy fontos szerepe van annak a kérdésnek, hogy egyes szolgáltatásokat mikor és melyik peremhálózati rendszeren futtatunk, vagy hogy megéri-e kihelyezni őket a felhő által nyújtott futtatókörnyezetből. Egy rosszul megválasztott szolgáltatás elhelyezés könnyen lehet, hogy az előnyök teljes ellentétét idézi elő megnövekedett költségek mellett. Mivel a peremhálózati rendszerek sokkal nagyobb számban állnak rendelkezésre és a helyes elhelyezés is kockázatos feladat, ezért az elhelyezési feladatokat minden esetben \enquote{kézzel} megoldani jelentős kihívást tud jelenteni.
@ -189,14 +188,14 @@ Ennek a szolgáltatásnak a feladata, hogy számontartsa az egyes eszközök jel
Ha a szolgáltatásból egy eddig ismeretlen eszköz kéri le az ütemezését, akkor azt egy dinamikusan megválasztott \enquote{alapértelmezett} adatközponthoz rendeli. Ezután ezt az ütemezési döntést elmenti és innentől kezdve ugyanúgy van kezelve az új eszköz is, mint az összes többi. Ha a szolgáltatásból egy eddig ismeretlen eszköz kéri le az ütemezését, akkor azt egy dinamikusan megválasztott \enquote{alapértelmezett} adatközponthoz rendeli. Ezután ezt az ütemezési döntést elmenti és innentől kezdve ugyanúgy van kezelve az új eszköz is, mint az összes többi.
A kiszolgált adatokat egy kulcs-érték adatbázisban tárolja. Ehhez \textit{Redis} adatbázist használtam, ennek oka az, hogy a \textit{Redis} támogatja az értékekhez lejárati idő rendelését. A lejárai idő leteltével az értékeket automatikusan törli. Ennek a segítségével számos funkcionalitást könnyebb volt implementálni. A \textit{Redis} támogatja továbbá az osztott memóriaként való funkcionalitást, amelyet kihasználva \aref{sec:birb-scheduler}.\ szekcióban ismertetett szolgáltatással való kommunikációt megoldottam. A kiszolgált adatokat egy kulcs-érték adatbázisban tárolja. Ehhez \textit{Redis} adatbázist használtam, ennek oka az, hogy a \textit{Redis} támogatja az értékekhez lejárati idő rendelését. A lejárai idő leteltével az értékeket automatikusan törli. Ennek a segítségével számos funkcionalitást könnyebb volt implementálni. A \textit{Redis} támogatja továbbá az osztott memóriaként való funkcionalitást, amelyet kihasználva \aref{sec:birb-scheduler}.\ alfejezetben ismertetett szolgáltatással való kommunikációt megoldottam.
\subsubsection{Dinamikus újra-ütemező} \subsubsection{Dinamikus újra-ütemező}
\label{sec:birb-scheduler} \label{sec:birb-scheduler}
\Aref{sec:birb-scheduler-teller}.\ szekcióban ismertetett szolgáltatás csak egy statikus hozzárendelést valósít meg az új eszközök és az adatközpontok között. Viszont ezek után nem változtatja meg a döntését. Ezeknek a döntéseknek a felülvizsgálatára és az \enquote{alapértelmezett} adatközpont dinamikus megváltoztatására szolgál ez a szolgáltatás. \Aref{sec:birb-scheduler-teller}.\ alfejezetben ismertetett szolgáltatás csak egy statikus hozzárendelést valósít meg az új eszközök és az adatközpontok között. Viszont ezek után nem változtatja meg a döntését. Ezeknek a döntéseknek a felülvizsgálatára és az \enquote{alapértelmezett} adatközpont dinamikus megváltoztatására szolgál ez a szolgáltatás.
Ez a szolgáltatás valósítja meg \aref{sec:scheduling-algo}.\ szekcióban vázolt periodikusan futó ütemező algoritmust. Ez a szolgáltatás valósítja meg \aref{sec:scheduling-algo}.\ alfejezetben vázolt periodikusan futó ütemező algoritmust.
Futása során a kiértékelt metrikákat lekérdezi a \textit{Mérés kezelő} szolgáltatásból. Majd ezek alapján és az osztott \textit{Redis} adatbázisban tárolt információk alapján meghozza az ütemezési döntést. Szükség esetén \textit{Kubernetes} \acrshort{api} hívásokkal elindítja a \textit{KubeFed} által kezelt szolgáltatást a megfelelő adatközpontban majd ezek után az ütemezési döntést rögzíti a az adatbázisban. így legközelebb amikor az eszköz frissíti a konfigurációját már az újonnan indított szolgáltatáshoz küldi az információkat, ezzel megvalósítva a dinamikus átütemezést. Futása során a kiértékelt metrikákat lekérdezi a \textit{Mérés kezelő} szolgáltatásból. Majd ezek alapján és az osztott \textit{Redis} adatbázisban tárolt információk alapján meghozza az ütemezési döntést. Szükség esetén \textit{Kubernetes} \acrshort{api} hívásokkal elindítja a \textit{KubeFed} által kezelt szolgáltatást a megfelelő adatközpontban majd ezek után az ütemezési döntést rögzíti a az adatbázisban. így legközelebb amikor az eszköz frissíti a konfigurációját már az újonnan indított szolgáltatáshoz küldi az információkat, ezzel megvalósítva a dinamikus átütemezést.
@ -208,7 +207,7 @@ A szolgáltatás azt is ellenőrzi, hogy a kijelölt \enquote{alapértelmezett}
A robotkarokat vezérlő alkalmazás számára szükség van arra az információra, hogy az egyes adatközpontokkal milyen minőségű a link összeköttetése. A robotkarokat vezérlő alkalmazás számára szükség van arra az információra, hogy az egyes adatközpontokkal milyen minőségű a link összeköttetése.
Ennek a megvalósítására egy egyszerű szkriptet készítettem, amely leméri az összes adatközponttal szembeni késleltetést, majd ezeket elküldi \aref{sec:birb-latency-collector}.\ szekcióban ismertetett szolgáltatás számára, amely így képes arról kiértékelést készíteni. Ennek a megvalósítására egy egyszerű szkriptet készítettem, amely leméri az összes adatközponttal szembeni késleltetést, majd ezeket elküldi \aref{sec:birb-latency-collector}.\ alfejezetben ismertetett szolgáltatás számára, amely így képes arról kiértékelést készíteni.
A késleltetés mérésére kézenfekvő megoldás lehet a hagyományos \acrfull{icmp} által biztosított \textit{Ping} kérésekkel mérni a körülfordulási időt. De ez csak egy nagyon limitált eredményt ad egy konkrét végponthoz. A késleltetés mérésére kézenfekvő megoldás lehet a hagyományos \acrfull{icmp} által biztosított \textit{Ping} kérésekkel mérni a körülfordulási időt. De ez csak egy nagyon limitált eredményt ad egy konkrét végponthoz.

View File

@ -155,11 +155,11 @@ Az adatok gyűjtése nem késleltetés érzékeny, ezért nem okoz problémát,
\subsection{Peremhálózati szolgáltatások} % Peremhálózati rendszer basically \subsection{Peremhálózati szolgáltatások} % Peremhálózati rendszer basically
\label{sec:single_robot_contoller_plans} \label{sec:single_robot_contoller_plans}
\Aref{sec:edge_layer_plans}.\ szekcióban ismertetettek alapján terveztem meg a peremhálózati rendszerben futó mikroszolgáltatás halmazt. Jelenleg ez egyetlen egy mikroszolgáltatásból áll, ez a szolgáltatás a \textit{program}ok futtatását valósítja meg. \Aref{sec:edge_layer_plans}.\ alfejezetben ismertetettek alapján terveztem meg a peremhálózati rendszerben futó mikroszolgáltatás halmazt. Jelenleg ez egyetlen egy mikroszolgáltatásból áll, ez a szolgáltatás a \textit{program}ok futtatását valósítja meg.
Egy program egyszerre csak egy robotkar működését írja le, így egy ilyen komponens egyszerre csak egy robotkarhoz kapcsolódik. A demonstráció végrehajtásához két komponensnek kell kapcsolódnia. Egy program egyszerre csak egy robotkar működését írja le, így egy ilyen komponens egyszerre csak egy robotkarhoz kapcsolódik. A demonstráció végrehajtásához két komponensnek kell kapcsolódnia.
Emellett meg kell oldania olyan problémákat is, amelyek \aref{sec:ursim_demo_control}.\ szekcióban ismertetett programnál adottak -- vagy legalábbis közel-triviálisan megoldhatóak -- voltak. Emellett meg kell oldania olyan problémákat is, amelyek \aref{sec:ursim_demo_control}.\ alfejezetben ismertetett programnál adottak -- vagy legalábbis közel-triviálisan megoldhatóak -- voltak.
\subsubsection{Végrehajtási keretrendszer} \subsubsection{Végrehajtási keretrendszer}
\label{sec:ursim_execution_framework} \label{sec:ursim_execution_framework}
@ -225,7 +225,7 @@ A \textit{plugin}ek további funkcionalitást regisztrálhatnak, amiket az \acrs
\subsubsection{\textit{Program Service}} \subsubsection{\textit{Program Service}}
Az architektúra, melyet \aref{sec:edge_layer_plans}.\ szekcióban bemutattam lehetővé teszi, hogy a felhőben futó komponensek bármilyen programot adjanak a peremhálózati réteg számára, legyen az automatikusan vagy részben automatikusan generált. Az architektúra, melyet \aref{sec:edge_layer_plans}.\ alfejezetben bemutattam lehetővé teszi, hogy a felhőben futó komponensek bármilyen programot adjanak a peremhálózati réteg számára, legyen az automatikusan vagy részben automatikusan generált.
Mivel sem a demonstráció, sem a dolgozatom szempontjából nem lényeges, hogy milyen módon keletkeznek a \textit{program}ok magas szinten, ezért itt csak egy egyszerű, előre elkészített programokat tároló szolgáltatást terveztem. Mivel sem a demonstráció, sem a dolgozatom szempontjából nem lényeges, hogy milyen módon keletkeznek a \textit{program}ok magas szinten, ezért itt csak egy egyszerű, előre elkészített programokat tároló szolgáltatást terveztem.
@ -255,7 +255,7 @@ Az összes általam választott szolgáltatást \gls{python} nyelven implementá
\subsection{Mikroszolgáltatások} \subsection{Mikroszolgáltatások}
Mint ahogy \aref{fig:usrsim_services_plan-clean}.\ ábra is mutatja, \aref{sec:single_robot_contoller_plans}.\ és \aref{sec:cloud_layer_plans}.\ szekciókban ismertetett mikroszolgáltatásokat implementáltam. Mint ahogy \aref{fig:usrsim_services_plan-clean}.\ ábra is mutatja, \aref{sec:single_robot_contoller_plans}.\ és \aref{sec:cloud_layer_plans}.\ alfejezetben ismertetett mikroszolgáltatásokat implementáltam.
\begin{figure}[h!] \begin{figure}[h!]
\centering \centering
@ -297,7 +297,7 @@ Minden \textit{plugin} egy különálló osztályban van megvalósítva. Ennek p
A beregisztrált utasítás osztályok lényegében egy \textit{factory} mintát valósítanak meg. Amikor a szolgáltatás betölt egy \textit{programot} akkor először minden lépését értelmezi azzal, hogy ezekkel a \textit{factory} osztályokkal példányosítja a konkrét utasítás objektumot. Ezen a ponton lehetőség van a bevitt adatok helyességének ellenőrzésére, hogy ez ne a futtatáskor történjen meg, ezzel futtatás közben spórolva a \acrshort{cpu} ciklusokkal és \textit{fail-early} megközelítés szerint még az előtt kiderülnek a problémák, hogy a program futtatásra kerülne. A beregisztrált utasítás osztályok lényegében egy \textit{factory} mintát valósítanak meg. Amikor a szolgáltatás betölt egy \textit{programot} akkor először minden lépését értelmezi azzal, hogy ezekkel a \textit{factory} osztályokkal példányosítja a konkrét utasítás objektumot. Ezen a ponton lehetőség van a bevitt adatok helyességének ellenőrzésére, hogy ez ne a futtatáskor történjen meg, ezzel futtatás közben spórolva a \acrshort{cpu} ciklusokkal és \textit{fail-early} megközelítés szerint még az előtt kiderülnek a problémák, hogy a program futtatásra kerülne.
Az értelmezett utasításokat listába szervezve készíti elő a futtatható \textit{program}ot a szolgáltatás. Ezek a példányosított utasítások implementálják \aref{sec:ursim_execution_framework}.\ szekcióban említett három fő funkciót: \texttt{execute}, \texttt{abort} és \texttt{describe}. Az egyes paraméterek összerendelése ebben a lépésben történik meg az utasításokhoz. Az értelmezett utasításokat listába szervezve készíti elő a futtatható \textit{program}ot a szolgáltatás. Ezek a példányosított utasítások implementálják \aref{sec:ursim_execution_framework}.\ alfejezetben említett három fő funkciót: \texttt{execute}, \texttt{abort} és \texttt{describe}. Az egyes paraméterek összerendelése ebben a lépésben történik meg az utasításokhoz.
Amikor egy program futtatásra kerül, akkor a komponens egyesével lépkedve a listán minden elemnek meghívja az \texttt{execute} függvényét. Ha meg kell szakítani a futást, akkor az éppen futó lépes \texttt{abort} függvényét meghívva, leállítja azt, és a következő parancsot már nem hajtja végre. Amikor egy program futtatásra kerül, akkor a komponens egyesével lépkedve a listán minden elemnek meghívja az \texttt{execute} függvényét. Ha meg kell szakítani a futást, akkor az éppen futó lépes \texttt{abort} függvényét meghívva, leállítja azt, és a következő parancsot már nem hajtja végre.
@ -311,7 +311,7 @@ A \textit{plugin} inicializációjakor kapcsolódik a \textit{Redis} adatbázish
Az általa szolgáltatott utasításnak két paramétere van, az egyik a szinkronizációs pont neve, a második pedig a komponensek száma, amelyek ugyanezen a ponton várakoznak. Annak érdekében, hogy ez egyedi legyen, és két különálló lefutása a programnak ne befolyásolja az adatbázis tartalmát, ezáltal ne legyen hatással a program lefutására, így az adatbázisban tárolt kulcsok nevéhez a futtatási azonosítót is hozzáfűzi. Az általa szolgáltatott utasításnak két paramétere van, az egyik a szinkronizációs pont neve, a második pedig a komponensek száma, amelyek ugyanezen a ponton várakoznak. Annak érdekében, hogy ez egyedi legyen, és két különálló lefutása a programnak ne befolyásolja az adatbázis tartalmát, ezáltal ne legyen hatással a program lefutására, így az adatbázisban tárolt kulcsok nevéhez a futtatási azonosítót is hozzáfűzi.
Amikor a program futása erre a pontra érkezik, akkor az várakozni fog egészen addig, amíg az összes többi komponens által futtatott program egy ugyan ilyen nevű szinkronizációs pontra nem ér. Ezután \aref{sec:ursim_snyc_proto}.\ szekcióban ismertetettek szerint \enquote{egyeztetett} időpontban halad tovább. Amikor a program futása erre a pontra érkezik, akkor az várakozni fog egészen addig, amíg az összes többi komponens által futtatott program egy ugyan ilyen nevű szinkronizációs pontra nem ér. Ezután \aref{sec:ursim_snyc_proto}.\ alfejezetben ismertetettek szerint \enquote{egyeztetett} időpontban halad tovább.
\subsubsection{\textit{UR-RTDE Plugin}} \subsubsection{\textit{UR-RTDE Plugin}}