22. 22
Timeline
Windows 2000
Windows Vista
Server 2003
Windows 7
Server 2008
Windows 8
Server 2012
2000 2007 2009 2012
Windows 10
2015
ETW ETW solidnie
rozwinięty
call-stack przy
każdym evencie
.NET 2.0
2005
Ulepszenia…
.NET 4.0
2010
ETW
dla CLR
.NET Core
2016
ETW
dla CoreCLR
39. 39
Przykładowe eventy
• Windows KernelProcessStart
• Windows KernelProcessEnd
• Windows KernelImageLoad – kiedy
ładowana jest DLLka
• Windows KernelTcpIpRecv – kiedy dociera
pakiet TCP/IP
• Windows KernelThreadCSwitch - kiedy
wątek dostaje albo traci dostęp do CPU
51. 53
Zalety:
• przyjemnie graficzny
• może posłużyć do tworzenia wykresów
Wady:
• nie wszystko da się narysować
• nie można podejrzeć stacktrace eventów
#3:Witam wszystkich serdecznie i bardzo się cieszę, że tutaj dziś Wam opowiadam.
Nazywam się Konrad Kokosa i jestem .NET freelancerem I trenerem w swojej DG.
#4:Co robicie gdy jest problem (błąd, wydajność, pamięć) na PRD albo na UAT
Pokażę Wam extra nardzędzie diagnostyczne – mam nadzieję, że nawet jak już coś o nim wiecie to Wam się przypomni jakie jest fajne
#17:Linux dtrace
"in the field monitoring/diagnostic"
#18:Linux dtrace
"in the field monitoring/diagnostic"
#19:Linux dtrace
"in the field monitoring/diagnostic"
#20:Linux dtrace
"in the field monitoring/diagnostic"
#21:Linux dtrace
"in the field monitoring/diagnostic"
#27:- PerfMon.exe i Performance Counters - NIE oparte o ETW
#31:Cechą charakterystyczną ETW jest operowanie na poziomie providerów, a nie np. procesów.
Nie możemy włączyć logowania tylko calc.exe
#36:CLR też ma zarejestrowany provider!
co oferuje dany PID
#37:CLR też ma zarejestrowany provider!
co oferuje dany PID
#39:Każdy event ETW oprócz unikalnej w ramach providera Id oraz Version posiada również kilka ważnych atrybutów:
- Keyword - słowo kluczowe, a tak naprawdę maska bitowa. Dzięki niej eventom może być przypisane jedno lub kilka znaczeń.
- Level - poziom logowania.
- Opcode - oznacza konkretną akcję (etap) w ramach danego eventu. Najczęściej używany wbudowanymi wartościami jest opcode Start oraz End.
- Task - służy do grupowania eventów w ramach providera w pewne zakresy funkcjonalności.
#41:CLR też ma zarejestrowany provider!
co oferuje dany PID
#49:CLR też ma zarejestrowany provider!
co oferuje dany PID
#50:Windows Performance Recorder i Windows Performance Analyzer
#51:Windows Performance Recorder i Windows Performance Analyzer
#52:Windows Performance Recorder i Windows Performance Analyzer
#53:- przede wszystkim pomyślane jako performance dla .NET (Vance Morrison, Visual Studio performance architect)
- Narzędzie to jest używane przez zespół Visual Studio w celu dbania o wydajność tego narzędzia. Jak również przez zespół .NET w celu dbania o wydajność samego frameworku
- Jest też napisany tak by rozpoczęcie pracy z nim było banalnie proste. Nie wymaga żadnej instalacji. Jest to po prostu pojedynczy plik wykonywalny - perfview.exe. Dzięki temu możemy go bez problemu użyć na dowolnym komputerze, również serwerach produkcyjnych.
#54:Windows Performance Recorder i Windows Performance Analyzer
#55:- przede wszystkim pomyślane jako performance dla .NET (Vance Morrison, Visual Studio performance architect)
- Narzędzie to jest używane przez zespół Visual Studio w celu dbania o wydajność tego narzędzia. Jak również przez zespół .NET w celu dbania o wydajność samego frameworku
- Jest też napisany tak by rozpoczęcie pracy z nim było banalnie proste. Nie wymaga żadnej instalacji. Jest to po prostu pojedynczy plik wykonywalny - perfview.exe. Dzięki temu możemy go bez problemu użyć na dowolnym komputerze, również serwerach produkcyjnych.
#56:- posiada potężną pomoc, właściwe każda opcja i element GUI jest linkiem prowadzącym do dokumentacji
- przy konkretnym evencie Open Any Stack - pokazuje jego stackview
- automatycznie resolvuje symbole JITted kodu zarządzalnego
- oparty głównie na ETW ale również na:
- The ETWCLrProfiler dlls that allow PerfView intercept the .NET Method calls (see .NET Call in the collect dialog)
#57:- posiada potężną pomoc, właściwe każda opcja i element GUI jest linkiem prowadzącym do dokumentacji
- przy konkretnym evencie Open Any Stack - pokazuje jego stackview
- automatycznie resolvuje symbole JITted kodu zarządzalnego
- oparty głównie na ETW ale również na:
- The ETWCLrProfiler dlls that allow PerfView intercept the .NET Method calls (see .NET Call in the collect dialog)
#58:- posiada potężną pomoc, właściwe każda opcja i element GUI jest linkiem prowadzącym do dokumentacji
- przy konkretnym evencie Open Any Stack - pokazuje jego stackview
- automatycznie resolvuje symbole JITted kodu zarządzalnego
- oparty głównie na ETW ale również na:
- The ETWCLrProfiler dlls that allow PerfView intercept the .NET Method calls (see .NET Call in the collect dialog)
#59:- posiada potężną pomoc, właściwe każda opcja i element GUI jest linkiem prowadzącym do dokumentacji
- przy konkretnym evencie Open Any Stack - pokazuje jego stackview
- automatycznie resolvuje symbole JITted kodu zarządzalnego
- oparty głównie na ETW ale również na:
- The ETWCLrProfiler dlls that allow PerfView intercept the .NET Method calls (see .NET Call in the collect dialog)
#60:- posiada potężną pomoc, właściwe każda opcja i element GUI jest linkiem prowadzącym do dokumentacji
- przy konkretnym evencie Open Any Stack - pokazuje jego stackview
- automatycznie resolvuje symbole JITted kodu zarządzalnego
- oparty głównie na ETW ale również na:
- The ETWCLrProfiler dlls that allow PerfView intercept the .NET Method calls (see .NET Call in the collect dialog)
#61:- posiada potężną pomoc, właściwe każda opcja i element GUI jest linkiem prowadzącym do dokumentacji
- przy konkretnym evencie Open Any Stack - pokazuje jego stackview
- automatycznie resolvuje symbole JITted kodu zarządzalnego
- oparty głównie na ETW ale również na:
- The ETWCLrProfiler dlls that allow PerfView intercept the .NET Method calls (see .NET Call in the collect dialog)
#62:- posiada potężną pomoc, właściwe każda opcja i element GUI jest linkiem prowadzącym do dokumentacji
- przy konkretnym evencie Open Any Stack - pokazuje jego stackview
- automatycznie resolvuje symbole JITted kodu zarządzalnego
- oparty głównie na ETW ale również na:
- The ETWCLrProfiler dlls that allow PerfView intercept the .NET Method calls (see .NET Call in the collect dialog)
#63:- przede wszystkim pomyślane jako performance dla .NET (Vance Morrison, Visual Studio performance architect)
- Narzędzie to jest używane przez zespół Visual Studio w celu dbania o wydajność tego narzędzia. Jak również przez zespół .NET w celu dbania o wydajność samego frameworku
- Jest też napisany tak by rozpoczęcie pracy z nim było banalnie proste. Nie wymaga żadnej instalacji. Jest to po prostu pojedynczy plik wykonywalny - perfview.exe. Dzięki temu możemy go bez problemu użyć na dowolnym komputerze, również serwerach produkcyjnych.
#68:kiedyś - żmudne, trzeba było utworzyć plik manifestu, utworzyć z niego poprzez mc.exe kod, zarejestrować manualnie wevtutil.exe
- jedna z przyczyn zerowej popularności?
#69:tworzy manifest automatycznie z kodu i załącza go do logu
#70:tworzy manifest automatycznie z kodu i załącza go do logu
pokazać kod
pokazać PerfView logi - sam event jak i ManifestData
pokazać CPU Stack
#71:tworzy manifest automatycznie z kodu i załącza go do logu
#72:tworzy manifest automatycznie z kodu i załącza go do logu
#73:tworzy manifest automatycznie z kodu i załącza go do logu
#74:Zastrzelcie mnie pytaniami – najlepiej osobiście, żeby się wstydu nie najeść!