17. 17
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
24. 24
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
38. 38
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
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.
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
Potężne narzędzie do logowania – ale przez to “logowanie” rozumiem naprawdę niskopoziomowe rzeczy
Empire Total War
Empire Total War
Linux dtrace
"in the field monitoring/diagnostic"
.NET Core
- Dla Linuxa LLTng
- PerfMon.exe i Performance Counters - NIE oparte o ETW
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.
CLR też ma zarejestrowany provider!
co oferuje dany PID
CLR też ma zarejestrowany provider!
co oferuje dany PID
Windows Performance Recorder i Windows Performance Analyzer
Windows Performance Recorder i Windows Performance Analyzer
Windows Performance Recorder i Windows Performance Analyzer
Windows Performance Recorder i Windows Performance Analyzer
- 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.
- 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)
Odpalić ScriptApp – kliknąć Run generując brak obsługi
Odpalić PerfView, zacząć Collect, powtórzyć Run
Odpalić gotową analize PerfView – Exception stack, Events, GC stats
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
- 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)
CLR też ma zarejestrowany provider!
co oferuje dany PID
CLR też ma zarejestrowany provider!
co oferuje dany PID
Cechą charakterystyczną ETW jest operowanie na poziomie providerów, a nie np. procesów.
Nie możemy włączyć logowania tylko calc.exe
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?
tworzy manifest automatycznie z kodu i załącza go do logu
tworzy manifest automatycznie z kodu i załącza go do logu
pokazać kod
pokazać PerfView logi - sam event jak i ManifestData
pokazać CPU Stack
tworzy manifest automatycznie z kodu i załącza go do logu
tworzy manifest automatycznie z kodu i załącza go do logu
tworzy manifest automatycznie z kodu i załącza go do logu
Linux dtrace
"in the field monitoring/diagnostic"
Linux dtrace
"in the field monitoring/diagnostic"
Linux dtrace
"in the field monitoring/diagnostic"
Linux dtrace
"in the field monitoring/diagnostic"
Zastrzelcie mnie pytaniami – najlepiej osobiście, żeby się wstydu nie najeść!