• Nie Znaleziono Wyników

Procedura oceny charakterystyk wydajnościowych i wiarygodnościowych węzła

4.1 Badane charakterystyki węzła obliczeniowego

4.1.4 Procedura oceny charakterystyk wydajnościowych i wiarygodnościowych węzła

Na rys. 36 została przedstawiona procedura wykonywania badań oceny charakterystyk wydajnościowych. Jest ona tak skonstruowana, aby określić parametry obciążenia węzła i ewentualnej straty danych przy zwiększającym się obciążeniu węzła dla badanych zadań testowych.

Pierwszym krokiem procedury jest wybór pierwszego strumienia testowego. Platforma KASKADA jest używana do przetwarzania różnych danych, zaczynając od danych tekstowych, poprzez statyczne obrazy, audio, a na wideo PAL i HD kończąc. Na platformie KASKADA spośród wymienianych typów do przetwarzania w czasie rzeczywistym najczęściej wykorzystuje się następujące strumienie multimedialne: wideo HD, PAL oraz audio. W tabeli 5 zostały przedstawione ich podstawowe charakterystyki (por. rozdz. 2.2 ). Są one również często wykorzystywane przez aplikacje użytkowe i właśnie dla nich zostały wykonane kolejne badania.

Jak wynika z tabeli 6 wybór pierwszego algorytmu testującego jest zależny od rodzaju badanego strumienia. Przyjęto następujące kryteria wyboru algorytmów:

1. Kryterium funkcjonalności: nie każdy algorytm może być wykonany na dowolnym strumieniu multimedialnym ze względów funkcjonalnych, np. detekcja twarzy jest możliwa jedynie na strumieniu wideo, natomiast np. zadanie zliczające liczbę elementów strumienia może obsługiwać wykorzystywać dowolny rodzaj strumienia.

2. Kryterium jakości: jeśli format strumienia danych jest akceptowalny przez implementowany algorytm (kryterium funkcjonalności), nie zawsze pojedynczy węzeł jest w stanie wykonać zaplanowaną analizę i przetwarzanie, np. dotychczasowe doświadczenia wykazały, że przy założonym sprzęcie niemożliwe jest wykonanie detekcji twarzy, na co 4-tej klatce strumienia wideo HD.

3. Kryterium klasy: wybrane algorytmy muszą należeć do założonej klasy algorytmów, tzn. są zaprojektowane i zaimplementowane według schematu z rys. 9. Ich główny rdzeń, pętla odbioru elementów strumieni multimedialnych jest w każdym przypadku taka sama, natomiast różnią się ona procedurą która jest wykonywana w kroku Przetwarzanie elementu strumienia. Zarówno cechy funkcjonalne jak i jakościowe tej procedury zależą bezpośrednio od projektanta algorytmu. Dlatego wybrane algorytmy testujące powinny różnić się między sobą zarówno rodzajem przetwarzania, np. detekcja twarzy na obrazie czy maska tła, jak i jego jakością, np. częstością co którą klatkę przetwarzany jest strumień, czy jak dokładnie rozpoznawane są kształty.

Rysunek 36: Procedura realizacji badań dla oceny charakterystyk wydajnościowych i wiarygodnościowcyh węzła obliczeniowego.

Start

i := 1

j := 1

Zapamiętaj generowane strumienie i oceń

stratę danych

Stop Czy jest duża strata

danych?

Czy i=3?

k := k+1

Tak Nie

Tak Tak Nie

Nie k := 1

i := i+1 j:= j+1

Czy można uruchomić j-ty algorytm na i-tym

strumieniu?

(tab. 6)

Nie

Tak

Czy j=10?

Wykonaj jednocześnie k zadań dla j-tego algorytmu

na i-tym strumieniu - powtórz 20x Wybór kolejnego:

i-tego strumienia

Wybór kolejnego j-tego algorytmu

W wyniku wykorzystania powyższych kryteriów wybrano algorytmy reprezentatywne dla platformy KASKADA, które tworzą rozpatrywaną klasę algorytmów (patrz rozdz. 2.7 ) o następujących cechach:

1. Mają różne wymagania co do niezbędnej mocy obliczeniowej.

2. Są charakterystyczne dla przetwarzania strumienie multimedialnych.

3. Wykorzystują typowe procedury i funkcje biblioteki OpenCV – otwartej (opensource) i często wykorzystywanej do implementacji algorytmów analizy strumieni multimedialnych.

4. Zachowują różnorodność ze względu na zaprojektowaną funkcjonalność dostarczając różnych rodzajów analizy i modyfikacji strumienia jak i na uwzględnienie poziomu jakości umożliwiając sterowanie częstością wykonywania analizy.

Do badań wykorzystano następujące algorytmy:

1. Przekaźnik: odbiera strumień wideo i przekazuje dalej bez zmian – nie wykonując żadnych obliczeń – algorytm pusty, wykorzystywany ze względów referencyjnych.

2. Zegar: odbiera strumień wideo, dodaje etykietę z aktualnym czasem i przekazuje dalej, obliczenia, wykonywane przez pojedynczy wątek, dla pojedynczej klatki obrazu PAL zajmują: 1,5ms oraz dla obrazu HD: 13ms.

3. Maska tła: odbiera strumień wideo, analizuje poszczególne klatki obrazu rozpoznając jakie jego elementy są ruchome, a co jest tłem, po czym tworzy nowy obraz z zaznaczoną maską ruchomych elementów, obliczenia dla pojedynczej klatki obrazu PAL zajmują: 25ms oraz dla obrazu HD: 160ms.

4. Detekcja twarzy: odbiera strumień wideo, odnajduje twarze na co k-tej klatce obrazu, gdzie k jest parametrem wejściowym regulującym jakość analizy zgodnie z 3-cim kryterium wyboru algorytmów, następnie zaznacza miejsce wystąpienia wykrytego obiektu i przekazuje zaznaczony obraz dalej, obliczenia są wykonywane wielowątkowo, obliczenia dla pojedynczej klatki obrazu PAL zajmują: 400ms oraz dla obrazu HD: 980ms.

5. Scalenie obrazów: odbiera 2 strumienie wejściowe, składa je w jeden jako dwie połowy obrazu, ze skalowaniem do rozdzielczości strumieni wejściowych, obliczenia wykonywane przez pojedynczy wątek, dla pojedynczej klatki obrazu PAL zajmują: 4,4ms oraz dla obrazu HD: 32ms.

6. Wykrywanie krawędzi: odbiera strumień wideo, wykonuje detekcję konturów obrazu na każdej klatce z wykorzystaniem transformaty Laplace'a, następnie umieszcza te kontury na nowych obrazach, które są wysyłane jako strumień wyjściowy, wykonywane przez pojedynczy wątek, obliczenia dla pojedynczej klatki obrazu PAL zajmują: 13ms oraz dla obrazu HD: 53ms.

7. Filtr środkowoprzepustowy Butterworth'a [smith97]: odbiera strumień audio i „obcina”

częstotliwości zarówno od góry jak i z dołu, a wynik wysyła jako strumień wyjściowy, wykonywane przez pojedynczy wątek, dla pojedynczego elementu strumienia: 1152 próbki obliczenia zajmują: 0,15ms.

8. Statyczna detekcja twarzy: detekcja twarzy jako program jednowątkowy na danych z dysku lokalnego węzła – bez wykorzystania strumienia danych, złożoność obliczeniowa oraz obciążenie procesora jest takie samo jak dla wersji strumieniowej (punkt 4).

Przytoczone czasy obliczeń zostały wyznaczone dla pojedynczych elementów strumienia (klatki obrazu lub zbioru próbek dźwięku), pobranych bezpośrednio z pamięci operacyjnej bez operacji wejścia-wyjścia z dysku lub sieci.

Tabela 6 przedstawia badane algorytmy w zależności od wykorzystanego strumienia testowego.

Algorytm pusty – przekaźnik może być wykonywany dla wszystkich rodzajów strumieni, zegar dla dowolnego strumienia wideo, natomiast bardziej obciążające algorytmy takie jak detekcja twarzy na obrazie, czy wykrywanie konturów mogą być wykonywane tylko na strumieniu wideo PAL.

Algorytm filtra częstotliwości może być jedynie wykonywany na strumieniu audio.

W następnym kroku są wykonywane pomiary dla k jednocześnie działających zadań na pojedynczym węźle obliczeniowym i wykonujących ten sam kod wybranego algorytmu dla tego samego strumienia testowego. Po dokonaniu pomiarów węzeł jest zerowany – wszystkie działające na nim zadania są kończone. Pomiary w ramach tego kroku są wykonywane 20-krotnie, a następnie uśredniane, tak aby uniknąć wpływu przypadkowych czynników – takich jak np. natężenie ruchu sieciowego w klastrze oraz określić zakres błędu pomiaru. Zmienna iteracyjna k początkowo jest równa 1, czyli pierwsze 20 pomiarów jest wykonywane dla jednego zadania, następnie jeśli zostanie podjęta decyzja o kontynuacji to wartości zmiennej k zwiększana jest o 1 i wykonane jest kolejne 20 pomiarów, itd.

Tabela 6: Testowane zadania i odpowiadające im strumienie multimedialne.

algorytm/strumień 1. wideo PAL 2. wideo HD 3. audio

1. Przekaźnik + + +

2. Zegar + +

-3. Detekcja twarzy na co 32-giej klatce + -

-4. Detekcja twarzy na co 16-tej klatce + -

-5. Detekcja twarzy na co 4-tej klatce + -

-6. Statyczna detekcja twarzy na co 32-giej klatce + -

-7. Scalenie obrazów + -

-8. Wykrywanie krawędzi + -

-9. Maska tła + -

-10. Filtr częstotliwości - - +

Podczas testów wydajnościowych pojedynczego węzła obliczeniowego wykonywano pomiary następujących charakterystyk:

#1: obciążenie obliczeniowe węzła – wykorzystując program narzędziowy top [top], rejestrowano co sekundę czas bezczynności procesorów (idle), samo obciążenie węzła zostało określone jako procentowy stosunek czasu pracy całego węzła (okres próbkowania (1s) – czas bezczynności) do okresu próbkowania (1s), przy powyższych założeniach obciążenie generowane przez narzędzie jest poniżej 1% pojedynczego rdzenia procesora;

#2: wielkość wykorzystanej pamięci operacyjnej – podobnie jak w przypadku obciążenia procesorów, wykorzystano program top [top], rejestrowano z częstotliwością 1s, procent użytej pamięci przez cały węzeł;

#3: wykorzystywane pasmo sieciowe wejściowe i wyjściowe – wielkość ruchu sieciowego węzła była rejestrowana z częstotliwością 1s, za pomocą programu narzędziowego perfquery, umożliwiającego odczyt statystyk i parametrów bezpośrednio z karty sieciowej Infiniband [inifniband];

#4: strata danych wyjściowych – stosunek procentowy liczby straconych elementów strumienia wyjściowego w czasie eksperymentu do całkowitej liczby elementów strumienia wyjściowego wygenerowanych przez algorytm (patrz definicja 7), wartości charakterystyki były ustalane po wykonaniu pojedynczego testu, na podstawie danych strumieni wejściowych i wynikowych zapisanych w archiwum.

W celu minimalizacji czynników zewnętrznych, podczas badań węzła uruchamiano na nim tylko

zadania testowe, bez udziału innych procesów użytkowych. Rys. 37 przedstawia infrastrukturę systemowo-sprzętową wykorzystywaną podczas przeprowadzanych testów dla przykładowych 4 zadań. Badany strumień wejściowy znajduje się w archiwum strumieni multimedialnych, do którego dostęp mają węzły pomocnicze. Dane strumienia odczytywane są przez dekodery i przesyłane w formie rozpakowanej do zadań testowych. Podczas jednego pomiaru wykorzystywany jest ten sam strumień powielany dla każdego zadania, także inne dane wejściowe, tj. parametry wywołania i zmienne środowiskowe są te same.

Badany węzeł obliczeniowy jest obciążany jedynie zadaniami testującymi, każde z nich wykonuje swój algorytm: analizuje i przetwarza napływające elementy strumienia wejściowego i przesyła wyniki w strumieniu wyjściowym do procesów kodujących. Procesy koderów umieszczone są na osobnych węzłach pomocniczych, wykonują one kompresję strumienia do formatu akceptowanego w archiwum strumieni, gdzie dane są umieszczane. Ważnym elementem jest dobranie właściwej liczby węzłów pomocniczych, tak aby procesy kodujące i dekodujące, nie ograniczały przepływu danych i nie powodowały dodatkowej straty danych.

W kolejnym kroku procedury następuje sprawdzenie warunku: czy jest duża strata danych. Jeśli wszystkie dane zostały przetworzone przez zadanie, czyli liczba rzeczywista elementów strumienia wyjściowego jest równa liczbie elementów kompletnego i poprawnego strumienia wyjściowego, lub jest nieznacznie mniejsza – przyjęliśmy granicę tolerancji do 1% strat, wówczas następuje decyzja o kontynuacji lub zaprzestaniu pomiarów, dla większej liczby zadań. Jeśli strata jest powyżej przyjętego limitu, to następuje przejście do następnego kroku procedury (patrz rys. 36), w którym sprawdzane jest czy wszystkie dziesięć algorytmów testujących dla obecnego strumienia zostało już zbadanych i jeśli nie, badany jest kolejny algorytm. Jeśli natomiast wszystkie algorytmy testujące dla obecnego strumienia zostały zbadane, to następuje przejście do kroku, w którym sprawdza się czy zbadano wszystkie 3 strumienie testowe, po którym następuje decyzja, czy należy badać kolejny strumień, czy też zakończyć procedurę.