2017-12-02 134 views

Odpowiedz

2

Tak, jest to możliwe, choć niekoniecznie jest tak proste, jak programowanie zwykłych liczników PMU.

Jednym ze sposobów jest użycie programowalnych liczników kontrolerów pamięci, do których dostęp odbywa się przez przestrzeń PCI. Dobrym miejscem na rozpoczęcie jest badanie własnej implementacji Intela w pcm-memory pod numerem pcm-memory.cpp. Ta aplikacja pokazuje przepustowość per-socket lub per-memory-controller, która jest odpowiednia do niektórych zastosowań. W szczególności przepustowość jest dzielona pomiędzy wszystkie rdzenie, więc na cichym komputerze można założyć, że większość przepustowości jest związana z testowanym procesem, lub jeśli chcesz monitorować na poziomie gniazda, to jest dokładnie to, czego potrzebujesz.

Inną alternatywą jest ostrożne programowanie liczników "offscena odp.". Te, o ile mi wiadomo, dotyczą ruchu między L2 (ostatnią prywatną pamięcią podręczną) a resztą systemu. Możesz filtrować wyniki wyniku reakcji, więc możesz użyć kombinacji różnych zdarzeń "L3 Miss" i pomnożyć przez rozmiar linii pamięci podręcznej, aby uzyskać szerokość pasma odczytu i zapisu. Zdarzenia są dość drobnoziarniste, więc możesz je dalej rozbić przez to, co spowodowało dostęp w pierwszej kolejności: pobieranie instrukcji, żądania żądań danych, wstępne pobieranie itd., Itp.

Liczniki odpowiedzi offcore na ogół pozostają w tyle za obsługa za pomocą narzędzi takich jak perf i likwid, ale przynajmniej najnowsze wersje wydają się mieć uzasadnione wsparcie, nawet dla części klienta, takich jak SKL.

-2

Nie jestem pewien co do Intel PMU, ale myślę, że możesz użyć wzmacniacza Intel VTune (https://software.intel.com/en-us/intel-vtune-amplifier-xe). Ten ma wiele narzędzi do monitorowania wydajności (pamięć, pamięć cpu, cpu). Może to zadziała dla ciebie.

+2

VTune to narzędzie do korzystania z liczników wydajności sprzętu (tj. PMU = jednostka monitorowania wydajności). Jeśli nie możesz wyjaśnić, * jak * uzyskać VTune do pomiaru przepustowości pamięci, nie jest to przydatna odpowiedź. (VTune jest użytecznym narzędziem i może pomóc w znalezieniu hotspotów z cache-miss i tym podobnych, i najwyraźniej wykracza daleko poza zwykłe rejestrowanie liczników perf.) Ale nie o to pyta.) –

4

Tak (ish) pośrednio. Możesz użyć relacji między licznikami (w tym znacznikiem czasu), aby wywnioskować inne liczby. Na przykład, jeśli spróbujesz interwału o długości 1 sekundy, a są tam pomyłki pamięci podręcznej N ostatniego poziomu (3), możesz być całkiem pewny, że zajmujesz N * CacheLineSize bajtów na sekundę.

Robi się nieco lepki odnosić się dokładnie do działalności programowej, jak te chybienia może odzwierciedlać cpu prefetching, aktywność przerwań itp

Jest też bagna „to CPU nie liczy (MMX, SSE, AVX, ..) chyba że ten bit konfiguracyjny jest w tym stanie "; w ten sposób toczenia własne jest niewygodne ....