KB » Computer » Event tracing m.b.v. RATT en Kernrate

Event tracing m.b.v. RATT en Kernrate

    Tweeten

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:

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:

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

Open een commandoregel

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.



    Tweeten

© Henk Dalmolen
Reageer via E-mail (dalmolen@xs4all.nl)

Deze pagina is voor het laatst gewijzigd op: 26-01-23 13:45:03