Pomiary efektywności dla AMD. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak Listopad 2012

Podobne dokumenty
Analizator wydajności AMD CodeAnalyst

Pomiary efektywności dla AMD Family 10h. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak Wersja listopad 2015

Pomiary efektywności dla AMD. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak Wersja wrzesień 2016

Pomiary efektywności dla komputerów z procesorami. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak listopad 2015, zmiany listopad 2016

Pomiary efektywności dla komputerów z procesorami. Na podstawie dokumentacji AMD opracował: Rafał Walkowiak zmiany kwiecień 2018

Pomiary efektywności dla komputerów z procesorami. Opracował: Rafał Walkowiak marzec 2019

Przykładem jest komputer z procesorem 4 rdzeniowym dostępny w laboratorium W skład projektu wchodzi:

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Ograniczenia efektywności systemu pamięci

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

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

Ograniczenia efektywności systemu pamięci

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

System obliczeniowy laboratorium oraz. mnożenia macierzy

Wydajność obliczeń a architektura procesorów. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

System pamięci. Pamięć wirtualna

System pamięci. Pamięć wirtualna

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

System pamięci. Pamięć wirtualna

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

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

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

PROGRAM TESTOWY LCWIN.EXE OPIS DZIAŁANIA I INSTRUKCJA UŻYTKOWNIKA

Procesor ma architekturę rejestrową L/S. Wskaż rozkazy spoza listy tego procesora. bgt Rx, Ry, offset nand Rx, Ry, A add Rx, #1, Rz store Rx, [Rz]

Materiały pomocnicze do laboratorium. 1. Miary oceny efektywności 2. Mnożenie macierzy 3. Znajdowanie liczb pierwszych

Architektura komputerów

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Kurs Zaawansowany S7. Spis treści. Dzień 1

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

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

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

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

UTK ARCHITEKTURA PROCESORÓW 80386/ Budowa procesora Struktura wewnętrzna logiczna procesora 80386

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Systemy wieloprocesorowe. Sprzęt i oprogramowanie wspomagające perspektywa - Windows i Linux Wykład Przetwarzanie równoległe Listopad 2010

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

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

PROJEKT 3 PROGRAMOWANIE RÓWNOLEGŁE. K. Górzyński (89744), D. Kosiorowski (89762) Informatyka, grupa dziekańska I3

Kurs Podstawowy S7. Spis treści. Dzień 1

Procesy i wątki. Krzysztof Banaś Obliczenia równoległe 1

Budowa Mikrokomputera

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

Programowanie Niskopoziomowe

2. Architektura mikrokontrolerów PIC16F8x... 13

Literatura. 3/26/2018 Przetwarzanie równoległe - wstęp 1

Procesory. Schemat budowy procesora

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

Win Admin Monitor Instrukcja Obsługi

Część I Rozpoczęcie pracy z usługami Reporting Services

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

Wykład 7. Zarządzanie pamięcią

MATERIAŁY POMOCNICZE DO LABORATORIUM Z PRZETWARZANIA RÓWNOLEGŁEGO KWIECIEŃ 2018

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Numeryczna algebra liniowa

ARCHITEKTURA PROCESORA,

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

Podstawy Informatyki DMA - Układ bezpośredniego dostępu do pamięci

Win Admin Replikator Instrukcja Obsługi

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

Spis treści. Dzień 1. I Konfiguracja sterownika (wersja 1410) II Edycja programu (wersja 1406) III Środowisko TIA Portal (wersja 1410)

Analiza efektywności przetwarzania współbieżnego. Wykład: Przetwarzanie Równoległe Politechnika Poznańska Rafał Walkowiak Grudzień 2015

EFEKTYWNOŚĆ MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

dr inż. Jarosław Forenc

Architektura komputerów

Zrównoleglenie i przetwarzanie potokowe

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Budowa i zasada działania komputera. dr Artur Bartoszewski

Analiza efektywności przetwarzania współbieżnego

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Architektura komputerów

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Systemy operacyjne. wykład dr Marcin Czarnota laboratorium mgr Radosław Maj

Architektura komputerów

Zegar - układ wysyłający regularne impulsy o stałej szerokości (J) i częstotliwości (f)

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

NETBEANS PROFILER TOMASZ ŁUKASZUK

ANALIZA EFEKTYWNOŚCI MNOŻENIA MACIERZY W SYSTEMACH Z PAMIĘCIĄ WSPÓŁDZIELONĄ

Algorytmy równoległe: prezentacja i ocena efektywności prostych algorytmów dla systemów równoległych

Wydajność obliczeń a architektura procesorów

Zarządzanie pamięcią operacyjną

System pamięci. Pamięć podręczna

Zarządzanie zasobami pamięci

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Politechnika Gdańska. Gdańsk, 2016

Organizacja pamięci współczesnych systemów komputerowych : pojedynczy procesor wielopoziomowa pamięć podręczna pamięć wirtualna

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Technologia informacyjna. Urządzenia techniki komputerowej

Przetwarzanie potokowe pipelining

Systemy wbudowane. Uproszczone metody kosyntezy. Wykład 11: Metody kosyntezy systemów wbudowanych

Budowa komputera Komputer computer computare

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

Architektura komputerów

FAQ: /PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200

Parametry wydajnościowe systemów internetowych. Tomasz Rak, KIA

Szkolenia specjalistyczne

Transkrypt:

Pomiary efektywności dla AMD Family 10h Na podstawie dokumentacji AMD opracował: Rafał Walkowiak Listopad 2012

Liczniki zdarzeń a program profilujący Procesory AMD 10h wyposażone są w 4 liczniki wydajności przeznaczonedo zliczania zdarzeń spowodowanych przez aplikacje (użytkownika) i system operacyjny: liczba cykli CPU, liczba zatwierdzonych instrukcji, braków trafień do ppi podobnych zdarzeń. Program profilujący konfiguruje licznik, określa jakie zdarzenieoraz przy jakich warunkach dodatkowych ma być zliczane i badane. 2

Metody pomiaru wydajności Podejście klamrowe (ang. calipermode) odczyt wartości licznika zdarzeń przed wejściem i po zakończeniu przetwarzania w krytycznym efektywnościowo fragmencie kodu. W wyniki odjęcia wartość zmierzonej przed od wartości zmierzonej po uzyskujemy liczbę zdarzeń za których wystąpienie odpowiedzialny jest testowany kod. W podejściu tym: nie ma możliwości pomiaru dystrybucji mierzonychzdarzeń w badanym obszarze, niema możliwości powiązania wystąpienia zdarzenia z powodującą je instrukcją. Podejście próbkowania wg licznika wydajności licznik wydajności ładowany jest wartością limitu lub progu. Zliczenie określonej w ten sposób liczby zdarzeń powoduje wywołanie procedury przerwania dla obsługi zdarzenia, która zapisuje: typ zdarzenia, ID procesu, ID wątku i IP 3

Podejście próbkowania wg licznika wydajności Na podstawie zebranych próbek narzędzia budują histogram występowania poszczególnych zdarzeń w kodzie. Ze względu na wagę statystyczną uzyskanych pomiarów oraz działania uboczne proceduryzbierania próbek ważne jest właściwe określenie progu zliczania. Wielkość ta jest uwarunkowana z jednej strony minimalizacją narzutu czasu zbierania próbek i ingerencji w zasoby systemu (pp, TLB, historię rozgałęzień kodu ), a z drugiej strony wymaganą rozdzielczością pomiaru i wagą statystyczną wyniku pomiaru. Przykładowe wartości to 50 tyś/500tyś w zależności od typu zdarzenia - częstości występowania zdarzeń. Pomiar jest obarczony poślizgiem różnica między rozkazem powodującym raportowane zdarzenie, a rozkazem, którego adres jest zapisywany pierwszym wykonywanym po powrocie z procedury obsługi przerwania. Ze względu na dynamiczne wykonywanie rozkazów informacja o lokalizacji przyczyny wystąpienia zdarzenia jest tylko przybliżona. Informacja o liczbie zdarzeń jest zatem bardziej adekwatna dla zbioru, niż pojedynczej instrukcji. 4

Zdarzenia i wskaźniki Liczby zdarzeń raportowane przez program nie uwzględniają progów zliczania. Wskaźniki uwzględniają progi (uwaga możliwe błędne wielkości). W tej prezentacji: dla miar jakości podano koncepcyjne wzory progi zliczania nie są uwzględniane; w niektórych przypadkach dla uzyskania właściwej wartości parametru próg jest podany we wzorze. Wagazjawiskamoże zostać oceniona na podstawie porównania liczby jego wystąpień z liczbą zrealizowanych w określonym czasie instrukcji wyrażona stosunkiem tych wartości (wskaźniki ang. rate). Wskaźniki pozwalają na oceną skali zjawiska: tysiąc braków trafień na 1mln instrukcji nie jest niepokojące, natomiast tysiąc braków trafień na 10 tysięcy instrukcji stanowi duży problem efektywnościowy. 5

Efektywność wykorzystania procesora Miary efektywności przetwarzania Instrukcje na cykl IPC / odwrotność - cykle na instrukcję CPI IPC jest miarą poziomu równoległości przetwarzania instrukcji Wyznaczenie wymaga określenia liczby: CPU Clocks Not Halted- CPU_clocks Retired Instructions- Ret_instructions IPC = Ret_instructions/ CPU_clocks CPI = CPU_clocks/ Ret_instructions Niska wartość IPC wskazuje na obecność czynników zmniejszających efektywność: słaba przestrzenna lub czasowa lokalność dostępów, błędy predykcji dla rozgałęzień kodu, brak wyrównania pobieranych danych, wyjątki FPU Informacje o dystrybucji w regionach kodu wielkości CPU_cloksi Ret_instructionspozwala na określenie kodu, który wymaga dużej ilości czasu lub często wykonywanego kodu 6

Miary efektywności przetwarzania Efektywność dostępu do pamięci Przepustowość oczytu, zapisu, dostępu do DRAM Mierzone zdarzenia: System_read, System_write, DRAM_accesses Wyznaczane wskaźniki: Ilość danych czytanych z RAM = System_read* próg*64 [bajty] Ilość danych zapisywanych do RAM = System_write* próg*16 [bajty] Wielkość transferu procesor RAM (dwukierunkowego) = DRAM_access* próg*64 Data bandwidth(b/s)= bytes_transfered/seconds rdzenie współdzielą dostępną przepustowość DRAM, procesor Phenom posiada dwa kontrolery pamięci testy specyficzne dla architektury wyznaczają maksymalną dostępną przepustowość pamięci 7

Miary efektywności przetwarzania Efektywność dostępu do pamięci pamięć podręczna danych L1 liczba braków trafień do pp danych DC_misses = DC_refills_L2 + DC_refills_sys Żądania obsłużone przez L2 i przez pamięć systemową wskaźnik żądań dostępu: Data cache request rate = DC_accesses/ Ret_instructions wskaźnik braku trafień Data cache miss rate = DC_Misses/ Ret_instructions stosunek braku trafień: Data cache miss ratio = DC_Misses/ DC_accessess ważna miara: DC_refills_sys/ DC_misses ze względu na >90 cykli z pamięci dynamicznej 12 cykli z L2 cache Uzupełnienie DC z L3? DC miss, L2 miss, L3 miss a może coś innego? 8

Miary efektywności przetwarzania Efektywność dostępu do pamięci pamięć podręczna danych Kategorie braku trafień do pp Obowiązkowe braki trafień (compulsorymisses) pierwsze odwołanie do jednostki danych, poprawa wyprzedzające pobranie danych. Braki trafień wynikające z pojemności pp(capacitymisses) poprawa -zmniejszenie wykorzystywanej przestrzeni danych (zagęszczenie danych). Braki trafień wynikające z konfliktów (conflict misses odwołanie do linii danych po jej unieważnieniu lub usunięciu), poprawa -przesunięcie pozycji danych do pozycji nie powodującej konfliktu dostępu usunięcie false sharinglub niekorzystnego odstępu równego wielkości sekcji wielosekcyjnej pp. 9

Miary efektywności przetwarzania Efektywność dostępu do pamięci pamięć podręczna instrukcji liczba braków trafień do pp instrukcji IC_misses = IC_refills_L2 + IC_refills_sys żądanie uzupełnienie danych generowane przez IC obsłużone przez ppl2 lub system jest spowodowane brakiem trafienia do L1 instrukcji wskaźnik żądań dostępu do pp instrukcji Instruction cache request rate = IC_accesses/ Ret_instructions wskaźnik/stosunek braku trafień do pp instrukcji Instruction cache miss rate = IC_Misses/ Ret_instructions Instruction cache miss ratio = IC_Misses/ IC_accesses Warto sprawdzać czy wstawki kodu (inline) lub rozwijanie pętli nie powodują wzrostu ciała pętli powyżej rozmiaru pp L1 10

Miary efektywności przetwarzania Efektywność dostępu do pamięci pamięć podręczna L2/L3 wskaźnik żądań dostępu do pp L2 L2 request rate = (L2_requests + L2_fill_write) / Ret_instructions L2_fill_write dostęp wtórny zapis danych w L2 powodowany usunięciem ich z ppl1 Wskaźnik/stosunek braku trafień do pp L2 L2 miss rate = L2_misses / Ret_instructions L2 miss ratio = L2_misses / (L2_requests + L2_fill_write) Analogicznie L3_requests, L3_misses Pamięci pracują w trybie wyłącznym lub prawie wyłącznym (L3) Pamięci są zunifikowane pamięci danych i instrukcji Warto sprawdzić jaka jest natura braku trafień compulsory, capacity czy conflict misses? 11

Dostęp do pamięci translacja adresu danych wskaźnik żądań dostępu do L1 DTLB L1 DTLB request rate = DC_accesses/ Ret_instructions Każdy dostęp (odczyt, zapis) do ppto dostęp do TLB stosunek braku trafień do L1 DTLB L1 DTLB miss ratio = (DTLB_L1M_L2H + DTLB_L1M_L2M) / DC_accesses Uwzględnia trafienia lub brak trafienia do DTLB L2 wskaźnik żądań dostępu do L2 DTLB L2 DTLB requestrate= L1 DTLB miss rate Brak trafienia do DTLB L1 powoduje odwołanie do DTLB L2 stosunek braku trafień do L2 DTLB L2 DTLB miss ratio= DTLB_L1M_L2M /(DTLB_L1M_L2H + DTLB_L1M_L2M) W przypadku strony wirtualnej o rozmiarze 4KB jej przeglądanie sekwencyjne powoduje wskaźnik 1/L2 DTLB miss ratena poziomie 4 tyś zatem przykładowo wartość wskaźnika 100 świadczy o problemie efektywnościowym w lokalności przestrzennej dostępu do danych. Analogicznie miary dla translacji adresu instrukcji. 12

Miary efektywności przetwarzania Efektywność dostępu do pamięci translacja adresu instrukcji wskaźnik żądań dostępu do L1 ITLB L1 ITLB request rate = IC_fetches/ Ret_instructions Każdy dostęp (odczyt, zapis) do ppto dostęp do TLB Stosunek braku trafień do L1 ITLB L1 ITLB miss ratio = (ITLB_L1M_L2H + ITLB_L1M_L2M) / IC_fetches Uwzględnia trafienia lub brak trafienia do ITLB L2 wskaźnik żądań dostępu do L2 ITLB L2 ITLB requestrate= L1 ITLB miss rate Brak trafienia do ITLB L1 powoduje odwołanie do ITLB L2 Stosunek braku trafień do L2 ITLB L2 ITLB miss ratio= ITLB_L1M_L2M /(ITLB_L1M_L2H + ITLB_L1M_L2M) L2 ITLB miss kosztowniejsze niż L1 ITLB często wywoływane procedury powinny znajdować się na jednej (lub minimalnej liczbie) stronie pamięci 13

Inne miary efektywności przetwarzania Miary dotyczące przekazywania sterowania: rozgałęzień, wywołań procedur: liczba, predykcje Przypadki szczególne: dostępy niewyrównane do rozmiaru linii pp, operacje i wyjątki FPU 14

Mnożenie macierzy podejście klasyczne for (int i = 0 ; i < ROWS_A; i++) for (intj = 0 ; j < COLUMNS_B; j++) { floatsum = 0.0 ; sekwencyjne for (int k = 0 ; k < COLUMNS_A; k++) sum += matrix_a[i][k] * matrix_b[k][j] ; matrix_r[i][j] = sum ; } 15

Mnożenie macierzy podejście klasyczne równoległe #pragmaompparallelfor for (int i = 0 ; i < ROWS_A; i++) for (intj = 0 ; j < COLUMNS_B; j++) { floatsum = 0.0 ; for (int k = 0 ; k < COLUMNS_A; k++) sum += matrix_a[i][k] * matrix_b[k][j] ; matrix_r[i][j] = sum ; } 16

Mnożenie macierzy podejście klasyczne porównanie sekwencyjne równoległe 17

Mnożenie macierzy sekwencyjne for (int i = 0 ; i < ROWS_A; i++) zmiana kolejności pętli for (int k = 0 ; k < COLUMNS_A; k++) for ( intj = 0 ; j < COLUMNS_B; j++) matrix_r[i][j] += matrix_a[i][k] *matrix_b[k][j] ; 18

Mnożenie macierzy równoległe zmiana #pragmaompparallelfor for (int i = 0 ; i < ROWS_A; i++) kolejności pętli for (int k = 0 ; k < COLUMNS_A; k++) for ( intj = 0 ; j < COLUMNS_B; j++) matrix_r[i][j] += matrix_a[i][k] *matrix_b[k][j] ; 19

Mnożenie macierzy podejście ze zmianą kolejności - porównanie 20

Właściwe porównania max 2 procesory Równoległe i optymalne sekwencyjne Obliczenia sekwencyjne 21

Jakie przyspieszenie? Jaki jest efekt zastosowania przetwarzania równoległego? Przyspieszenie ponad liniowe? (8x) 22

Analiza i optymalizacja kodu za pomocą analizatora wydajności AMD Codeanalyst TM

Analizator wydajności AMD CodeAnalyst Dostępny bezpłatnie dla Windows i Linux (różne funkcjonalności w obu systemach) Pozwala na 4 tryby pracy - profilowania: Bazujące na upływie czasu próbkowanie aplikacji ze stałą częstością, zapisywanie licznika rozkazów i określanie statystycznie najbardziej czasochłonnych części kodu w postaci histogramu (time-based profiling) Bazujące na zdarzeniach określenie zdarzeń, których (orientacyjne) miejsce występowania ma być mierzone, określenie progu zliczania dla każdego badanego zdarzenia (tylko procesory AMD)(event-based profiling) 24

CodeAnalyst cd Próbkowanie pobrań kodu i raportowanie powiązanych zdarzeń (tylko procesory AMD)(instruction-base fetch sampling) Próbkowanie operacji procesora pod względem wywoływanych zdarzeń (tylko procesory AMD) (instruction-base operation sampling) Profilowanie wątków (cykliczne monitorowanie przydziału rdzenia, procesora i nielokalnych dostępów do pamięci) (tylko procesory AMD)(thread based sampling) 25

Działanie programu profilującego Program profilujący pracuje w ramach projektów składających się z sesji. Dla każdej sesji należy określić: badaną aplikację i katalog roboczy rodzaj realizowanego profilowania, czas rozpoczęcia i zakończenia zbierania danych, częstotliwość próbkowania lub inne parametry w zależności od trybu pracy maskę powinowactwa wątków. Przygotowana sesja profilowania może zostać uruchomiona. Efektem uruchomionia jest dodanie nowejsesji w oknie zarządzania projektem. Wybór tej sesji powoduje wyświetlenie wyników sesji profilowania. Wyniki prezentowane są w grupach informacji charakterystycznych do realizowanego typu sesji. Można obserwować zbierane wyniki w wartościach bezwzględnych lub w udziale procentowym dla poszczególnych modułów oprogramowania, procesów i rdzeni. Dostępne wyniki profilowania można filtrować i prezentować wyrywkowo sposób prezentacji określa się w oknie dialogowym zarządcy widoku (view management dialog box).dane zebranedlaposzczegnychmodułów kodu można analizować z rozbiciem na informacje dla linii kodu źródłowego i asemblera. 26

Profilowanie bazujące na upływie czasu Program profilujący zbiera więcej próbek w obszarach kodu, w których program spędza więcej czasu gdyż pobranie próbki w tym obszarze jest bardziej prawdopodobne. Wynikowy histogram określa rozkład próbek, a wysokie wartości wskazują na czasochłonne fragmenty kodu. Standardowy okres próbkowania przetwarzania w CodeAnalyst wynosi 1 ms i może zostać zmieniony poprzez Configuration Management w narzędziach programu profilującego. 27

Timer based profiling Prezentacja liczby próbek (miara upływu czasu) zebranych w ramach poszczególnych rdzeni dla przetwarzania modułów kodu. 28

Timeer based profiling -sampling 29

Profilowanie bazujące na zdarzeniach Możliwy jest wybór konfiguracji standardowej profilowania lub określenie własnego zestawu badanych zdarzeń. Predefiniowane konfiguracje dotyczą: Assess performance - Wydajność dostępu do kodu i realizacji rozgałęzień, Investigate data access analiza dostępu do pp danych i DTLB, Investigate L2 cache access analiza dostepu do pp L2, Investigate instruction access analiza dostępu do pp instrukcji i ITLB, Investigate branching analiza realizacji kodu w rozgałęzieniach wraz z predykcją Predefiniowana konfiguracja zawiera wybór zliczanych zdarzeń wraz z krotnością ich wystąpienia powodującą próbkowanie przetwarzania. W przypadku wybrania większej niż liczba liczników liczby śledzonych zdarzeń można również określić okres przełączania liczników pomiędzy grupami zdarzeń. Niektóre zdarzenia umożliwiają określenie warunków dodatkowych związanych z ich kwalifikacją do zliczenia wyboru warunków dodatkowych można dokonać również w oknie edycji konfiguracji zdarzeń. Możliwa jest prezentacja wyników profilowania na poziomie modułów kodu, linii kodu źródłowego i asemblera. Możliwe jest tematyczne filtrowaniezebranych wyników i wyświetlanie parametrów skonsolidowanych. 30

Event based profiling 31

Event based sampling DC miss 32

Próbkowanie pobrań kodu (fetch sampling - instruction-base samp.) Parametrem sesji profilowania jest okres próbkowania. Osiągnięcie określonego progu zliczania pobrań instrukcji powoduje monitorowanie aktualnej operacji pobrania. Zakończenie lub przerwanie pobraniapowoduje zapisanie próbki na temat zrealizowanej operacji pobrania. Zapisywane a następnie raportowane informacje dotyczą: identyfikatora procesu, adresu wirtualnego pobranej instrukcji procesu, trafienia do ITLB L1 i L2, trafienie do pp IC, opóźnienie pobrania. 33

Próbkowanie operacji procesora (operation based - instruction-base samp.) Parametrem sesji profilowania jest okres próbkowania. Osiągnięcie określonego progu zliczania cykli procesora powoduje monitorowanie aktualnej makrooperacji do momentu jej zrealizowania lub usunięcia. Dla zakończonych makrooperacjizapisywane, a następnie raportowane informacje dotyczą: identyfikatora procesu, adresu wirtualnego instrukcji do której należy makrooperacja, czas realizacji makrooperacji do zakończenia czas realizacji makrooperacji do zatwierdzenia właściwej predykcji / realizacji rozgałęzienia, typu operacji odczyt, zapis, trafienie do DTLB, trafienie do DC opóźnienie w przypadku braku trafienia do DC lokalnego lub zdalnego dostępu, faktycznego źródła danych w przypadku korzystania ze sterownika pamięci. wyjaśniona lista zdarzeń powiązanych z instructionbasedsampling jest zawarta w on-line-help do CodeAnalyst. 34

Instruction based sampling (operations) DC miss 35

Profilowanie wątków Profilowanie dostarcza informacji o zachowaniu wątków realizowanych w wielordzeniowym środowisku. Pozwala określić stopień powinowactwa wątków (affinity). W NUMA profilowanie wątków dostarcza również informacji o nielokalnych (bardziej kosztownych) dostępach do pamięci. Podczas próbkowania stanu przetwarzania zbierane są identyfikatory przerwanych procesów. Liczniki zdarzeń są zaprogramowane do monitorowania nielokalnych (poza węzeł) odwołań do pamięci. 36

Thread profiling Dwie sesje profilowania dla róŝnej liczby wątków tego samego przetwarzania. 37

Widok wyników profilowania timer-based w CodeAnalyst & MVS 38

Na podstawie: Basic Performance Measurementsfor AMD Athlon, Opteron, Phenom Processors (P.Drongowski AMD) An introduction to analysis and optimization withamd CodeAnalyst TM 39