• Nie Znaleziono Wyników

Zastosowanie QEFI do optymalizacji niezawodno´sci

5. Mechanizmy wykrywania i obsługi bł˛edów

5.7. Zastosowanie QEFI do optymalizacji niezawodno´sci

Platforma QEFI przedstawiona w rozdziale 3 umo˙zliwia optymalizacj˛e mechanizmów zwi˛ekszania niezawodno´sci. Wprowadzanie mechanizmów tego typu wi ˛a˙ze si˛e z narzutem na czas wykonania oraz pami˛e´c. Dodatkowo ka˙zdy z mechanizmów mo˙ze charakteryzowa´c si˛e innym poziomem skuteczno´sci przy obsłudze bł˛edów. Zastosowanie QEFI pozwala na przeprowadzenie bada´n umo˙zliwiaj ˛acych okre´sli´c parametry tych mechanizmów w wybranych scenariuszach.

W 5.6.1 przedstawiono eksperymenty, które pozwoliły oceni´c skuteczno´s´c zaproponowanego przez autora mechanizmu obsługi przerwa´n. O ile w przypadku tego mechanizmu koszt narzutu na czas wykonania zwi ˛azany jest jedynie z podj˛eciem działa´n naprawczych, a koszt pami˛eci to przede wszystkim zapasowy obraz kodu j ˛adra systemu operacyjnego, to w przypadku próby zastosowa´n mechanizmów opisanych w 5.6.3 i 5.6.4 trudno jest oceni´c narzut tych mechanizmów bez przeprowadzenia eksperymentów. W tych przypadkach szczególnie skuteczny mo˙ze okaza´c si˛e mechanizm nieinwazyjnego ´sledzenia wykonania opisany w 3.4.3, dzi˛eki któremu mo˙zliwe jest wyznaczenie dokładnej liczby wykona´n wskazanego kodu i na tej podstawie oszacowanie narzutu badanego mechanizmu.

Dodatkowo dzi˛eki zastosowaniu QEFI mo˙zliwe jest badanie w sposób automatyczny równie˙z

wpływu innych parametrów na niezawodno´s´c oprogramowania – przykładowo: flagi kompilacji (np. poziom optymalizacji kodu wykonywalnego), czy dost˛epna ilo´s´c wolnej pami˛eci (co mo˙ze mie´c wpływ na sposób działania mechanizmów alokacji).

QEFI pozwala na ewaluacj˛e nie tylko mechanizmów ukierunkowanych na kod, stos, czy dane systemu operacyjnego, ale równie˙z na poprawno´s´c działania sterowników w obliczu wyst ˛apienia bł˛edów w urz ˛adzeniach wej´scia/wyj´scia. Jest to szczególnie praktyczne zastosowanie QEFI, poniewa˙z badanie tego typu oprogramowania jest trudne w zwi ˛azku z konieczno´sci ˛a dysponowania testowanym urz ˛adzeniem, w którym mo˙zliwe jest symulowanie bł˛edów lub jego emulowanym odpowiednikiem. W przypadku istnienia emulowanych odpowiedników opracowywane s ˛a rozwi ˛azania pozwalaj ˛ace na implementacj˛e testów jednostkowych z wykorzystaniem QEMU16 – dzi˛eki zastosowaniu mechanizmów wstrzykiwania bł˛edów w QEFI mo˙zliwe byłoby wzbogacenie tego typu testów o weryfikacje działania sterowników w przypadku anomalii (tak jak zostało to przedstawione w 4.5.1).

5.8. Podsumowanie

W rozdziale przedstawiono przekrój rozwi ˛aza´n słu˙z ˛acych zwi˛ekszaniu niezawodno´sci.

Zaproponowane zostały autorskie mechanizmy: metoda obsługi przerwa´n, algorytm brudnych zasobów oraz metoda ochrony stosu. Dodatkowo przeprowadzono dyskusj˛e nad zastosowaniem QEFI do optymalizacji niezawodno´sci.

Skuteczno´s´c opracowanej oryginalnej metody obsługi pułapek procesora (szerzej w 5.6.1) zweryfikowano z zastosowaniem metodologi eksperymentów opisanej w rozdziale 3. Dzi˛eki jej implementacji mo˙zliwe było zwi˛ekszenie liczby prawidłowych wyników testowanego systemu o około 15 p.p.. Na podstawie dalszej analizy sytuacji wyj ˛atkowych zdefiniowany został problem odtwarzalno´sci i przedstawiony został algorytm brudnych zasobów jako jego rozwi ˛azanie. Symulacja działania algorytmu pozwoliła na oszacowanie jego potencjalnej skuteczno´sci – algorytm znalazł rozwi ˛azanie problemu odtwarzalno´sci dla około 7% sytuacji awaryjnych nieobsłu˙zonych metod ˛a obsługi przerwa´n, co potencjalnie pozwoliłoby zwi˛ekszy´c udział prawidłowych wyników testów o około 3 p.p.. Warto zaznaczy´c, ˙ze skuteczno´s´c algorytmu mo˙ze by´c zwi˛ekszona poprzez wzbogacenie bazy instrukcji oraz rozwini˛ecie technik odtwarzania danych ze stosu oraz z zastosowaniem odwrotnych operacji arytmetycznych.

Przedstawiona technika jest odmian ˛a technik backward recovery, gdzie nast˛epuje próba odwrócenia skutków niepo˙z ˛adanych zmian w systemie b˛ed ˛acych wynikiem zaburze´n.

Zastosowanie opracowanej metody ma na celu unikni˛ecie awarii, jednak wynik uzyskany po wykonaniu naprawionego kodu powinien by´c opatrzony informacj ˛a o potencjalnym zaburzeniu,

16 http://people.igalia.com/berto/files/qemu-linuxcon-slides.pdf

a tak˙ze mechanizmy niezawodno´sciowe wy˙zszego poziomu powinny zapewni´c tolerowanie potencjalnie wygenerowanych nieprawidłowych danych.

W 5.6.3 zaprezentowano metod˛e ochrony stosu poprzez umieszczanie dodatkowych danych w nieaktywnej cz˛e´sci stosu (za wska´znikiem wierzchołka stosu), które s ˛a wykorzystywane w sytuacji zgłoszenia awarii spowodowanej przekłamaniem adresu powrotu z instrukcji.

Natomiast w 5.6.4 opisano dwie interesuj ˛ace metody zwi˛ekszania niezawodno´sci obsługi danych znane z literatury. Celem tych przykładów była ilustracja potencjalnych zysków wynikaj ˛acych z zaanga˙zowania kompilatora w projektowanie mechanizmów zwi˛ekszania niezawodno´sci.

W ostatniej cz˛e´sci rozdziału przedstawiono zastosowanie QEFI do optymalizacji niezawodno´sci poprzez mo˙zliwo´s´c badania skuteczno´sci oraz kosztów poszczególnych mechanizmów.

6. Podsumowanie

W rozprawie przedstawiono oryginaln ˛a metodyk˛e oceny niezawodno´sci systemu komputerowego z zastosowaniem emulacji wraz z implementacj ˛a specjalistycznego narz˛edzia QEFI. Teza oraz cel rozprawy sformułowane s ˛a w rozdziale 1. Dzi˛eki opracowanej metodyce stworzono mo˙zliwo´s´c oceny niezawodno´sci oprogramowania systemów operacyjnych, która jak przedstawiono w 1.1, według autora jest niedostatecznie opisana w literaturze. QEFI mo˙ze by´c zastosowane do optymalizacji mechanizmów detekcji i obsługi (tolerowania) bł˛edów.

W rozdziale 2 przedstawiono model rozwa˙zanego systemu komputerowego i oprogramowania, przegl ˛ad literatury dotycz ˛acy dziedziny badania niezawodno´sci oraz wprowadzono miary wykorzystywane w dalszej cz˛e´sci rozprawy.

Poni˙zej zestawiono najwa˙zniejsze osi ˛agni˛ecia autora:

Opracowanie metodyki symulacji bł˛edów z zastosowaniem emulacji

Na podstawie analizy dost˛epnych mechanizmów emulacji systemów komputerowych (patrz 3.2) i potencjalnych zysków, wynikaj ˛acych z ich u˙zycia (patrz 3.3), opracowana została oryginalna metodyka przeprowadzania eksperymentów (patrz 3.4.5) oraz szereg algorytmów umo˙zliwiaj ˛acych jej realizacj˛e. Metodyka została zaimplementowana w postaci platformy QEFI wykorzystuj ˛acej emulator systemu komputerowego QEMU (patrz 3.4.6).

Zaproponowana metodyka umo˙zliwia istotne udoskonalenia wzgl˛edem rozwi ˛aza´n znanych z literatury: mo˙zliwo´s´c badania niezawodno´sci oprogramowania systemów operacyjnych oraz mo˙zliwo´s´c zastosowania nowych modeli bł˛edów. Istotn ˛a funkcj ˛a opracowanego rozwi ˛azania jest funkcja nieinwazyjnego ´sledzenia emulowanego systemu (patrz 3.4.3).

Metodyka została opracowana uwzgl˛edniaj ˛ac mo˙zliwo´s´c rozpraszania, co znacz ˛aco skróciło czas przeprowadzania eksperymentów.

Opracowanie scenariuszy testowych do badania efektów bł˛edów w systemach operacyjnych

Opracowane zostały oryginalne scenariusze testowe wykorzystane do oceny niezawodno´sci systemów operacyjnych w szeregu eksperymentów przeprowadzonych z u˙zyciem QEFI.

Dzi˛eki opracowanej metodyce mo˙zliwe było przeprowadzenie eksperymentów pozwalaj ˛acych na porównanie wra˙zliwo´sci na bł˛edy pami˛eci wielu architektur sprz˛etowych na poziomie ISA (patrz 4.3), w których wykazano, ˙ze niektóre architektury w sposób naturalny s ˛a mniej podatne na bł˛edy przekłama´n pami˛eci. Mo˙zliwe było równie˙z porównanie ró˙znych

systemów operacyjnych (patrz 4.4), w którym stwierdzono ró˙zn ˛a podatno´s´c na bł˛edy i inny poziom szczegółowo´sci zgłaszanych komunikatów dla ka˙zdego z systemów. Przeprowadzenie porównania architektur sprz˛etowych oraz systemów operacyjnych, było mo˙zliwe dzi˛eki opracowaniu symulowania bł˛edów na poziomie emulatora, co pozwoliło na unikni˛ecie modyfikacji badanego oprogramowania. Dodatkowo mechanizmy zaprojektowane w ramach metodyki pozwoliły na zaburzanie danych przesyłanych z emulowanych urz ˛adze´n (patrz 4.5.1), a tak˙ze wstrzykiwanie bł˛edów w ró˙zne typy danych systemu operacyjnego (patrz 4.5.2, 4.5.3):

kod, stos, dane alokowane, dane tylko do odczytu, dane statyczne. Dzi˛eki zastosowaniu profilowania zwi˛ekszono efektywno´s´c przeprowadzonych testów, zidentyfikowano krytyczne komponenty, zbadano opó´znienie awarii bł˛edów w kodzie systemu operacyjnego oraz wyznaczono warto´sci współczynnika naturalnej odporno´sci na bł˛edy.

Opracowanie oryginalnych mechanizmów zwi˛ekszania niezawodno´sci

Na podstawie wyników uzyskanych w przeprowadzonych eksperymentach opracowane zostały oryginalne mechanizmy zwi˛ekszania niezawodno´sci: metoda obsługi przerwa´n (patrz 5.6.1) oraz algorytm brudnych zasobów (patrz 5.6.2), który stanowi rozwi ˛azanie zdefiniowanego problemu odtwarzalno´sci. Metoda obsługi przerwa´n została zweryfikowana wykorzystuj ˛ac QEFI, natomiast algorytm brudnych zasobów został zweryfikowany poprzez symulacj˛e (z uwagi na trudno´sci w implementacji deasemblera w j ˛adrze systemu operacyjnego).

W przeprowadzonym eksperymencie zaproponowane mechanizmy mog ˛a zwi˛ekszy´c udział prawidłowych wyników o około 15 p.p. (metoda obsługi przerwa´n) oraz potencjalnie o dodatkowe 3 p.p. (algorytm brudnych zasobów). Opracowana został równie˙z metoda ochrony stosu (patrz 5.6.3) poprzez umieszczanie dodatkowych danych w nieaktywnej cz˛e´sci stosu.

Opracowane mechanizmy wymagaj ˛a minimalnych zmian w j ˛adrze systemu operacyjnego GNU/Linux i wykorzystuj ˛a mechanizm kprobes do wzbogacenia systemu o dodatkowe funkcje obsługi bł˛edów.

Cało´s´c przeprowadzonych bada´n słu˙zy mo˙zliwo´sci wykorzystania symulacji bł˛edów w ´srodowisku emulatora w celu zwi˛ekszania niezawodno´sci urz ˛adze´n konsumenckich.

Szczególnie istotnym zagadnieniem jest opracowanie scenariuszy testowych adekwatnych do przyszłych zastosowa´n badanego oprogramowania. Autor przedstawił mo˙zliwie szeroki aspekt wykorzystania QEFI od porównywania ró˙znych konfiguracji systemów komputerowych po szczegółow ˛a analiz˛e wybranego systemu komputerowego. Przyj˛ete podej´scie pozwoliło na opracowanie mechanizmów zwi˛ekszania niezawodno´sci dedykowanych badanej platformie. QEFI umo˙zliwiło równie˙z weryfikacj˛e opracowanych mechanizmów oraz ocen˛e ich skuteczno´sci – oznacza to, ˙ze QEFI mo˙ze by´c zastosowane do optymalizacji mechanizmów niezawodno´sci, gdy ich zastosowanie wi ˛a˙ze si˛e z kosztem czasu wykonania lub dodatkowej pami˛eci. Przeprowadzone badania przedstawiaj ˛a u˙zyteczno´s´c emulacji

systemu komputerowych w badaniu niezawodno´sci oprogramowania systemów operacyjnych, co stanowi dowód tezy sformułowanej w 1.3.