Event tracing m.b.v. RATT en Kernrate
- Introductie (over o.a. ETL-bestanden)
- Netsh trace (netwerk tracing)
- Windows Performance Recorder and Analyzer
- PerfView
- tracerpt (commandoregel)
- RATTv3
- Kernrate
- Xperf
- SxS tracing
- Standaard traces (in een domain?) en de files die erbij horen
Introductie (over o.a. ETL-bestanden)
ETW (Event Tracing for Windows) is een heel bouwwerk binnen Windows waarmee zeer gedetailleerd gedrag van het systeem en applicaties, zoals het gebruik van resources (geheugen, processor, schijf), kan worden geregistreerd.
Vaak wordt dergelijke informatie vastgelegd in
ETL
-bestanden, waarbij ETL (waarschijnlijk?) staat
voor Event Trace Log.
Nog los van dat de gegevens in deze bestanden moeilijk te analyseren zijn, wordt het allemaal nog verwarrender doordat er sinds Windows XP een hele verzameling tools de revue gepasseerd is, waarvan een groot aantal maar in een beperkt aantal versies van Windows werkt.
Verder kunnen ETL
-files
sowieso door verschillende tools verwerkt worden (in elk geval onder Windows 7).
O.a. zijn dat:
Network Monitor
;PerfView
;Event Viewer
(maar dat is niet bepaald de meest handige manier. Ik kom er later op terug);tracerpt
.
Ik zal proberen op deze pagina enige orde te scheppen in de chaos van tools en het gebruik ervan, hoewel ik zelf ook nog maar een beginneling ben op dit gebied.
Netsh trace (netwerk tracing) (Windows 7 en hoger)
Als je netwerkproblemen wilt troubleshooten kan je gebruik maken van het
commandoregel-commando netsh
Dat commando bestaat al heel lang (in elk geval minimaal sinds Windows XP),
maar in Windows 7 is er een nieuwe optie aan toegevoegd,
trace
De uitvoer van een trace met dit commando gaat naar een
ETL
-bestand.
Netsh trace help informatie
Als je alleen netsh trace
op de
commandoregel intikt krijg je help informatie:
C:\Windows\system32>netsh trace
De volgende opdrachten zijn beschikbaar:
Opdrachten in deze context:
? - Een lijst met opdrachten weergeven.
convert - Hiermee wordt een traceerbestand naar een HTML-rapport geconverteerd.
correlate - Hiermee wordt een traceerbestand genormaliseerd of gefilterd naar een nieuw uitvoerbestand.
diagnose - Een diagnostische sessie starten.
dump - Een configuratiescript weergeven.
help - Een lijst met opdrachten weergeven.
show - Interfaces, providers en traceerstatus weergeven
start - Traceren starten
stop - Traceren stoppen
Voor Help-informatie bij een opdracht, typt u de opdracht, gevolgd door een
spatie en vervolgens ?.
C:\Windows\system32>
En in het Engels:
D:\Tools\WS03RK>netsh trace
The following commands are available:
Commands in this context:
? - Displays a list of commands.
convert - Converts a trace file to an HTML report.
correlate - Normalizes or filters a trace file to a new output file.
diagnose - Start a diagnose session.
dump - Displays a configuration script.
help - Displays a list of commands.
show - List interfaces, providers and tracing state.
start - Starts tracing.
stop - Stops tracing.
To view help for a command, type the command, followed by a space, and then
type ?.
D:\Tools\WS03RK>
Vooral de onderste 3 commando's zijn voorlopig interessant.
Met show
kan je zien wat er allemaal getraced kan
worden, en met start
en stop
kan je een tracing sessie beginnen en beëindigen.
Netsh trace categorieën
Om te zien wat voor categorieën je kan tracen kan je
netsh trace show
intikken, en krijg je:
C:\Windows\system32>netsh trace show
De volgende opdrachten zijn beschikbaar:
Opdrachten in deze context:
show CaptureFilterHelp - Hiermee worden ondersteunde opnamefilters en hun syntax is weergegeven.
show globalKeywordsAndLevels - Hiermee worden globale sleutelwoorden en niveaus weergegeven.
show helperclass - Hiermee wordt informatie over de helperklasse weergeven.
show interfaces - Hiermee worden beschikbare interfaces weergegeven.
show provider - Hiermee wordt informatie over providers weergegeven.
show providers - Hiermee worden beschikbare providers weergegeven.
show scenario - Hiermee wordt informatie over het scenario weergegeven.
show scenarios - Hiermee worden beschikbare scenario's weergegeven.
show status - Hiermee wordt de traceerconfiguratie weergegeven.
C:\Windows\system32>
In het Engels:
D:\Tools\WS03RK>netsh trace show
The following commands are available:
Commands in this context:
show CaptureFilterHelp - List supported capture filters and usage.
show globalKeywordsAndLevels - List global keywords and levels.
show helperclass - Show helper class information.
show interfaces - List available interfaces.
show provider - Shows provider information.
show providers - Shows available providers.
show scenario - Shows scenario information.
show scenarios - Shows available scenarios.
show status - Shows tracing configuration.
D:\Tools\WS03RK>
Bij interfaces moet je denken aan netwerkkaarten, Bluetooth-interfaces, etc.
Bij providers gaat het om specifieke onderdelen of componenten van Windows,
en het zijn er heel veel (talloze honderden).
Voorbeelden zijn Firewall
en
UAC (User Account Control)
.
Waarschijnlijk is scenarios de meest bruikbare categorie.
Dat is een te behappen aantal, en voorbeelden zijn bv.
LAN (Local Area Network)
of
FileSharing
(het delen van bestanden).
Scenario's en providers
Om te zien wat voor scenarios er zijn kan je
netsh trace show scenarios
intikken, en krijg je:
C:\Windows\system32>netsh trace show scenarios
Beschikbare scenario's (18):
-------------------------------------------------------------------
AddressAcquisition : Problemen in verband met het verkrijgen van adressenoplossen
DirectAccess : Problemen met DirectAccess oplossen
FileSharing : Algemene problemen met bestands- en printerdeling oplossen
InternetClient : Problemen met de internetverbinding vaststellen
InternetServer : Problemen met webverbindingen aan serverzijde oplossen
L2SEC : Problemen in verband met Laag 2-verificatie oplossen
LAN : Probleem met het bekabeld LAN oplossen
Layer2 : Problemen in verband met Laag 2-connectiviteit oplossen
MBN : Problemen met mobiele breedband oplossen
NDIS : Problemen in verband met de netwerkadapter oplossen
NetConnection : Problemen met netwerkverbindingen oplossen
P2P-Grouping : Peer-to-peergroeperingsproblemen oplossen
P2P-PNRP : Problemen in verband met het PNRP (Peer Name Resolution Protocol) oplossen
RemoteAssistance : Problemen oplossen in verband met Windows Hulp op afstand
RPC : Problemen oplossen die verband houden met het RPC-framework
WCN : Problemen in verband met Windows Draadloze verbinding maken oplossen
WFP-IPsec : Problemen met het Windows-filterplatform en problemen met betrekking tot IPsec oplossen
WLAN : Problemen met het draadloze LAN oplossen
C:\Windows\system32>
In het Engels:
Available scenarios (18):
-------------------------------------------------------------------
AddressAcquisition : Troubleshoot address acquisition-related issues
DirectAccess : Troubleshoot DirectAccess related issues
FileSharing : Troubleshoot common file and printer sharing problems
InternetClient : Diagnose web connectivity issues
InternetServer : Troubleshoot server-side web connectivity issues
L2SEC : Troubleshoot layer 2 authentication related issues
LAN : Troubleshoot wired LAN related issues
Layer2 : Troubleshoot layer 2 connectivity related issues
MBN : Troubleshoot mobile broadband related issues
NDIS : Troubleshoot network adapter related issues
NetConnection : Troubleshoot issues with network connections
P2P-Grouping : Troubleshoot Peer-to-Peer Grouping related issues
P2P-PNRP : Troubleshoot Peer Name Resolution Protocol (PNRP) related issues
RemoteAssistance : Troubleshoot Windows Remote Assistance related issues
RPC : Troubleshoot issues related to RPC framework
WCN : Troubleshoot Windows Connect Now related issues
WFP-IPsec : Troubleshoot Windows Filtering Platform and IPsec related issues
WLAN : Troubleshoot wireless LAN related issues
Tenslotte een paar regels als voorbeeld van providers:
{E595F735-B42A-494B-AFCD-B68666945CD3} Microsoft-Windows-Firewall
{E5BA83F6-07D0-46B1-8BC7-7E669A1D31DC} Microsoft-Windows-Security-Netlogon
{E6307A09-292C-497E-AAD6-498F68E2B619} Microsoft-Windows-ReadyBoost
{E670A5A2-CE74-4AB4-9347-61B815319F4C} Microsoft-Windows-DiskDiagnostic
{E7558269-3FA5-46ED-9F4D-3C6E282DDE55} Microsoft-Windows-UAC
{E7EF96BE-969F-414F-97D7-3DDB7B558CCC} Microsoft-Windows-Win32k
Network Monitor (versie 3.4)
De beste tool om de uitvoer te bekijken is
Network Monitor
,
maar hij lijkt alleen beschikbaar voor
Windows 8 en lager.
Dat programma kan je gratis bij Microsoft downloaden. Controleer wel goed dat je de correct versie voor je systeem download. 'x86' staat voor 32-bits Windows, 'x64' voor 64-bits Windows.
Het installeren is rechttoe rechtaan.
Het lijkt erop alsof het programma onder Windows XP alleen
.CAP
-bestanden kan verwerken, terwijl het onder
Windows 7 ook .ETL
-bestanden aankan.
En de uitvoer van netsh trace
is in dat formaat.
Windows Performance Recorder en Analyzer
Sinds Windows 7 lijk je event tracing vooral te moeten doen met de tools
Windows Performance Recorder
(om gegevens te verzamelen),
Windows Performance Analyzer
(om gegevens te analyseren) en
Xperf
, waarmee je in elk geval het
starten en stoppen van recording ook vanaf de command line kan doen.
Deze 3 tools vormen samen de
Windows Performance Toolkit
.
In Windows 10 en 11 zijn deze tools onderdeel van de
ADK (Assessment and Deployment Kit)
, die je
bij Microsoft kan downloaden.
(In Windows 7 waren ze onderdeel van de Windows SDK
(System Development Toolkit).)
Zie ook
deze pagina bij tenforums (18-9-2020).
Na het downloaden van het bestand adksetup.exe
kan je het uitvoeren.
Er zijn een heleboel features (onderdelen) die je kan installeren,
maar alleen een vinkje bij
Windows Performance Toolkit
is voldoende.
Interrupts onderzoeken
1 van de situaties van deze tools zeer handig kunnen zijn, is als je last hebt van een hoog percentage interrupts.
Start dan Windows Performance Recorder
, en
klik op More options
.
Haal het vinkje weg bij
First level triage
.
Klik op het plusje voor Resource Analysis
,
en zet een vinkje voor CPU usage
.
De selecties die rechts verschijnen kan je zo laten.
Klik op Start
, maar laat de meting niet
te lang lopen (als je probleem continu optreedt is 5 a 10 seconden voldoende).
Er worden nl. grote hoeveelheden data verzameld.
Om te stoppen klik je op Save
.
Vul een beschrijving in van het probleem (puur voor je eigen gemak) en
klik nogmaals op Save
.
Het opslaan van de gegevens kan even duren.
De gegevens gaan toe naar een .ETL
-file in de
map C:\Users\username\Documents\WPR Files
Een voorbeeld (bij mij):
C:\Users\Dalmo\Documents\WPR Files\DESKTOP-6R470V2.03-23-2021.20-59-01.etl
(de datum en tijd zitten dus ook in de bestandsnaam).
Je kan nu kiezen voor onmiddellijke analyse, door te klikken op
Open in WPA
, of voor latere analyse
door te klikken op OK
Open nu links de category Computation -
CPU Usage (Sampled)
, klik met rechts op het subvenster
- DPC and ISR Usage by Module, Stack
en klik op Add Graph to Analysis View
.
In het tabblad Analysis
(rechterdeel van het venster)
zie je dan een lijst van drivers die de meeste impact hebben op
het percentage interrupts.
De grootste boosdoener staat dus bovenaan.
Het voorbeeld van de interrupts wordt ook (in het Engels) beschreven op serverfault.com
PerfView
Ik weet nog niet helemaal waar PerfView
in het rijtje past.
In elk geval werkt het vanaf Vista en hoger, en is het een losstaand (niet
te installeren) programma.
Het is vooral een analyse-tool, waarmee je o.a. opnieuw
ETL
-bestanden
kan bekijken.
Je kan het programma hier downloaden.
Op deze site vind je een hele serie van filmpjes over hoe je het programma moet gebruiken. Maar het is geen eenvoudige kost!
Tutorial.exe
Er is een voorbeeldprogramma meegeleverd.
Ik ga hetzelfde proces uitvoeren als wat in de filmpjes gedemonstreerd wordt, en zal mijn ervaringen hieronder beschrijven.
Uitvoeren van het programma en maken van de trace
Ik probeer het experiment van pagina 2 van de users guide, op een Windows 7 Ultimate 64-bits PC.
Ik klik rechts op Run a command
, en tik in:
Tutorial.exe
Ik krijg een waarschuwing, en een deel daarvan ziet er zo uit:
Warning: This trace is being collected on a X64 machine on a Pre Win8 OS
And paging is allowed in the kernel. This can cause stack breakage
when samples are taken in the kernel and there is memory pressure.
It is recommended that you disable paging in the kernel to decrease
the number of broken stacks. To do this run the command:
PerfView /EnableKernelStacks
A reboot will be required for the change to have an effect.
Het lijkt erop dat het programma wel gelopen heeft, maar verderop staat ook nog:
[Kernel Log: D:\Portable\PerfViewData.kernel.etl]
Aborting tracing for sessions 'NT Kernel Logger' and 'PerfViewSession'.
Insuring .NET Allocation profiler not installed.
Completed: Running: Tutorial.exe... See log for output. (Elapsed Time: 3,228 sec)
Exception Occured: System.Runtime.InteropServices.COMException (0x800700B7):
Cannot create a file when that file already exists.
(Exception from HRESULT: 0x800700B7)
De file die in de 1e regel genoemd wordt bestaat niet, i.t.t. wat gesuggereerd wordt.
Wanneer ik het nog een keer probeer, zonder iets veranderd te hebben, gaat
het wel goed en heb ik 2 .ETL
-bestanden,
PerfViewData.etl
en
PerfViewData.kernel.etl
Symbolen
Het programma Tutorial.exe
kan o.a. gebruikt
worden om een hoog
CPU-gebruik te traceren.
Nadat je links dubbelklikt op CPU Stacks
kom je
in het dialoogvenster Select Process Windows
Als het goed is staat bovengenoemd programma bovenaan in dit venster, omdat
het CPU-gebruik (zie de kolom onder CPU MSec
) het
hoogst is.
Geef Enter
Als je in de bovenste regels op sommige plekken vraagtekens ziet staan, dan moet net als bij dump analyse een symbol server worden opgegeven.
Maar dat gaat hier heel makkelijk.
Bij mij stond een vraagteken in de 2e regel (met
ntdll
).
Klik met rechts op zo'n regel, en dan op
Lookup Symbols
(of gebruik Alt+S
).
Je krijgt dan een vraag waarin je kan kiezen voor het gebruik maken de Microsoft symbol server. Als je dat doet verdwijnen de vraagtekens.
Als je klikt op het tabblad By Name
, en dan op de
drop-down list achter GroupPats
, en dan op
group module entries
, dan zie je veel meer vraagtekens.
Door Ctrl
ingedrukt te houden en te klikken op een
aantal regels kan je al deze symbolen in 1 keer op laten lossen.
Je hoeft dat op dezelfde computer maar eenmalig te doen, omdat de informatie opgeslagen wordt.
Vanzelfsprekend werkt het niet als er geen symbolen zijn (unmanaged code).
In geval van problemen kan je sowieso rechtsonder klikken op de
Log
-knop.
Top-down en bottom-up
Op de donkergrijze regel bovenin zie je helemaal links de waarde
Total Metric
.
Dat betekent dat er in totaal zoveel stack traces gelogged zijn, in mijn
geval 5645,0.
Achter Duration
staat hoe lang er gelogd is, en
de waarde na Metric/msec
is de deling van
bovengenoemde 2 waardes.
Als deze waarde maar 0,1 of 0,2 is, dan is het probleem waarschijnlijk niet
CPU-gerelateerd.
In mijn geval is het 0,53 (ca. 10 seconden gemeten).
In het voorbeeldfilmpje op de site is het 0,92.
Klik op het tabblad CallTree
Je ziet onder Inc
dat alle samples
horen bij ROOT
en 1 stap dieper in de hierarchie
bij het programma tutorial
Door een vinkje te zetten voor OTHER
zie je
nauwkeuriger waar binnen het programma de tijd is doorgebracht.
Zo kan je steeds meer vinkjes zetten om op steeds gedetailleerder niveau
te zien waar het programma zich bevond.
(Je kan trouwens ook rechtsklikken op bv. ROOT
,
en dan op Expand All
).
Dit is de top-down benadering, maar die werkt alleen voor eenvoudige gevallen.
Als je de hele lijst uitgeklapt hebt zie je dat er op allerlei plekken nogal
wat tijd wordt doorgebracht in de functie
DateTime.get_Now()
De bottom-up benadering is te beginnen met deze functie.
Als je klikt op het By Name
tabblad, zie je
dat de functie (bovenaan in de lijst) zo'n 85% van je CPU heeft opgeslorpt.
De vraag is of dat komt omdat het een dure functie is (hij gebruikt gewoon veel CPU) of omdat hij vaak aangeroepen is.
Daarvoor ga je kijken naar waar deze functie allemaal is aangeroepen, via
rechtsklikken op de regel van de functie, en dan
Goto - Goto Item in Callers
(je kan ook in 1 keer
op F10
drukken).
Je ziet dan dat de functie bijna altijd (in mijn geval 4808 van 4809 keer)
wordt aangeroepen door de functie SpinForASecond
Op zijn beurt wordt die functie ongeveer tweederde van het aantal keren
aangeroepen door Recspin
en de overige door
RecSpinHelper
Om te zien wat er in SpinForASecond
gebeurt kan je
zelfs de code bekijken, door rechts te klikken op de regel, en dan op
Goto Source (Def)
(of via
Alt+D
).
Grouping en folding
Als je op het tabblad CallTree
staat, kan je
grouping en folding helemaal uitschakelen door te klikken op de lege regels
in de drop-down lists achter GroupPats
en
Fold%
tracerpt (commandoregel)
Dit commando is standaard in Windows aanwezig.
Tik op de commandoregel tracerpt /? | more
in om
de opties te zien (en dan Spatie
om naar de volgende
pagina te gaan).
RATTv3
Introductie
Met RATT (geen idee waar de letters voor staan) kan je meten hoeveel tijd welke systeemcomponent besteedt in ISR's (Interrupt Service Routines) en DPC's (Deferred Procedure Call's).
Dat kan handig zijn in situaties waarin de processor veel te veel tijd bezig is met bv. ISR's. Een bekend voorbeeld is als een disk is teruggevallen van Ultra DMA naar PIO mode.
RATT werkt in elk geval onder Windows XP SP1, en waarschijnlijk ook onder alle latere Windows versies. Het is een Microsoft tool en hier te downloaden.
Gebruik
Je kan RATT (na installatie) starten via
Start - Programma's (Programs) - RATTV3 - RATT
.
Er verschijnt dan een icoontje in de system tray, en de metingen beginnen
onmiddellijk.
De gegevens die door RATT verzameld worden, worden om de 3 minuten automatisch omgezet in een rapport. Je ziet op dat moment het icoontje in de system tray tijdelijk veranderen.
Door te klikken op het icoontje heb je o.a. de volgende opties:
- Stop Monitoring: de verzamelde gegevens worden verwerkt tot een rapport, en de tracing gaat daarna gewoon weer door (als je tenminste niets hebt veranderd aan de defaults).
- Exit: beëindigt RATT.
Resultaten
De gegevens en rapporten worden opgeslagen in
%system32%\logfiles\rattv3
(%system32%
is vaak gelijk aan
c:\windows\system32
).
De naam van het rapport is
computernaam.cswa-accumulator-report.txt
.
Het kan met elke fatsoenlijke editor worden bekeken.
Onderstaand een voorbeeld uit het soort output dat je kan verwachten.
Je ziet de resultaten voor de drivers HTTP.sys
en
i8042prt.sys
.
In de op 2 en 1 na laatste kolom staan aantallen ISR's en DPC's, onderverdeeld
in tijdsklasses.
Ik weet niet wat de laatste kolom precies betekent.
Cumulative Histogram for: HTTP.sys (\SystemRoot\System32\Drivers\HTTP.sys)
#, Range, Label, ISR Count, DPC Count, DPCTmr Count
4, 4.00us to 4.99us, <5.00us, 0, 0, 6
5, 5.00us to 5.99us, <6.00us, 0, 0, 3
8, 8.00us to 8.99us, <9.00us, 0, 0, 1
TOTALS, 0, 0, 10
Cumulative Histogram for: i8042prt.sys (\SystemRoot\system32\DRIVERS\i8042prt.sys)
#, Range, Label, ISR Count, DPC Count, DPCTmr Count
3, 3.00us to 3.99us, <4.00us, 0, 1, 0
4, 4.00us to 4.99us, <5.00us, 0, 1, 0
6, 6.00us to 6.99us, <7.00us, 0, 1, 0
7, 7.00us to 7.99us, <8.00us, 0, 2, 0
8, 8.00us to 8.99us, <9.00us, 8, 1, 0
9, 9.00us to 9.99us, <10.00us, 15, 2, 0
10, 10.00us to 19.99us, <20.00us, 11562, 26, 0
11, 20.00us to 29.99us, <30.00us, 1354, 0, 0
12, 30.00us to 39.99us, <40.00us, 113, 0, 0
13, 40.00us to 49.99us, <50.00us, 3, 0, 0
14, 50.00us to 59.99us, <60.00us, 1, 0, 0
TOTALS, 13056, 34, 0
Kernrate
Introductie
Kernrate is een zgn. kernel profiling tool. Kernrate is veel complexer dan RATT, en ik kan er dan voorlopig ook alleen maar summiere informatie over geven.
Kernrate werkt in onder Windows XP en onder Vista 32-bit. Het werkt niet onder Windows 7 en Vista 64-bit. Het is een Microsoft tool, en onderdeel van de Server 2003 Resource Kit Tools (vrij te downloaden).
Blijkbaar was XPERF
de opvolger van
Kernrate
, maar die tool is inmiddels (april 2013)
ook al niet meer actueel.
Gebruik
Het meest simpele gebruik van Kernrate is op de command line
gewoon kernrate
intikken.
Op dat moment start de meting, en die kun je weer beëindigen door
Ctrl+C
in te toetsen.
De resultaten verschijnen dan onmiddellijk op je scherm. Het 1e deel (zie onder) spreekt min of meer voor zich: er is ruim 21 seconden gemeten, er wordt het nodige verteld over reads en writes, over page faults en over context switches (het ene programma of thread wordt geswapped voor een ander).
Total Profile Time = 21218 msec
Total Avg. Rate
Context Switches , 137128, 6463/sec.
System Calls , 1342296, 63260/sec.
Page Faults , 1725, 81/sec.
I/O Read Operations , 194, 9/sec.
I/O Write Operations , 362, 17/sec.
I/O Other Operations , 1466, 69/sec.
I/O Read Bytes , 160231, 826/ I/O
I/O Write Bytes , 203692, 563/ I/O
I/O Other Bytes , 101522, 69/ I/O
Van het 2e deel snap ik iets minder.
Ik weet niet waar een hit precies
voor staat, maar het is wel duidelijk dat er absurd veel
hits zijn in de module AmdPPM
.
Results for Kernel Mode:
-----------------------------
OutputResults: KernelModuleCount = 131
Percentage in the following table is based on the Total Hits for the Kernel
Time 16251 hits, 25000 events per hit --------
Module Hits msec %Total Events/Sec
AmdPPM 15555 21218 95 % 18327599
ntkrnlpa 388 21218 2 % 457159
hal 170 21218 1 % 200301
win32k 106 21218 0 % 124893
nv4_mini 10 21218 0 % 11782
USBPORT 7 21218 0 % 8247
vsdatant 5 21218 0 % 5891
nv4_disp 3 21218 0 % 3534
Ntfs 2 21218 0 % 2356
watchdog 1 21218 0 % 1178
usbehci 1 21218 0 % 1178
usbuhci 1 21218 0 % 1178
atapi 1 21218 0 % 1178
ftdisk 1 21218 0 % 1178
Als ik het goed heb kan je met kernrate zelfs zien welke procedure binnen de module verantwoordelijk is voor de hits. Je moet daarvoor in elk geval debugging symbols op je PC hebben of toegankelijk maken, en waarschijnlijk ook een optie meegeven aan kernrate.
Mark Russinovich van Microsoft
beschrijft een situatie met pieken in het processor gebruik die hij met
Kernrate
kon oplossen.
Xperf
Problemen
Cannot create a file when that file already exists. (0xb7)
Je probeert xperf
te starten, en krijgt de volgende
melding:
xperf: error: NT Kernel Logger:
Cannot create a file when that file already exists. (0xb7).
Deze melding is zeer misleidend, want het heeft niets te maken met een al
bestaande file.
Een andere tool heeft blijkbaar de NT Kernel Logger
al gestart om event trace data te verzamelen.
Zie deze thread.
In mijn geval ging het om Process Explorer
.
Toen ik dit programma had beëindigd ging het goed.
xperf: error: c:\temp\merged.etl: The parameter is incorrect. (0x80070057)
SxS tracing (Vista en hoger?)
Introductie
In de event logs kan je aanlopen tegen SideBySide
errors.
Zie bijvoorbeeld
dit probleem met het programma
FreeCommander
.
Op
deze Engelse Wikipedia pagina
kan je meer leren over de Side-by-side technologie, die ook wel
SxS
of WinSxs
wordt genoemd.
Op
deze pagina
wordt uitgelegd hoe je dit soort problemen verder kunt uitzoeken, o.a.
m.b.v. het programma sxstrace.exe
in de map
\Windows\System32
Gebruik van sxstrace
Door nu gewoon sxstrace
in te tikken zie je de
opties die je aan het programma kunt meegeven.
Die zijn zeer beperkt en zeer eenvoudig.
In wezen komt een trace-sessie op het volgende neer: tik in
sxstrace trace -logfile:filenaam1
om de sessie te starten, na enige tijd gevolgd door
sxstrace stoptrace
om de sessie te beëindigen.
Maar in principe kan dat ook door gewoon op Enter
te drukken.
Tenslotte wil je graag de gegevens uit filenaam1
verwerken, en dat doe je met het commando:
sxstrace parse -logfile:filenaam1
-outfile:filenaam2
filenaam2
is een gewone leesbare file, dus je
kan hem bv. als extensie TXT
geven.
Ik geloof dat ik na ongeveer een kwartier tracen op een Windows 7 PC
ongeveer 500 regels uitvoer had, dus dat valt nog mee.
Maar aangezien ik denk dat veel van die
SideBySide
-errors niet reproduceerbaar zijn, moet je
misschien lang tracen.
Ik heb op dit moment nog geen voorbeelden van wat je uit die trace kan halen.
In de trace die ik heb gedaan zaten 3 secties die beginnen met iets wat er uitziet als:
=================
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = Wow32
CultureFallBacks = en-US;en
ManifestPath = C:\Windows\SysWOW64\CCM\SMSCliUI.exe
AssemblyDirectory = C:\Windows\SysWOW64\CCM\
Application Config File =
-----------------
Ik vermoed dat als je problemen hebt je moet zoeken naar een sectie die
in ManifestPath
het programma heeft staan waar het om draait.
Voorbeeld met Windows 10, oktober 2017
Ik heb bijna elke dag sinds 19-5-2017 een stuk of 7 van dit soort meldingen, en helaas zie ik het nu pas (omdat ik nogal wat problemen met de PC heb).
Maar gelukkig kan ik nog zien dat het 19-5 begon, dus de volgende stap is kijken wat er toen geïnstalleerd is.
En de oorzaak lijkt dezelfde te zijn als die op het werk in
dit voorbeeld: installatie van een paar
Microsoft-pakketten, zoals
Windows Software Development Kit
en
.NET Framework 4.7
Het zal ook weer eens niet Microsoft zijn.
Voorbeeldsituatie (Windows 7, 2013)
Op mijn werk heb ik al een flink aantal nachten achter elkaar elke keer 3 SideBySide, 33-gebeurtenissen.
Dus heb ik sxstrace.exe
een keer laten draaien, met
het volgende resultaat (wat precies overeenkomt met bovenstaand event):
Begin Activation Context Generation.
Input Parameter:
Flags = 0
ProcessorArchitecture = AMD64
CultureFallBacks = en-US;en
ManifestPath = C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ia64\pgocvt.exe
AssemblyDirectory = C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ia64\
Application Config File =
-----------------
INFO: Parsing Manifest File C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ia64\pgocvt.exe.
INFO: Manifest Definition Identity is pgocvt,processorArchitecture="X86",type="win32",version="1.0.0.0".
INFO: Reference: Microsoft.VC90.CRT,processorArchitecture="ia64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8"
INFO: Resolving reference Microsoft.VC90.CRT,processorArchitecture="ia64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
INFO: Resolving reference for ProcessorArchitecture ia64.
INFO: Resolving reference for culture Neutral.
INFO: Applying Binding Policy.
INFO: No publisher policy found.
INFO: No binding policy redirect found.
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_64\Microsoft.VC90.CRT\9.0.21022.8__1fc8b3b9a1e18e3b\Microsoft.VC90.CRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ia64\Microsoft.VC90.CRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ia64\Microsoft.VC90.CRT.MANIFEST.
INFO: Attempt to probe manifest at C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ia64\Microsoft.VC90.CRT\Microsoft.VC90.CRT.DLL.
INFO: Attempt to probe manifest at C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\ia64\Microsoft.VC90.CRT\Microsoft.VC90.CRT.MANIFEST.
INFO: Did not find manifest for culture Neutral.
INFO: End assembly probing.
ERROR: Cannot resolve reference Microsoft.VC90.CRT,processorArchitecture="ia64",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8".
ERROR: Activation Context generation failed.
End Activation Context Generation.
De 3 meldingen gaan over 3 verschillende programma's, en ik heb hem hierboven
vetgedrukt (pgocvt.exe
).
Ik heb ook een artikel gevonden over het analyseren van dit soort fouten, maar dat gaat uit van wel erg veel voorkennis.
Ik heb in Logboeken
gekeken, en dan zie ik dat de
meldingen (steeds 3 tegelijk) begonnen zijn op 27-4-2013.
Als ik dat vergelijk met de programma's die er geïnstalleerd zijn blijkt
er een verband met de Windows SDK for Windows 7 (7.0)
,
waarvan ook de Microsoft Visual C++ 2008 Redistributable
onderdeel uitmaakt (versie 9.0.30729).
Het is nog niet echt de trace output die me verder heeft geholpen, maar ik
zie dat ik in een eerder stadium (december 2012)
Windows SDK for Windows 7 (7.1)
op het systeem heb
gezet, dus blijkbaar ben ik teruggegaan naar een lagere versie.
Ik las ook al op een forum als oplossing om
Visual C++ 2010
te installeren, dus ik moet iets
vergelijkbaars 1 van de komende dagen maar eens proberen.
Standaard traces (in een domain?) en de files die erbij horen
Introductie
Door fouten in gebeurtenissen in Logboeken (Event
Viewer
kwam ik erachter dat er in een domain door de beheerders (of
altijd) een aantal traces standaard gestart worden.
Welke traces zijn actief?
Dat kan je zien door het perfmon console te openen.
Klik dan op het plusje voor
Gegevensverzamelaarsets (Data Collector Sets)
,
en op het plusje voor
Gebeurtenistraceersessies (Event Trace Sessions)
.
Je ziet dan (in een domein in elk geval) een aantal traces met status
Actief (Running)
Als het goed is zou dat aantal moeten overeenkomen met het aantal items in de
categorie
Gebeurtenistraceersessies voor opstarten
(Startup Event Trace Session)
waarachter
Ingeschakeld (Enabled)
staat.
Waar gaan de traces naar toe?
Ik denk dat alle traces naar .ETL
-bestanden gaan.
Een aantal ervan heb ik gevonden in de mappen
C:\Windows\System32\LogFiles\WMI
en
C:\Windows\System32\LogFiles\WMI\RtBackup
Maar in plaats van het hele systeem te doorzoeken op
.ETL
-files, kan je efficiënter met rechts klikken
op 1 van de 'running' traces, en dan klikken op
Eigenschappen (Properties)
Op de tabbladen Map (Directory)
en
Bestand (File)
vind je de map- en bestandsnaam.
Echter, op mijn systeem zit er in die map helemaal niets, terwijl ik sommige
van de bestanden wel in bovengenoemde mappen vind.
Ik geef verborgen bestanden ook weer, dus dat kan het probleem niet zijn.
Reageer via E-mail (dalmolen@xs4all.nl)
Deze pagina is voor het laatst gewijzigd op: 26-01-23 13:45:03