2009-08-12 8 views
6

Czy jest jakieś małe narzędzie, które daje mi dostęp do danych zebranych przez liczniki procesora Intel (takie jak luki w pamięci podręcznej L1/L2, awarie przewidywania gałęzi ... wiesz, że są ich hunderty na nowoczesnych procesorach Core2).Jak mogę uzyskać dostęp do licznika procesora Intela

Musi działać w systemie Windows (chociaż można go używać z systemami Solaris, FreeBSD, Linux, MacOSX oczywiście byłby miły).

+0

W międzyczasie znalazłem bibliotekę PAPI.Ale jest to mniej więcej Linux (wspierający Solaris tylko na Sparc) i wymaga niektórych łatek jądra Linux - tak, wiem, Linus powiedział, że monitorowanie wydajności jest jedną z dwóch prawdziwych słabości. I znalazłem perfmon2 i królika (martwy projekt), które są również tylko Linux. Nie jeden hit do okien do tej pory. – Lothar

Odpowiedz

0

Nie napisałeś o tym, że szukasz aplikacji lub biblioteki.

Dla Windows jest Intel VTune. Ale to nie jest dokładnie małe narzędzie. Dla Linuksa użyłem oprofile, który działa bez łat jądra.

+0

Szukam biblioteki, ponieważ chcę napisać profiler narzędziowy, który rejestruje zdarzenia INSTRUCTION_RETIRED zamiast millisekund. Tak, a może kilka innych rzeczy, więc możesz to zobaczyć jako małe narzędzie typu VTune, które chcę napisać sam. – Lothar

+0

Nie sądzę, że istnieje biblioteka. Dostęp do rejestru Monitora wydajności można uzyskać za pomocą instrukcji rdmsr i wrmsr. Na początek możesz zajrzeć do "Podręcznika deweloperów architektury Intel 64 i IA-32" (google dla najnowszej wersji) Tom 3B, rozdział 18.11ff. Dokładnie opisano, czego potrzebujesz, aby uzyskać dostęp do liczników wydajności. – hirschhornsalz

0

W systemie OS X Shark pozwala uzyskać dane z PMC. Nie jestem pewien, co jest dostępne w systemie Windows innym niż narzędzia Intela (VTune, jak wspomniał drhirsch).

0

Spróbuj http://icl.cs.utk.edu/papi/ Jest to pełna biblioteka, która pozwala odczytać żadnych danych liczniki CPU, działa zarówno na Windows i Linux [i innych OS]

+0

Interfejs PAPI nie działa w systemie Windows. –

1

PAPI jest bardzo obiecującym ołowiu, jednak wierzę zaprzestano obsługi systemu Windows (a zatem .NET C#) kilka lat temu.

Z przodu Windowsa, Visual Studio 2010 Premium zawiera eksplorator wydajności. Jeśli uruchomisz dowolny projekt lub plik binarny w trybie oprzyrządowania, uzyskasz dostęp do zdarzeń sprzętowych, takich jak wycofanie instrukcji.

Wyniki mogą być nieco mieszane i niespójne w zależności od czynników zewnętrznych, ale dobrze integrują się z Visual Studio, a otrzymujesz szczegółowe dane (średnie, maksymalne, całkowite) na poziomie metody/modułu.

Analizator wydajności Intel V-tune również udostępnia je natywnie. Nie korzystałem jeszcze z tego narzędzia, ale może to być bardziej elastyczny interfejs API niż to, które udostępnia program Visual Studio 2010.

+2

Dzięki, ale pracuję nad rozwojem i sprzedażą IDE. To oczywiście nie pomaga mi. – Lothar

4

Ten wątek wydaje się trochę stary, ale jeśli nadal jesteś zainteresowany, to ostatnio napisałem o tym numerze: howto, używając tylko rdmsr i wrmsr w Linuksie. Zajmuje się tylko licznikami wydajności Intel-Rig dla Westmere, ale opisany przeze mnie proces może pomóc ci znaleźć to, czego potrzebujesz, jeśli jeszcze tego nie zrobiłeś. Jestem pewien, że system Windows ma pewien równoważny program lub wywołanie funkcji dla RDMSR i WRMSR. Problem polega na tym, że musisz dzwonić 0 (tryb jądra), aby odczytać MSR. Nie mam pojęcia, jak to zrobić w systemie Windows. Nie będę w stanie odpowiedzieć na żadne pytania dotyczące systemu Windows, ale będę w stanie odpowiedzieć na niektóre pytania związane z MSR, jeśli je posiadasz. Nie jestem jednak ekspertem.

0

Ten wątek wygląda dość stary. Jednak wszystkie wyżej wymienione liczniki są dostępne pod adresem Intel PCM. Liczniki te mogą być używane jako wtyczka Microsoft Perfmon lub interfejs wiersza polecenia. Intel PCM podaje informacje takie jak współczynnik przeszukiwania pamięci podręcznej L2 i L3, brak pamięci podręcznej itp.