Inżynieria Wytwarzania Systemów Wbudowanych. Analiza Wydajności Systemów. Inżynieria Wytwarzania Systemów Wbudowanych 1/75

Podobne dokumenty
Embedded Systems Architecture System Performance. Embedded Systems Architecture 1

Embedded Embedded Systems Arc hitecture System Performance

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Programowanie współbieżne Wykład 2. Iwona Kochańska

Projektowanie oprogramowania systemów PROCESY I ZARZĄDZANIE PROCESAMI

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

Systemy operacyjne III

Wydajny Linux. Jakub Woźniak KN Sieci Komputerowych i Systemów Rozproszonych Tenesys

4. Procesy pojęcia podstawowe

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

Działanie systemu operacyjnego

Systemy operacyjne. Paweł Pełczyński

dr inż. Jarosław Forenc

Działanie systemu operacyjnego

Analizator wydajności AMD CodeAnalyst

Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.1

Budowa systemów komputerowych

5. Model komunikujących się procesów, komunikaty

Struktura i funkcjonowanie komputera pamięć komputerowa, hierarchia pamięci pamięć podręczna. System operacyjny. Zarządzanie procesami

4. Procesy pojęcia podstawowe

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Windows.

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Działanie systemu operacyjnego

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Zarządzanie pamięcią operacyjną

Prezentacja systemu RTLinux

Działanie systemu operacyjnego

System komputerowy. System komputerowy

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

projektowanie systemu

SYSTEMY OPERACYJNE WYKLAD 6 - wątki

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Rozwiązanie Compuware dynatrace

Budowa Mikrokomputera

Zarządzanie wieloserwerowym środowiskiem SAS z wykorzystaniem SAS Grid Managera. Katarzyna Wyszomierska

Obliczenia równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

Jądro systemu operacyjnego

Sieciowe Systemy Operacyjne

Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Wprowadzenie. Dariusz Wawrzyniak. Miejsce, rola i zadania systemu operacyjnego w oprogramowaniu komputera

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

weblsp Wybór przeglądarki i jej ustawienia Instrukcja ADH-Soft sp. z o.o., ul. 17 Stycznia 74, Warszawa

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Systemy operacyjne. Wprowadzenie. Wykład prowadzą: Jerzy Brzeziński Dariusz Wawrzyniak

Projektowanie i implementacja wysokowydajnych aplikacji w języku

Urządzenia wejścia-wyjścia

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

Replikacje. dr inż. Dziwiński Piotr Katedra Inżynierii Komputerowej. Kontakt:

Systemy operacyjne III

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Programowanie Systemów Czasu Rzeczywistego

Podstawy informatyki. System operacyjny. dr inż. Adam Klimowicz

Dlaczego testowanie jest ważne?

Metody optymalizacji soft-procesorów NIOS

Maciej Oleksy Zenon Matuszyk

Zarządzanie procesorem

System Zarządzania Dystrybucją

Struktury systemów operacyjnych

Q E M U.

Administracja i programowanie pod Microsoft SQL Server 2000

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Działanie komputera i sieci komputerowej.

Systemy operacyjne. Systemy operacyjne. Systemy operacyjne. Zadania systemu operacyjnego. Abstrakcyjne składniki systemu. System komputerowy

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Opis efektów kształcenia dla modułu zajęć

Popularne dostępne rozwiązania. Najpopularniejsze środowiska programistyczne:

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Architektura i mechanizmy systemu

Mosty przełączniki. zasady pracy pętle mostowe STP. Domeny kolizyjne, a rozgłoszeniowe

WHITE PAPER. Planowanie, przygotowanie i testowanie działań na wypadek wystąpienia awarii

Procesy i wątki. Blok kontrolny procesu. Proces. Proces - elementy. Stan procesu

Zarządzanie pamięcią operacyjną zagadnienia podstawowe

Purview Widoczność i kontrola w L7, analityka aplikacji bez degradacji wydajności sieci do 100 mln sesji

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

System plików warstwa fizyczna

System plików warstwa fizyczna

System plików warstwa fizyczna

Autorytatywne serwery DNS w technologii Anycast + IPv6 DNS NOVA. Dlaczego DNS jest tak ważny?

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Zarządzanie pamięcią w systemie operacyjnym

PyPy's Approach to Virtual Machine Construction

Projektowanie algorytmów równoległych. Zbigniew Koza Wrocław 2012

Zarządzanie pamięcią operacyjną

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

Szkolenie: Testowanie wydajności (Performance Testing)

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Jarosław Kuchta Administrowanie Systemami Komputerowymi. Internetowe Usługi Informacyjne

1 Instalowanie i uaktualnianie serwera SQL Server

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

OSTASZEWSKI Paweł (55566) PAWLICKI Piotr (55567) Algorytmy i Struktury Danych PIŁA

4. Procesy pojęcia podstawowe

Zarządzanie procesami i wątkami

Transkrypt:

Inżynieria Wytwarzania Systemów Wbudowanych Analiza Wydajności Systemów Inżynieria Wytwarzania Systemów Wbudowanych 1/75

Wydajność systemu Wydajność to ekscytująca, zmienna i wymagająca dyscyplina. Brendan GREG Analiza wydajność systemu analiza całego systemu, łącznie ze wszystkimi komponentami sprzętowymi oraz pełnym stosem oprogramowania. Wszystko co znajduje się na ścieżce danych oprogramowanie i sprzęt, ma wpływ na wydajność. W systemach rozproszonych może oznaczać to wiele serwerów i aplikacji. Inżynieria Wytwarzania Systemów Wbudowanych 2/75

Wydajność systemu PERSPEKTYWY Działania związane z wydajnością systemu można postrzegać z różnych perspektyw: analiza obciążenia; analiza zasobów. Spoglądają one na stos oprogramowania z różnych kierunków. Perspektywa analizy zasobów jest często stosowana przez administratorów systemu odpowiedzialnych za jego zasoby. Programiści aplikacji, którzy są odpowiedzialni za wydajność podczas obciążenia, najczęściej koncentrują się na perspektywie analizy obciążenia. Każda perspektywa ma wady i zalety. W wielu sytuacjach konieczne jest spojrzenie z punktu widzenia obu perspektyw. Inżynieria Wytwarzania Systemów Wbudowanych 3/75

Wydajność systemu METOLOGIA Metodologie analizy wydajności: obserwacyjne; eksperymentalne. Modelowanie i planowanie pojemności. Inżynieria Wytwarzania Systemów Wbudowanych 4/75

Wydajność systemu PERSPEKTYWY Wydajność jest subiektywna. To co jeden z użytkowników uznaje za niewystarczającą wydajność, czyli problem, inny użytkownik może uznać za dobrą wydajność. Powoduje to iż analiza wydajności jest bardzo złożonym problemem i wymaga ustalenia obiektywnych punktów odniesienia. Inżynieria Wytwarzania Systemów Wbudowanych 5/75

Wydajność systemu METRYKI Inżynieria Wytwarzania Systemów Wbudowanych 6/75

Wydajność systemu METRYKI Najczęściej stosowane rodzaje metryk wydajności systemu obejmują: IOPS liczba operacji wejścia-wyjścia wykonywanych w ciągu sekundy. Przepustowość liczba operacji lub ich wielkość w ciągu sekundy. Poziom wykorzystania stopień zajętości zasobu obliczany na podstawie ilości czasu, który we wskazanym przedziale czasu był poświęcony na aktywne wykonywanie zadania; dla zasobów dostarczających pamięci masowych może to oznaczać zużytą pamięć np. wykorzystana ilość pamięci operacyjnej. Opóźnienie czas, w którym operacja czeka na przeprowadzenie; czasem pojęcie to może odnosić się do całkowitego czasu operacji, jest odpowiednikiem czasu udzielenia odpowiedzi. Inżynieria Wytwarzania Systemów Wbudowanych 7/75

Wydajność systemu Kompromisy Wydajność systemu świadomość istnienia pewnych kompromisów. Kompromis typu wybierz dwa z dobrze, szybko, tanio z użyciem terminologii z projektów informatycznych wybierz dwa z wydajny, na czas, niedrogi ; Dobrze Wydajność Szybko Tanio Na czas Niedrogo Inżynieria Wytwarzania Systemów Wbudowanych 8/75

Wydajność systemu Kompromis Skalowalność liniowa w pewnym zakresie. Osiągnięcie i przekroczenie tzw. punktu na kolanach powoduje, że rywalizacja o zasoby systemu negatywnie wpływa na wydajność systemu. W ogólności liczba wykonywanych zadań spada. Punkt nasycenia. Inżynieria Wytwarzania Systemów Wbudowanych 9/75

Wydajność systemu Aplikacje Najbardziej odpowiednie miejsce dostosowywania wydajności znajduje się w pobliżu wykonywanych zadań, czyli aplikacjach. Obejmują one bardzo szeroki wachlarz programów: bazy danych; serwery www; serwery aplikacji; programy przeznaczone do równoważenia obciążenia; serwery plików, itd. Oprogramowanie może być bardzo skomplikowane, dotyczy to szczególnie środowiska aplikacji rozproszonych, składających się z wielu komponentów. Inżynieria Wytwarzania Systemów Wbudowanych 10/75

Wydajność systemu Aplikacje Analiza wewnętrznych składników aplikacji to najczęściej zadanie dla programistów aplikacji, którzy mogą wykorzystywać do tego celu narzędzia introspekcji (opracowane często przez firmy trzecie). Osoby zajmujące się wydajnością systemów (administratorzy systemów, analitycy wydajności aplikacji) muszą konfigurować aplikację, w taki sposób, aby w jak najlepszy sposób wykorzystać zasoby systemu. Inżynieria Wytwarzania Systemów Wbudowanych 11/75

Wydajność systemu Aplikacje Podstawy Przed przystąpieniem do zagadnień wydajności należy poznać: rolę aplikacji; podstawową charakterystykę; ekosystem w przemyśle. Z powyższych zagadnień powstaje: kontekst, w którym poznamy działanie aplikacji. Aby określić jak wygląda w/w kontekst należy odpowiedzieć na następujące pytania: FUNKCJA: Jaka jest rola aplikacji? Jakiego typu jest to aplikacji (serwer WWW, serwer plików, itd.)? Inżynieria Wytwarzania Systemów Wbudowanych 12/75

Wydajność systemu Aplikacje Podstawy OPERACJE: Jakiego rodzaju operacje i żądania są wykonywane przez aplikacje? (dla serwera WWW będą to żądania HTTP, w bazach danych będą to zapytania i polecenia). TRYB PROCESORA: Na jakim poziomie została zaimplementowana aplikacja: jako oprogramowanie użytkownika czy jądra? KONFIGURACJA: W jaki sposób jest skonfigurowana aplikacja i dlaczego tak? (Czy uległy zmianie modyfikowalne parametry związane z wydajnością?). Inżynieria Wytwarzania Systemów Wbudowanych 13/75

Wydajność systemu Aplikacje Podstawy METRYKI: Czy aplikacja dostarcza jakichkolwiek metryk np. częstotliwość operacji? DZIENNIKI ZDARZEŃ: Czy aplikacja tworzy dzienniki zdarzeń? Tworzenie jakich dzienników zdarzeń włączono w aplikację? Jakie metryki związane z wydajnością (np. opóźnienie) są dostępne w dziennikach? WERSJA: Czy aplikacja jest w najnowszej wersji? Czy w informacjach o nowym wydaniu są wzmianki o poprawkach lub usprawnieniach dotyczących wydajności jej działania. BŁĘDY: Czy dla aplikacji istnieje baza danych pozwalająca na zgłaszanie błędów? Czy są tam informacje o błędach wydajności w używanej wersji? Inżynieria Wytwarzania Systemów Wbudowanych 14/75

Wydajność systemu Aplikacje Podstawy SPOŁECZNOŚĆ: Czy dla danej aplikacji istnieje społeczność, z którą można dzielić się odkrytymi problemami dotyczącymi wydajności? (Fora, blogi, czaty, spotkania i konferencje, prezentacje i materiały wideo.) KSIĄŻKI: Czy do danej aplikacji istnieje jakakolwiek literatura dotycząca np. wydajności? EKSPERCI: Czy istnieją eksperci dla danej aplikacji. Ogólna wiedza na temat aplikacji: przeznaczenie, sposób działania, oferowana wydajność. Inżynieria Wytwarzania Systemów Wbudowanych 15/75

Wydajność systemu Aplikacje Cele Wyraźnie zdefiniowane cele w zakresie wydajności pomogą wyznaczyć kierunek prowadzonej analizy wydajności oraz określą kroki, które trzeba będzie podjąć. Brak zdefiniowanych celów to błądzenie po omacku w nadziei na znalezienie rozwiązania problemu z wydajnością. Przykładowymi celami mogą być: Opóźnienie. Maksymalne skrócenie czasu udzielania odpowiedzi przez aplikację. Przepustowość. Uzyskanie jak największej częstotliwości wykonywania operacji bądź największego możliwego transferu. Wykorzystanie zasobów. Efektywność dla danego obciążenia aplikacji. Inżynieria Wytwarzania Systemów Wbudowanych 16/75

Wydajność systemu Aplikacje Cele Jeszcze lepszym podejściem jest zdefiniowanie celów, które będą mogły być zmierzone za pomocą metryk np.: Średnie opóźnienie w udzielaniu odpowiedzi przez aplikację wynosi 10 ms. 99% żądań jest obsługiwanych w czasie krótszym niż 200 ms. Eliminacja opóźnień związanych z elementami odstającymi: 0 żądań których obsługa trwa ponad 1000 ms. Maksymalna przepustowość wynosi 10000 żądań aplikacji kierowanych co 1s do serwera. Średni poziom wykorzystania dysku wynosi poniżej 40% dla 10000 żądań wykonywanych przez aplikację co 1s. Inżynieria Wytwarzania Systemów Wbudowanych 17/75

Wydajność systemu Aplikacje Cele Wybranie odpowiednich celów pozwalają podjąć czynności, których zadaniem jest wyeliminowanie wszystkich czynników, które uniemożliwiają osiągnięcie wyznaczonych celów. Inżynieria Wytwarzania Systemów Wbudowanych 18/75

Wydajność systemu Aplikacje Optymalizacja najczęstszego sposobu użycia aplikacji Wewnętrzne komponenty są najczęściej bardzo skomplikowane i zawierają wiele różnych, możliwych ścieżek kodu oraz typów zachowania. Jest to szczególnie widoczne w czasie analizy kodu źródłowego (aplikacja dziesiątki tysięcy wierszy kodu, jądro systemu operacyjnego setki tysięcy). Losowe wybieranie obszaru optymalizacji może być przyczyną ogromnych nakładów pracy, których skutkiem będzie niewielki wzrost wydajności działania aplikacji. Najefektywniejszym sposobem poprawiania wydajności działania aplikacji jest wyszukanie najczęściej stosowanej ścieżki kodu dla danego obciążenia produkcyjnego i przystąpienie do jej usprawnienia. Ścieżki te możemy określić dzięki analizie i profilowaniu aplikacji (np. śledzenie stosu) Inżynieria Wytwarzania Systemów Wbudowanych 19/75

Wydajność systemu Aplikacje Monitorowanie Podobnie jak w przypadku systemów operacyjnych, tak i w przypadku aplikacji największy przyrost wydajności możemy uzyskać poprzez wyeliminowanie niepotrzebnie wykonywanej pracy. Ten fakt jest często przeoczany podczas wyboru aplikacji na podstawie jej wydajności. Która aplikacja będzie lepszym wyborem w perspektywie czasu? Jeżeli testy wydajności wykazały że aplikacja A jest o 10% wydajniejsza niż aplikacja B, która jednak oferuje bogaty zestaw narzędzi monitorowania. Inżynieria Wytwarzania Systemów Wbudowanych 20/75

Wydajność systemu Aplikacje Notacja duże O Wykorzystywana jest do analizy poziomu skomplikowania algorytmów oraz modelowania sposobu ich działania, gdy nastąpi przyrost zbioru danych wejściowych. Najczęściej stosowane algorytmy i notacje duże O : O(1) test boolowski. O(log n) przeszukiwanie binarne posortowanej tablicy. O(n) przeszukiwanie liniowe listy połączonej. O(n log n) szybkie sortowanie (przypadek średni). O(n^2) sortowanie bąbelkowe (przypadek średni). O(2^n) Dzielenie liczb na czynniki pierwsze. O(n!) problem komiwojażera. Omawiana notacja pozwala oszacować poprawę szybkości działania różnych algorytmów i ustalić obszary kodu prowadzące do największych przyrostów wydajności działania. Inżynieria Wytwarzania Systemów Wbudowanych 21/75

Wydajność systemu Aplikacje Techniki sprawdzania wydajności aplikacji Ustalenie wielkości operacji I/O: Koszty operacji I/O inicjalizacja buforów, wykonanie wywołania systemowego, przełączenie kontekstu, alokacja metadanych jądra, sprawdzenie ograniczeń i uprawnień procesu, mapowanie adresów na urządzenia, wykonanie kodu jądra i sterownika w celu przeprowadzenia operacji I/O i na koniec zwolnienie metadanych oraz buforów. Koszty są stałe dla małych i dużych operacji I/O. Z perspektywy wydajności im więcej danych jest przekazywanych w trakcie każdej operacji tym lepiej. Wzrost wielkości operacji I/O to strategia najczęściej wykorzystywana do poprawy przepustowości (nie zawsze jednak się sprawdza!!!). Inżynieria Wytwarzania Systemów Wbudowanych 22/75

Wydajność systemu Aplikacje Pamięć podręczna Aplikacje podobnie jak system operacyjny wykorzystują różnego rodzaju pamięci podręczne. Wyniki najczęściej wykonywanych operacji mogą być buforowane lokalnie w celu późniejszego użycia. Przykładem może być bufor bazy danych, który przechowuje wyniki najczęściej wykonywanych zapytań. Aspekt zachowania spójności koherencja pamięci podręcznej operacja kosztowna do wykonania, koszt nie powinien przekraczać korzyści wynikających z użycia pamięci podręcznej. Pamięć podręczna poprawa wydajności operacji odczytu. Bufory poprawa wydajności operacji zapisu. Inżynieria Wytwarzania Systemów Wbudowanych 23/75

Wydajność systemu Aplikacje Buforowanie Stosowane jest w celu poprawy wydajności operacji zapisu dane do zapisu umieszczane są w buforze. Powoduje to zwiększenie wielkości operacji I/O, a więc jej efektywność. Może się wiązać ze wzrostem opóźnienia. Bufor cykliczny rodzaj stałego bufora wykorzystywany do nieustannych transferów między komponentami działa jak bufor asynchroniczny. Implementowany jest za pomocą wskaźników początkowego i końcowego; przesuwanych o każdy komponent, gdy dane są dodawane lub usuwane. Inżynieria Wytwarzania Systemów Wbudowanych 24/75

Wydajność systemu Aplikacje Technika odpytywania Odpytywanie to technika, w której system czeka na wystąpienie zdarzenia nieustannie sprawdzając stan zdarzenia w pętli i stosuje pauzy między kolejnymi sprawdzeniami. Problemy dotyczące wydajności: Kosztowne obciążenie procesora wynikające z regularnie pojawiających się operacji sprawdzeń. Duże opóźnienie między wystąpieniem zdarzenia i kolejnymi operacjami sprawdzenia. Alternatywa nasłuchiwanie zdarzeń aplikacja powiadamiana jest natychmiast o zdarzeniu. Inżynieria Wytwarzania Systemów Wbudowanych 25/75

Wydajność systemu Aplikacje WSPÓŁBIEŻNOŚĆ i RÓWNOLEGŁÓŚĆ W ramach aplikacji realizowane funkcje mogą być współbieżne. Stało się to możliwe dzięki użyciu wielu procesów (wieloprocesowość) lub wątków (wielowątkowość), z których każdy wykonuje swoje zadanie. Współbieżność oparta na zdarzeniach, aplikacja realizuje różne funkcje i przełącza się między nimi, gdy występują odpowiednie zdarzenia. Tego typu podejście używane jest w środowisku uruchomieniowym Node.js. Jest to tzw. współbieżność w ramach jednego wątku lub procesu. Wąskie gardło wydajności to możliwość wykorzystania tylko jednego procesora. Aby aplikacja mogła wykorzystać właściwości systemu wieloprocesorowego musi mieć możliwość wykorzystania wielu procesorów nosi to nazwę równoległości. W aplikacji można uzyskać równoległość za pomocą wieloprocesowości lub wielowątkowości. Inżynieria Wytwarzania Systemów Wbudowanych 26/75

Wydajność systemu Aplikacje WSPÓŁBIEŻNOŚĆ i RÓWNOLEGŁÓŚĆ Która technika równoległości ma przewagę wieloprocesowość, czy wielowątkowość? Inżynieria Wytwarzania Systemów Wbudowanych 27/75

Wydajność systemu Aplikacje Nieblokujące operacje I/O Wątek wykonujący operacje I/O jest blokowany i przechodzi w stan uśpienia. Konieczność powołania wielu wątków w celu wykonania wielu operacji I/O. Koszty dynamicznego tworzenia i usuwania wątków. Zużywanie zasobów procesora na częste przełączanie kontekstu i generowanie opóźnień. Model nieblokujących operacji I/O zakłada asynchroniczne wykonywanie tych operacji bez blokowania bieżącego wątku, który dzięki temu może być wykorzystany do innych zadań. Inżynieria Wytwarzania Systemów Wbudowanych 28/75

Wydajność systemu Aplikacje Powiązanie z procesorem Koligacja procesora wątki aplikacji działają na tym samym procesorze, powoduje to poprawę lokalizacji pamięci dla aplikacji, zmniejsza liczbę cykli potrzebną do wykonania operacji I/O dla pamięci. Inżynieria Wytwarzania Systemów Wbudowanych 29/75

Wydajność systemu Aplikacje Języki programowania Języki kompilowane C, C++, ASM; Języki interpretowane wykonywane za pomocą maszyny wirtualnej Java HotSpot Virtual Machine z kompilatorem JIT (Just-In-Time) dla dynamicznej poprawy wydajności. Interpretery i maszyny wirtualne języków posiadają specyficzne narzędzia do monitorowania wydajności. Inżynieria Wytwarzania Systemów Wbudowanych 30/75

Wydajność systemu Aplikacje Optymalizacja kodu wynikowego Kompilator gcc poziomy optymalizacji od 0 do 3. Możemy sprawdzić jakie optymalizacje stosowane są na danym poziomie. $ gcc Q O3 help=optimizers Pełna lista zawiera 180 opcji, część z nich włączona jest nawet na poziomie 0 optymalizacji. Niektóre opcje mogą uniemożliwiać debugowanie oraz analizę stosu. Zmiana poziomu optymalizacji nie zawsze jest rozwiązaniem problemu. Inżynieria Wytwarzania Systemów Wbudowanych 31/75

Wydajność systemu Aplikacje Języki interpretowane Wykonują program poprzez jego zamianę na odpowiednie akcje w trakcie uruchomienia. Jest to przyczyną dodatkowych obciążeń podczas wykonywania programu. Nie wymaga się od tej klasy języków dużej wydajności, nacisk kładzie się na łatwość programowania i debugowania. Skrypty powłoki przykład języka interpretowanego. Bez odpowiednich narzędzi monitorowania analiza wydajności języków interpretowanych może być bardzo trudna. Inżynieria Wytwarzania Systemów Wbudowanych 32/75

Wydajność systemu Aplikacje Metodologia i analiza Metodologie podczas analizy aplikacji i dostosowywania jej wydajności działania: Analiza stanu wątku oparta na monitorowaniu. Profilowanie procesora oparta na monitorowaniu. Analiza wywołań systemowych oparta na monitorowaniu. Profilowanie operacji we-wy oparta na monitorowaniu. Charakterystyka obciążenia oparta na monitorowaniu, planowanie pojemności. Metoda USE oparta na monitorowaniu. Analiza drążąca oparta na monitorowaniu. Analiza blokad oparta na monitorowaniu. Statyczne dostosowywanie wydajności oparta na monitorowaniu, dostrajanie. Inżynieria Wytwarzania Systemów Wbudowanych 33/75

Wydajność systemu Aplikacje Analiza stanu wątku Analiza ta ma na celu ustalenie, gdzie wątki aplikacji przebywają większość czasu. Absolutne minimum to zastosowanie dwóch stanów wątku: W procesorze wykonywanie wątku. Poza procesorem wątek czeka na swoją kolej dostępu do procesora, zakończenie operacji I/O, zwolnienie blokady, stronicowanie, wykonanie innego zadania itd. Jeśli wątek spędza znacznie więcej czasu: w procesorze profilowanie procesora powinno pomóc w znalezieniu przyczyny. poza procesorem można wykorzystać różne metodologie, jednak potrzebny jest dobry punkt wyjścia. W przeciwnym razie zadanie będzie wymagało dużych nakładów pracy. Inżynieria Wytwarzania Systemów Wbudowanych 34/75

Wydajność systemu Aplikacje Analiza stanu wątku W celu otrzymania lepszego punktu wyjścia stosuje się znacznie rozbudowaną listę zawierającą sześć stanów wątku: Wykonywanie w procesorze. Działanie oczekuje na dostęp do procesora. Anonimowe stronicowanie działa ale jest zablokowany w oczekiwaniu na zakończenie anonimowego stronicowania. Uśpienie czeka na zakończenie operacji I/O, zwolnienie blokady itd. Blokada czeka na nałożenie blokady synchronizacji. Bezczynność oczekuje na zadanie do wykonania. Powyższy zestaw jest minimalny i jednocześnie użyteczny. Poprawę wydajności uzyskamy po zmniejszeniu czasu w pierwszych pięciu stanach. Inżynieria Wytwarzania Systemów Wbudowanych 35/75

Wydajność systemu Aplikacje Analiza stanu wątku Po ustaleniu w którym z wymienionych pięciu stanów wątek spędza najwięcej czasu można przystąpić do dalszej analizy. Wykonywanie wykorzystując profilowanie sprawdzamy tryb działania wątku (user lub kernel), a także powód zużycia procesora (które ścieżki kodu są odpowiedzialne za zużycie procesora oraz przez jaki czas). Działanie przebywanie w tym stanie oznacza iż aplikacja potrzebuje więcej zasobów procesora. Anonimowe stronicowanie powodem może być brak pamięci dla aplikacji powoduje to powstawanie opóźnień. Należy przeanalizować zużycie pamięci w całym systemie i ograniczenia pamięci dla aplikacji. Inżynieria Wytwarzania Systemów Wbudowanych 36/75

Wydajność systemu Aplikacje Analiza stanu wątku Uśpienie analiza zasobów, w których aplikacja jest zablokowana. Blokada należy zdefiniować blokadę, nakładający ją wątek oraz powód długiego trwania blokady. Sposób oczekiwania aplikacji na zadania powoduje iż stany uśpienia i blokady to w rzeczywistości czas bezczynności. Inżynieria Wytwarzania Systemów Wbudowanych 37/75

Wydajność systemu Aplikacje POMIAR STANU WĄTKÓW przykłady Linux: czas wykorzystany na wykonywanie podaje polecenie top w kolumnie %CPU danych wyjściowych; czas działania podawany jest przez funkcję schedstats jądra i udostępniony przez pliki /proc/*/schedstats. Polecenie perf sched również może dostarczyć informacji na temat czasu poświęconego na działanie i oczekiwanie; czas poświęcony na anonimowe stronicowanie można mierzyć za pomocą funkcji zliczania opóźnień (pod warunkiem, że została włączone). czas zablokowania w wątku, uśpienia można w przybliżeniu oszacować stosując polecenie pidstat d, sprawdzając czy w wątku wykonywana jest operacja we/wy. bardzo długie stany uśpienia (rzędu sekund) można próbować ustalić wykorzystując funkcję pstack. Operacja ta pobiera pojedynczą migawkę wątku i informuje o użyciu stosu. Uwaga! pstack może blokować analizowaną aplikację. Inżynieria Wytwarzania Systemów Wbudowanych 38/75

Wydajność systemu Aplikacje PROFILOWANIE PROCESORA Celem profilowania procesora jest odpowiedź na pytanie: dlaczego aplikacja zużywa zasoby procesora? bardzo dobre wyniki daje technika próbkowania w procesorze stosu na poziomie użytkownika i łączenie wyników. Ślad stosu wskazuje zastosowaną ścieżkę kodu, co może pokazywać powody, dla których aplikacja zużywa zasoby procesor; próbkowanie aktualnie wykonywanej funkcji ogranicza ilość danych wyjściowych oraz ułatwia odczyt i poznanie profilu; analiza kodu wywołującego aktualnie wykonywaną funkcję; Inżynieria Wytwarzania Systemów Wbudowanych 39/75

Wydajność systemu Aplikacje PROFILOWANIE PROCESORA Profilowanie procesora w przypadku języków interpretowanych i maszyn wirtualnych może okazać się trudne: brak łatwego sposobu mapowania wykonywanego oprogramowania na oryginalny program; konkretne rozwiązania zależą od środowiska języka, które zawiera odpowiednie narzędzia bądź może używać narzędzi opracowanych przez firmy trzecie; Przykład próbkowania kodu Java za pomocą jstack() narzędzia Dtrace: Dtrace n profile-97 /pid==1742/ {@[jstack(100)] count(): } Po wykonaniu wyświetlane są najczęściej występujące stosy, które były próbkowane 10-krotnie (stosy pokazują wewnętrzne komponenty wirtualnej maszyny, poszczególne funkcje wyświetlane będą jako sygnatury C++); Inżynieria Wytwarzania Systemów Wbudowanych 40/75

Wydajność systemu Aplikacje ANALIZA WYWOŁAŃ SYSTEMOWYCH Metodologia analizy stanu wątku opisanie dwóch podstawowych stanów wątku w procesorze i poza procesorem. Użyteczne i praktyczne będzie przeanalizowanie w/w stanów na podstawie wywołań systemowych: wykonywania w procesorze (tryb użytkownika); wywołania systemowego czas wywołania systemowego (oczekiwanie lub działanie w trybie jądra) obejmuje operacje I/O, blokady i inne rodzaje wywołań systemowych. Można dokonywać analizy wywołań systemowych na wiele sposobów. Celem może być określenie gdzie wywołanie systemowe przebywa najdłużej, typu wywołania systemowego i powodu jego wywołania. Inżynieria Wytwarzania Systemów Wbudowanych 41/75

Wydajność systemu Aplikacje ANALIZA WYWOŁAŃ SYSTEMOWYCH Tradycyjna metoda monitorowania wywołania systemowego wymaga ustawienia punktu kontrolnego dla wywołania systemowego i jego zakończenia. Jest to technika inwazyjna, w przypadku aplikacji wykonujących znaczną ilość wywołań systemowych może powodować ogromny spadek wydajności. Tego rodzaju monitorowanie akceptowalne jest tylko w krótkim przedziale czasu, w celu ustalenia typu wywołań systemowych. Linux: $ strace ttt T p 1884 $ strace c p 1884 Doskonałe rozwiązanie w przypadku, gdy jego znaczne obciążenie nie stanowi problemu. Inżynieria Wytwarzania Systemów Wbudowanych 42/75

Wydajność systemu Aplikacje MONITOROWANIE BUFOROWANE Dane instrumentów monitorowania mogą być buforowane w jądrze, w trakcie pracy aplikacji. Inżynieria Wytwarzania Systemów Wbudowanych 43/75

Wydajność systemu Aplikacje PROFILOWANIE OPERACJI WEJŚCIA-WYJŚCIA Profilowanie operacji I/O pełni podobną rolę jak profilowanie procesora, poza tym pomaga także w ustaleniu dlaczego i w jaki sposób wykonywane są wywołania systemowe związane z operacjami I/O. Do tego celu wykorzystuje się narzędzia DTrace i analizuje stosy na poziomie użytkownika dla wywołań systemowych. Stosy zawierają informacje o tym, dlaczego wykonywane są dane wywołania. Warto przeanalizować dodatkowe atrybuty metodologii: Kto? identyfikator procesu, nazwa użytkownika; Co? komponent wykonujący dane wywołanie systemowe (np. system plików), wielkość operacji I/O, wartość IOPS, przepustowość i inne atrybuty. Jak? - zmiana wartości IOPS na przestrzeni czasu. Inżynieria Wytwarzania Systemów Wbudowanych 44/75

Wydajność systemu Aplikacje METODA USE Metoda USE pozwala na sprawdzenie poziomu wykorzystania, nasycenia i błędów we wszystkich zasobach sprzętowych. Metoda pozwala wskazać zasób będący wąskim gardłem. Można użyć metody USE także względem zasobów w postaci oprogramowania. Zależy to jednak od rodzaju aplikacji. Jeżeli dysponujemy diagramem funkcjonalnym prezentującym wewnętrzne komponenty aplikacji, możemy przeanalizować poziomu wykorzystania, nasycenia i błędów dla każdego zasobu oprogramowania i odpowiedz na pytanie: Co ma sens? Inżynieria Wytwarzania Systemów Wbudowanych 45/75

Wydajność systemu Aplikacje METODA USE Dla aplikacji używającej puli wątków roboczych do przetwarzania żądań oraz kolejki przeznaczonej dla operacji oczekujących na swoją kolej możemy zdefiniować metryki jako: Poziom wykorzystania średnia liczba wątków zajętych przetwarzaniem żądań w pewnym przedziale czasu, podana jako procent wszystkich wątków. Poziom nasycenia średnia długość kolejki żądań w pewnym przedziale czasu. Wartość ta określa, ile żądań czeka na przetwarzanie przez wątek roboczy. Błędy żądania odrzucone lub zakończone niepowodzeniem z jakiegokolwiek powodu. Inżynieria Wytwarzania Systemów Wbudowanych 46/75

Wydajność systemu Aplikacje ANALIZA BLOKAD Blokady mogą stanowić wąskie gardło dla aplikacji wielowątkowych. Negatywnie wpływać na współbieżność i skalowalność. Analizę można przeprowadzić pod kątem: Sprawdzenia, czy występuje zjawisko rywalizacji pozwala stwierdzić czy problem już występuje. Długi czas blokady może nie być problemem w danej chwili, może nim zostać w sytuacji wzrostu jednoczesnego obciążenia. Warto ustalić nazwę blokady i ścieżkę kodu, która prowadzi do jej nałożenia; Sprawdzenia czy blokady są nakładane na długi czas. Przykładowe narzędzia do analizy blokad w systemie Solaris: plockstat analiza na poziomie użytkownika; lockstat analiza na poziomie jądra. Inżynieria Wytwarzania Systemów Wbudowanych 47/75

Wydajność systemu Aplikacje STATYCZNE DOSTOSOWANIE WYDAJNOŚCI Koncentruje się na problemach występujących w skonfigurowanym środowisku. W przypadku aplikacji należy przeanalizować różne aspekty konfiguracji statycznej m.in.: Jaka jest wersja uruchomionej aplikacji? Jakie są znane problemu z wydajnością w danej aplikacji? W jaki sposób aplikacja została skonfigurowana? Dlaczego aplikacja została skonfigurowana w sposób inny niż domyślny? Czy aplikacja zastała skompilowana? Jakiej wersji kompilatora użyto? Czy w systemie zastosowano jakiekolwiek mechanizmy kontroli zasobów dla procesora, pamięci, systemu plików, dysku lub sieci? Inżynieria Wytwarzania Systemów Wbudowanych 48/75

Wydajność systemu PROCESOR TERMINOLOGIA Procesor fizyczny układ umieszczony w gnieździe płyty głównej zawierający jeden procesor lub więcej procesorów zaimplementowanych w postaci rdzeni wątków sprzętowych. Rdzeń niezależny egzemplarz procesora w procesorze wielordzeniowym. Rdzenie to jeden ze sposobów skalowania procesorów, CMP ang. Chip-Level Multiprocessing. Wątek sprzętowy architektura procesora obsługująca działanie wielu wątków w pojedynczym rdzeniu (Hyper-Threading Technology firmy Intel), każdy wątek jest niezależnym egzemplarzem procesora. Instrukcja procesora pojedyncza operacja procesora pochodząca ze zbioru instrukcji. Procesor logiczny procesor wirtualny, egzemplarz procesora w systemie operacyjnym (jednostka, którą może uwzględniać algorytm szeregowania). Może być implementowany przez procesor jako wątek sprzętowy (wątek wirtualny), rdzeń lub procesor z pojedynczym rdzeniem. Inżynieria Wytwarzania Systemów Wbudowanych 49/75

Wydajność systemu PROCESOR TERMINOLOGIA Algorytm szeregowania moduł w jądrze odpowiedzialny za przypisywanie procesorom uruchamianych w nich wątków. Kolejka działania kolejka działających wątków oczekujących na uzyskanie dostępu do procesora. Inżynieria Wytwarzania Systemów Wbudowanych 50/75

Wydajność systemu PROCESOR ARCHITEKTURA PROCESORA Każdy wątek sprzętowy widziany jest jako procesor logiczny. W systemie dostępne mogą być dodatkowe informacje o topologii np. które procesory są w ramach tego samego rdzenia. Inżynieria Wytwarzania Systemów Wbudowanych 51/75

Wydajność systemu PROCESOR PAMIĘCI PODRĘCZNE W PROCESORZE Inżynieria Wytwarzania Systemów Wbudowanych 52/75

Wydajność systemu PROCESOR KOLEJKA DZIAŁANIA W PROCESORZE PROCESOR Wątki G G... G G P Kolejka działania Opóźnienie kolejki działania czas spędzony w kolejce działania podczas oczekiwania na dostęp do procesora. Opóźnienie algorytmu szeregowania bardziej odpowiedni dla wszystkich rodzajów rozdzielania zadań, także tych, które nie są oparte na kolejce. Inżynieria Wytwarzania Systemów Wbudowanych 53/75

Wydajność systemu PROCESOR KOLEJKA DZIAŁANIA W PROCESORZE W systemach wieloprocesorowych jądro zwykle zapewnia kolejkę działania każdemu procesorowi i próbuje umieszczać wątki w tej samej kolejce działania. Oznacz to iż wątki będą prawdopodobnie działały w procesorze, w którego pamięci podręcznej są buforowane ich dane (pamięć z rozgrzanym buforem). Podejście polegające na preferowaniu konkretnego procesora nosi nazwę powiązania z procesorem. W systemach typu NUMA poprawie może ulec również lokalizacja pamięci, prowadzi to do ogólnego zwiększenia wydajności. Inżynieria Wytwarzania Systemów Wbudowanych 54/75

Wydajność systemu PROCESOR KONCEPCJE DOTYCZĄCE WYDAJNOŚCI PROCESORA Komponenty procesora: częstotliwość taktowania zegara procesora; sposób wykonywania instrukcji. Podstawy niezbędne podczas analizy wydajności. Poznanie i zrozumienie metryki: CPI Cycles Per Instruction liczba cykli na instrukcję. Inżynieria Wytwarzania Systemów Wbudowanych 55/75

Wydajność systemu PROCESOR CZĘSTOTLIWOŚĆ TAKTOWANIA ZEGARA Instrukcje mogą zabierać jeden lub więcej cykli zegara cykli procesora. Częstotliwość taktowania jest bardzo często uznawana za podstawową cechę procesora. Jest to nieco mylące podejście. Przy pełnym wykorzystaniu procesora (wąskie gardło), większa częstotliwość taktowania wcale nie musi przełożyć się na zwiększenie wydajności. DLACZEGO? Inżynieria Wytwarzania Systemów Wbudowanych 56/75

Wydajność systemu PROCESOR CZĘSTOTLIWOŚĆ TAKTOWANIA ZEGARA Jeżeli większość przypadków będą to cykle bezczynności w oczekiwaniu na dostęp do pamięci, szybsze wykonywanie wspomnianych cykli nie zwiększy liczby wykonywanych instrukcji procesora, czyli przepustowości. Inżynieria Wytwarzania Systemów Wbudowanych 57/75

Wydajność systemu PROCESOR INSTRUKCJE Instrukcje wykonywane są w kilku krokach przez komponenty procesora nazywane jednostkami funkcjonalnymi. Kroki przy przetwarzaniu instrukcji: Pobranie instrukcji. Dekodowanie instrukcji. Wykonanie instrukcji. Uzyskanie dostępu do pamięci (opcjonalnie). Ponowny zapis rejestru (opcjonalnie). Wiele instrukcji operuje tylko na rejestrach. Dostęp do pamięci to zazwyczaj najwolniejszy krok (może zabierać dziesiątki cykli). Instrukcja jest wstrzymywana (cyklami bezczynności). Inżynieria Wytwarzania Systemów Wbudowanych 58/75

Wydajność systemu PROCESOR INSTRUKCJE Potok instrukcji architektura pozwalająca na wykonywanie wielu instrukcji jednocześnie. Architektura superskalarna architektura wykorzystująca wiele jednostek funkcjonalnych, co powoduje zwiększenie ilości wykonywanych instrukcji. Współczesne procesory mają możliwość wykonywania 3 lub 4 instrukcji w jednym cyklu. Inżynieria Wytwarzania Systemów Wbudowanych 59/75

Wydajność systemu PROCESOR METRYKI CPI, IPC Wartość CPI ang. Cycles Per Instruction pozwala ustalić, jak procesor używa cykli zegara; ułatwia poznanie natury poziomu wykorzystania procesora. Podana metryka może być wyrażona wartością IPC ang. Instructions Per Cycle instrukcje na cykl, odwrotność CPI. Wysoka wartość CPI oznacza iż procesor bardzo często znajduje się w stanie oczekiwania (dostęp do pamięci). Niska wartość CPI świadczy o dużej przepustowości. Wymienione metryki wskazują miejsca, których dostrojenie przyniesie największe korzyści. CPI pokazuje efektywność przetwarzania instrukcji. Inżynieria Wytwarzania Systemów Wbudowanych 60/75

Wydajność systemu PROCESOR POZIOM WYKORZYSTANIA Czas, w którym egzemplarz procesora zajęty jest wykonywaniem zadań w analizowanym przedziale czasu PW podaje się w %. Można również mierzyć czas w którym procesor nie obsługuje bezczynnego wątku jądra, ale zamiast tego wątki aplikacji działających na poziomie klienta, inne wątki jądra lub też przetwarza przerwanie. Czy wysoki poziom wykorzystania procesora jest problemem? Inżynieria Wytwarzania Systemów Wbudowanych 61/75

Wydajność systemu PROCESOR POZIOM WYKORZYSTANIA Można traktować poziom wykorzystania procesora jako wskaźnik ROI ang. Return of Investment. W przeciwieństwie do innego rodzaju zasobów (dysków) wydajność działania procesora nie ulega dużemu spadkowi przy wysokim poziomie wykorzystania. Dzieje się tak, dzięki stosowaniu przez jądro priorytetów, wywłaszczania i dzielenia czasu. CZAS UŻYTKOWNIKA i JĄDRA Inżynieria Wytwarzania Systemów Wbudowanych 62/75

Wydajność systemu PROCESOR POZIOM NASYCENIE 100 % poziom wykorzystania procesora odpowiada jego nasyceniu. Pojawia się opóźnienie algorytmu szeregowania. Przy przetwarzaniu w chmurze poziom nasycenia może wskazywać na wykorzystanie przydzielonych aplikacji limitów, co nie musi oznaczać 100 % poziomu wykorzystania. WYWŁASZCZANIE ODWRÓCENIE PRIORYTETÓW Inżynieria Wytwarzania Systemów Wbudowanych 63/75

Wydajność systemu PROCESOR WIELOPROCESOWOŚĆ, WIELOWĄTKOWOŚĆ Współczesne procesory to tak naprawdę kilka procesorów w różnej postaci. Oddzielne wątki, które będą działać jednocześnie pozwalają wykorzystać wiele procesorów. Skalowalność stopień, do którego aplikacja może być efektywnie skalowalna wraz ze wzrostem liczby procesorów. Techniki skalowania aplikacji między procesorami to wieloprocesowość i wielowątkowość. Inżynieria Wytwarzania Systemów Wbudowanych 64/75

Wydajność systemu PROCESOR WIELOPROCESOWOŚĆ, WIELOWĄTKOWOŚĆ Proces Proces Proces Proces Proces Wątek Wątek Wątek Wątek Wątek Wątek Wątek Wątek Procesor Procesor Procesor Procesor Procesor Procesor Procesor Procesor WIELOPROCESOWOŚĆ WIELOWĄTKOWOŚĆ Inżynieria Wytwarzania Systemów Wbudowanych 65/75

Wydajność systemu PROCESOR WIELOPROCESOWOŚĆ, WIELOWĄTKOWOŚĆ Atrybut Wieloprocesowość Wielowątkowość Prace programistyczne Obciążenie związane z pamięcią Obciążenie związane z procesorem Rozwiązanie łatwe, użycie funkcji fork() Duże, oddzielna przestrzeń adresowa poszczególnych procesów powoduje zużycie pamięci Koszt związany wywołaniem fork() i exit(), który obejmuje pracę jednostki zarządzającej przestrzenią adresową MMU Korzystamy z API wątków Małe, wymagany jest jedynie dodatkowy stos oraz przestrzeń dla rejestru. Małe, wywołania API Inżynieria Wytwarzania Systemów Wbudowanych 66/75

Wydajność systemu PROCESOR WIELOPROCESOWOŚĆ, WIELOWĄTKOWOŚĆ Atrybut Wieloprocesowość Wielowątkowość Komunikacja Poziom użycia pamięci IPC, obciążenie procesora wynikające z przełączania kontekstu podczas kopiowania danych między przestrzeniami adresowymi, jeżeli nie są używane obszary pamięci współdzielonej. Procesy mogą zwracać systemowi całą zajmowaną pamięć. Najszybsza, bezpośredni dostęp do pamięci współdzielonej. Synchronizacja podstawowa zapewnia spójność. Mechanizmy alokacji, mogą prowadzić do rywalizacji o dostęp do procesora między wieloma wątkami, fragmentacji przed ponownym wykorzystaniem. Inżynieria Wytwarzania Systemów Wbudowanych 67/75

Wydajność systemu PROCESOR WIELOPROCESOWOŚĆ, WIELOWĄTKOWOŚĆ Liczba procesów lub wątków powinna obejmować żądaną liczbę procesorów. Koszt synchronizacji wątków i mniejsza lokacja pamięci może przekraczać korzyści programu w wielu procesorach. DŁUGOŚĆ SŁOWA Długość słowa wielkość przestrzeni adresowej szerokość ścieżki danych Czy większy rozmiar słowa = większa wydajność? Inżynieria Wytwarzania Systemów Wbudowanych 68/75

Wydajność systemu PROCESOR DŁUGOŚĆ SŁOWA Większy rozmiar = większa wydajność? Wzrost obciążenia pamięci (nieużywane bity); Wzrost wskaźników może powodować większe koszty operacji I/O w pamięci. Inżynieria Wytwarzania Systemów Wbudowanych 69/75

Wydajność systemu PROCESOR ARCHITEKTURA Inżynieria Wytwarzania Systemów Wbudowanych 70/75

Wydajność systemu PROCESOR PAMIĘCI PODRĘCZNE PROCESORA Inżynieria Wytwarzania Systemów Wbudowanych 71/75

Wydajność systemu PROCESOR WYDAJNOŚĆ PROCESORA METODOLOGIE Metoda narzędzi oparta na obserwacji; Metoda USE oparta na obserwacji; Charakterystyka obciążenia oparta na obserwacji, planowanie pojemności; Profilowanie oparta na obserwacji; Analiza cykli oparta na obserwacji; Monitorowanie wydajności oparta na obserwacji, planowanie pojemności; Statyczne dostrajanie wydajności oparta na obserwacji, planowanie pojemności; Dostrojenie priorytetu dostrojenie; Kontrola zasobów dostrojenie; Powiązanie z procesorem dostrojenie; Mikrotesty wydajności oparta na eksperymentach; Skalowanie planowanie pojemności, dostrojenie; Inżynieria Wytwarzania Systemów Wbudowanych 72/75

Wydajność systemu PROCESOR Metoda narzędzi uptime pozwala na sprawdzenie średniego obciążenia; vmstat pozwala sprawdzić ilość dostępnych zasobów <10% problem; mpstat pozwala znaleźć problemy związane ze skalowalnością wątków; top/prstat pozwalają określić jakie procesy i użytkownicy zużywają najwięcej zasobów procesora; pidstat/prstat pozwalają wyświetlić zużycie procesora jako czas użytkownika i systemu; perf/cpustat pozwalają na pomiar wartości CPI; Inżynieria Wytwarzania Systemów Wbudowanych 73/75

Wydajność systemu PROCESOR Metoda USE Poziom wykorzystania: czas, w którym procesor był zajęty; Nasycenie: stopień, do którego działające wątki oczekiwały w kolejce na uzyskanie dostępu do procesora; Błędy: błędy procesora, również te możliwe do usunięcia; Błędy łatwo znaleźć i zinterpretować. Jak chronić się przed błędami niemożliwymi do skorygowania? Inżynieria Wytwarzania Systemów Wbudowanych 74/75

Wydajność systemu PROCESOR Metoda USE Ochrona przed błędami niemożliwymi do skorygowania (wyłączanie procesora). Poziom wykorzystania sprawdzamy dla wszystkich procesorów eliminacja problemów dotyczących skalowalności. Przetwarzanie w chmurze poziom wykorzystania procesora może być mierzony w kategorii nałożonego ograniczenia. Inżynieria Wytwarzania Systemów Wbudowanych 75/75