SHOW:
|
|
- or go back to the newest paste.
1 | @echo off | |
2 | ||
3 | REM In order to capture etl traces, this script relies on Xperf.exe. It is assumed | |
4 | REM that Xperf.exe will be installed in GPUView's parent directory. | |
5 | ||
6 | REM | |
7 | REM Logic: | |
8 | REM | |
9 | REM If the command line is blank, we'll try to start logging using normal settings. | |
10 | REM If the command line is blank and we're already logging, we'll turn off logging. | |
11 | REM | |
12 | REM Usage: | |
13 | REM | |
14 | REM This script requires an Administrator CMD Window to work. This script also | |
15 | REM uses the DOS environment to save state. The script is designed to be run twice: | |
16 | REM the first time it turns on logging, the second time it stops logging. The end | |
17 | REM result is a merged.etl file. | |
18 | ||
19 | REM | |
20 | REM Different tracing options that can be enabled | |
21 | REM | |
22 | REM SET XXX=(GUID|KnownProviderName)[:(Flags|Groups)[:Level[:'stack']]] | |
23 | set TRACE_MIRAGE=356E1338-04AD-420E-8B8A-A2EB678541CF:0xf00000:5 | |
24 | set TRACE_DHD=19d9d739-da0a-41a0-b97f-24ed27abc9fb:0xffffff:5 | |
25 | set TRACE_DXVA2=a0386e75-f70c-464c-a9ce-33c44e091623:0xffff:5 | |
26 | set TRACE_MMCSS=f8f10121-b617-4a56-868b-9df1b27fe32c:0xffff:5 | |
27 | set TRACE_WMDRM=6e03dd26-581b-4ec5-8f22-601a4de5f022:0xffff:5 | |
28 | set TRACE_WME=8f2048e0-f260-4f57-a8d1-932376291682 | |
29 | set TRACE_WMP=681069c4-b785-466a-bc63-4aa616644b68:0xffff:5 | |
30 | set TRACE_DVD=75d4a1bb-7cc6-44b1-906d-d5e05be6d060:0xffff:5 | |
31 | set TRACE_DSHOW=28cf047a-2437-4b24-b653-b9446a419a69 | |
32 | set TRACE_MF=f404b94e-27e0-4384-bfe8-1d8d390b0aa3+362007f7-6e50-4044-9082-dfa078c63a73:0x000000000000ffff:0x5 | |
33 | set TRACE_AE=a6a00efd-21f2-4a99-807e-9b3bf1d90285:0x000000000000ffff:0x5 | |
34 | set TRACE_HME=63770680-05F1-47E0-928A-9ACFDCF52147:0xffff:5 | |
35 | set TRACE_HDDVD=779d8cdc-666b-4bf4-a367-9df89d6901e8:0xffff:5 | |
36 | set TRACE_DWMAPIGUID=71dd85bc-d474-4974-b0f6-93ffc5bfbd04::6 | |
37 | set TRACE_SCHEDULEGUID=8cc44e31-7f28-4f45-9938-4810ff517464:0xffff:6 | |
38 | set TRACE_DX=DX | |
39 | set TRACE_VR=8c8f13b1-60eb-4b6a-a433-de86104115ac | |
40 | set TRACE_WARP=ee685ec4-8270-4b08-9e4e-8b356f48f92f:0 | |
41 | set TRACE_DXGI=CA11C036-0102-4A2D-A6AD-F03CFED5D3C9:0xf:6:'stack' | |
42 | set TRACE_DXGIDEBUG=F1FF64EF-FAF3-5699-8E51-F6EC2FBD97D1:0xffffffffffffffff | |
43 | set TRACE_DXGIDEBUG_LIGHT=%TRACE_DXGIDEBUG%:4 | |
44 | set TRACE_DXGIDEBUG_NORMAL=%TRACE_DXGIDEBUG%:4:'stack' | |
45 | set TRACE_DXGIDEBUG_VERBOSE=%TRACE_DXGIDEBUG%:6:'stack' | |
46 | set TRACE_DXGI_TELEMETRY=03bbe5b8-c788-4d0b-b47e-5b5731398a89 | |
47 | set TRACE_DXCORE=ab604427-d048-4139-8494-1246c81f09d5:0xffffffffffffffff:6:'stack' | |
48 | set TRACE_D3D11ON12=a0ab5aac-e0a4-4f10-83c6-31939c604fd9:0xffffffffffffffff:6:'stack' | |
49 | set TRACE_D3D9ON12=c0c418c5-1f3c-4ee0-93a2-a0bb8f417f9a:0xffffffffffffffff:6:'stack' | |
50 | set TRACE_D3D12=5d8087dd-3a9b-4f56-90df-49196cdc4f11:0xffffffffffffffff:6:'stack' | |
51 | set TRACE_D3D11=db6f6ddb-ac77-4e88-8253-819df9bbf140:0xffffffffffffffff:6:'stack' | |
52 | set TRACE_D3D10LEVEL9=7E7D3382-023C-43cb-95D2-6F0CA6D70381:0x1 | |
53 | set TRACE_D3DSCACHE=2d4ebca6-ea64-453f-a292-ae2ea0ee513b:0xf:5 | |
54 | set TRACE_DXC=802ec45a-1e99-4b83-9920-87c98277ba9d | |
55 | set TRACE_DXC_ALL=%TRACE_DXC%:0x90FFFF:5:'stack' | |
56 | set TRACE_DXC_LONGHAUL=%TRACE_DXC%:0x800:5 | |
57 | set TRACE_DXC_MIN=%TRACE_DXC%:0x800:5 | |
58 | set TRACE_DXC_LIGHT=%TRACE_DXC%:0x826:5 | |
59 | set TRACE_DXC_NORMAL=%TRACE_DXC%:0x900236:5 | |
60 | set TRACE_DXC_STACKS=%TRACE_DXC%:0x208041:5:'stack' | |
61 | set TRACE_UMD=a688ee40-d8d9-4736-b6f9-6b74935ba3b1:0xffff:5 | |
62 | set TRACE_DWM=a42c77db-874f-422e-9b44-6d89fe2bd3e5:0x000000007fffffff:0x5 | |
63 | set TRACE_DWM2=8c9dd1ad-e6e5-4b07-b455-684a9d879900:0xFFFF:6 | |
64 | set TRACE_DWM3=9e9bba3c-2e38-40cb-99f4-9e8281425164:0xFFFF:6 | |
65 | set TRACE_CODEC=ea6d6e3b-7014-4ab1-85db-4a50cda32a82:0xffff:5 | |
66 | set TRACE_KMFD=E7C7EDF9-D0E4-4338-8AE3-BCA3C5B4B4A3 | |
67 | set TRACE_UMFD=a70bc228-e778-4061-86fa-debb03fda64a | |
68 | set TRACE_WDLOG=70e74dd8-39db-5f6f-6fd1-f5581b29e834 | |
69 | set TRACE_WDLOG_ALL=%TRACE_WDLOG%:0xffff:5 | |
70 | set TRACE_WDLOG_ERRORS=%TRACE_WDLOG%:0x3:5 | |
71 | REM set TRACE_AVALON=AvalonALL | |
72 | set TRACE_TESTFRAMEWORK=31293f4f-f7bb-487d-8b3b-f537b827352f | |
73 | set TRACE_TEST=42C4E0C1-0D92-46f0-842C-1E791FA78D52 | |
74 | set TRACE_SC=30336ed4-e327-447c-9de0-51b652c86108 | |
75 | set TRACE_XAML=531A35AB-63CE-4BCF-AA98-F88C7A89E455:0xffff | |
76 | set TRACE_WIN32K=8c416c79-d49b-4f01-a467-e56d3aa8234c:0xffff | |
77 | set TRACE_D2D=dcb453db-c652-48be-a0f8-a64459d5162e:0:5 | |
78 | set TRACE_D2DSCENARIOS=712909c0-6e57-4121-b639-87c8bf9004e0 | |
79 | REM set TRACE_PRESENT= | |
80 | set TRACE_D3D9_PRESENT=783ACA0A-790E-4d7f-8451-AA850511C6B9:0xf:6 | |
81 | set TRACE_DXGI_PRESENT=CA11C036-0102-4A2D-A6AD-F03CFED5D3C9:0xf:6 | |
82 | set TRACE_D3D11_PRESENT=db6f6ddb-ac77-4e88-8253-819df9bbf140:0xffffffffffffffff:6 | |
83 | set TRACE_DXC_ALL_PRESENT=%TRACE_DXC%:0x10BFFF:5 | |
84 | set TRACE_DXC_PRESENT=%TRACE_DXC%:0x208041:5 | |
85 | set TRACE_KERNEL_POWER=Microsoft-Windows-Kernel-Power:0xffffffffffffffff:0xff+Microsoft-Windows-Kernel-Processor-Power:0xffffffffffffffff:0xff+Microsoft-Windows-Kernel-Pep:0xffffffffffffffff:0xff | |
86 | set TRACE_MLSD=7b4dc3d4-29a1-4599-8930-9ea9001686d2 | |
87 | ||
88 | REM | |
89 | REM To Add another provider, create an environment variable here and then add it | |
90 | REM to the collection just below. | |
91 | REM set TRACE_PRIVATE=X | |
92 | REM | |
93 | ||
94 | REM | |
95 | REM These variables hold provider GUIDs collections that we want for each level. | |
96 | REM Notice that the levels build on each other. If you add a provider to the collection, | |
97 | REM you should just have to add it once. If there are special flags for each level, | |
98 | REM modify the individual sections like what's done for the Dxgkrnl logger. Also notice | |
99 | REM that there are two main sessions: One that the script will call capturestate on | |
100 | REM and another that we don't. If your provider doesn't respond to capturestate, | |
101 | REM it should not be placed in that session. | |
102 | REM | |
103 | REM CaptureState collection | |
104 | SET TRACE_CS_PROVIDERS_MIN=%TRACE_VR%+%TRACE_UMD%+%TRACE_DXGI%+%TRACE_DXGI_TELEMETRY%+%TRACE_D3D11ON12%+%TRACE_D3D9ON12%+%TRACE_D3D12%+%TRACE_D3D11%+%TRACE_D3D10LEVEL9% | |
105 | SET TRACE_CS_PROVIDERS_PRESENT=%TRACE_UMD%+%TRACE_DXGI_PRESENT%+%TRACE_D3D11_PRESENT%+%TRACE_D3D9_PRESENT%+%TRACE_MIRAGE%+%TRACE_DHD% | |
106 | ||
107 | SET TRACE_CS_PROVIDERS_LIGHT=%TRACE_CS_PROVIDERS_MIN%+%TRACE_D3DSCACHE% | |
108 | SET TRACE_CS_PROVIDERS_NORMAL=%TRACE_CS_PROVIDERS_LIGHT%+%TRACE_MIRAGE%+%TRACE_DHD%+%TRACE_KERNEL_POWER% | |
109 | SET TRACE_CS_PROVIDERS_VERBOSE=%TRACE_CS_PROVIDERS_NORMAL% | |
110 | ||
111 | SET TRACE_CS_STATE_MIN=%TRACE_UMD%+%TRACE_DXGI%+%TRACE_DXGI_TELEMETRY%+%TRACE_D3D11ON12%+%TRACE_D3D9ON12%+%TRACE_D3D12%+%TRACE_D3D11%+%TRACE_D3D10LEVEL9% | |
112 | SET TRACE_CS_STATE_PRESENT=%TRACE_UMD%+%TRACE_DXGI_PRESENT%+%TRACE_D3D11_PRESENT%+%TRACE_D3D9_PRESENT% | |
113 | ||
114 | SET TRACE_CS_STATE_LIGHT=%TRACE_CS_STATE_MIN%+%TRACE_D3DSCACHE% | |
115 | SET TRACE_CS_STATE_NORMAL=%TRACE_CS_STATE_LIGHT% | |
116 | SET TRACE_CS_STATE_VERBOSE=%TRACE_CS_STATE_NORMAL% | |
117 | SET SCHEDULER_LOG_STATE=%TRACE_DXC%:0x04000000:5 | |
118 | ||
119 | REM No CaptureState collection | |
120 | SET TRACE_NOCS_PROVIDERS_PRESENT=%TRACE_DXC_PRESENT%+%TRACE_DWM3%+%TRACE_WIN32K% | |
121 | SET TRACE_NOCS_PROVIDERS_MIN=%TRACE_DXC_STACKS% | |
122 | ||
123 | SET TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG=%TRACE_NOCS_PROVIDERS_MIN%+%TRACE_MF%+%TRACE_WME% | |
124 | SET TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG=%TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG%+%TRACE_SCHEDULEGUID%+%TRACE_SC%+%TRACE_WIN32K%+%TRACE_DWM%+%TRACE_DWM2%+%TRACE_DWM3%+%TRACE_TESTFRAMEWORK%+%TRACE_TEST%+%TRACE_DSHOW%+%TRACE_AE%+%TRACE_DXVA2%+%TRACE_DXCORE%+%TRACE_MLSD% | |
125 | SET TRACE_NOCS_PROVIDERS_VERBOSE_NODXGIDEBUG=%TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG%+%TRACE_D2DSCENARIOS%+%TRACE_D2D%+%TRACE_MMCSS%+%TRACE_WMDRM%+%TRACE_WMP%+%TRACE_DVD%+%TRACE_HME%+%TRACE_HDDVD%+%TRACE_DWMAPIGUID%+%TRACE_CODEC%+%TRACE_MLSD% | |
126 | ||
127 | SET TRACE_NOCS_PROVIDERS_LIGHT=%TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG%+%TRACE_DXGIDEBUG_LIGHT% | |
128 | SET TRACE_NOCS_PROVIDERS_NORMAL=%TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG%+%TRACE_DXGIDEBUG_NORMAL% | |
129 | SET TRACE_NOCS_PROVIDERS_VERBOSE=%TRACE_NOCS_PROVIDERS_VERBOSE_NODXGIDEBUG%+%TRACE_DXGIDEBUG_VERBOSE% | |
130 | ||
131 | REM | |
132 | REM To turn off the echo to the console, set this variable to no | |
133 | REM | |
134 | SET ECHO_INFO=yes | |
135 | ||
136 | ||
137 | ||
138 | if not "%TLOG%"=="" goto Done_With_It | |
139 | REM | |
140 | REM To determine physical memory | |
141 | REM | |
142 | if not "%TRACE_LOGGING_MEMORY%" == "" goto Do_Not_Process_File | |
143 | ||
144 | IF EXIST %windir%\system32\systeminfo.exe ( | |
145 | call :GetPhysicalMemory | |
146 | ) ELSE ( | |
147 | set TRACE_LOGGING_MEMORY=32000 | |
148 | ) | |
149 | ||
150 | :Do_Not_Process_File | |
151 | ||
152 | REM | |
153 | REM For buffers sizes | |
154 | REM | |
155 | REM The cutoff for large bufers 5G, Medium buffers 2G physical memory | |
156 | if %TRACE_LOGGING_MEMORY% Gtr 4000 goto Set_Large_Buffers | |
157 | if %TRACE_LOGGING_MEMORY% Gtr 2000 goto Set_Medium_Buffers | |
158 | REM echo !Using Small Buffers Memory Footprint here! | |
159 | set TRACE_LARGE_BUFFERS=-BufferSize 1024 -MinBuffers 30 -MaxBuffers 120 | |
160 | set TRACE_STAND_BUFFERS=-BufferSize 1024 -MinBuffers 25 -MaxBuffers 25 | |
161 | goto Done_With_It | |
162 | :Set_Medium_Buffers | |
163 | REM echo !Using Meidum Buffers Memory Footprint here! | |
164 | set TRACE_LARGE_BUFFERS=-BufferSize 1024 -MinBuffers 60 -MaxBuffers 240 | |
165 | set TRACE_STAND_BUFFERS=-BufferSize 1024 -MinBuffers 50 -MaxBuffers 50 | |
166 | goto Done_With_It | |
167 | :Set_Large_Buffers | |
168 | REM echo !Using Large Buffers Memory Footprint here! | |
169 | set TRACE_LARGE_BUFFERS=-BufferSize 1024 -MinBuffers 120 -MaxBuffers 480 | |
170 | set TRACE_STAND_BUFFERS=-BufferSize 1024 -MinBuffers 100 -MaxBuffers 100 | |
171 | :Done_With_It | |
172 | ||
173 | REM | |
174 | REM NT logging groupings | |
175 | REM | |
176 | set TRACE_NT_MIN=LOADER+PROC_THREAD+CSWITCH+DISPATCHER+POWER | |
177 | set TRACE_NT_LONGHAUL=LOADER+PROC_THREAD+POWER | |
178 | set TRACE_NT_LIGHT=%TRACE_NT_MIN%+DISK_IO+HARD_FAULTS | |
179 | REM | |
180 | REM Note in order to get callstacks on amd64 bit builds, you need to enable the following | |
181 | REM registry key: | |
182 | REM | |
183 | REM HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management\DisablePagingExecutive | |
184 | REM | |
185 | REM by setting it to 1. Lookup DisablePagingExecutive via your favorite search engine for details. | |
186 | REM | |
187 | set TRACE_NT_NORMAL=%TRACE_NT_LIGHT%+PROFILE+MEMINFO+DPC+INTERRUPT -stackwalk @"%~dp0\EventsForStackTrace.txt" | |
188 | set TRACE_NT_VERBOSE=%TRACE_NT_LIGHT%+PROFILE+MEMINFO+SYSCALL+DPC+INTERRUPT+ALL_FAULTS -stackwalk @"%~dp0\EventsForStackTrace.txt" | |
189 | ||
190 | REM | |
191 | REM From 'xperf -help providers' we get the following table. GPUView, at a minimum | |
192 | REM really needs LOADER, PROC_THREAD and CSWITCH. | |
193 | REM | |
194 | REM Kernel Flags: | |
195 | REM PROC_THREAD : Process and Thread create/delete | |
196 | REM LOADER : Kernel and user mode Image Load/Unload events | |
197 | REM PROFILE : CPU Sample profile | |
198 | REM CSWITCH : Context Switch | |
199 | REM COMPACT_CSWITCH: Compact Context Switch | |
200 | REM DISPATCHER : CPU Scheduler | |
201 | REM DPC : DPC Events | |
202 | REM INTERRUPT : Interrupt events | |
203 | REM SYSCALL : System calls | |
204 | REM PRIORITY : Priority change events | |
205 | REM ALPC : Advanced Local Procedure Call | |
206 | REM PERF_COUNTER : Process Perf Counters | |
207 | REM DISK_IO : Disk I/O | |
208 | REM DISK_IO_INIT : Disk I/O Initiation | |
209 | REM FILE_IO : File system operation end times and results | |
210 | REM FILE_IO_INIT : File system operation (create/open/close/read/write) | |
211 | REM HARD_FAULTS : Hard Page Faults | |
212 | REM FILENAME : FileName (e.g., FileName create/delete/rundown) | |
213 | REM SPLIT_IO : Split I/O | |
214 | REM REGISTRY : Registry tracing | |
215 | REM DRIVERS : Driver events | |
216 | REM POWER : Power management events | |
217 | REM NETWORKTRACE : Network events (e.g., tcp/udp send/receive) | |
218 | REM VIRT_ALLOC : Virtual allocation reserve and release | |
219 | REM MEMINFO : Memory List Info | |
220 | REM ALL_FAULTS : All page faults including hard, Copy on write, demand zero faults, etc. | |
221 | ||
222 | ||
223 | REM | |
224 | REM The Environment variable TLOG (trace logging) will be used to indicate that | |
225 | REM logging is active or not. if TLOG is set to ON, we're currently logging. | |
226 | REM | |
227 | ||
228 | if "%TLOG%"=="" goto StartSection | |
229 | if "%TLOG%"=="MIN" goto StopSection | |
230 | if "%TLOG%"=="PRESENT" goto StopSection | |
231 | if "%TLOG%"=="NORMAL" goto StopSection | |
232 | if "%TLOG%"=="LIGHT" goto StopSection | |
233 | if "%TLOG%"=="LONGHAUL" goto StopSection | |
234 | if "%TLOG%"=="VERBOSE" goto StopSection | |
235 | ||
236 | REM Start Logging section | |
237 | :StartSection | |
238 | ||
239 | REM | |
240 | REM If we're already logging, stop logging. | |
241 | REM | |
242 | if "%TLOG%"=="MIN" goto StopSection | |
243 | if "%TLOG%"=="PRESENT" goto StopSection | |
244 | if "%TLOG%"=="NORMAL" goto StopSection | |
245 | if "%TLOG%"=="LIGHT" goto StopSection | |
246 | if "%TLOG%"=="LONGHAUL" goto StopSection | |
247 | if "%TLOG%"=="VERBOSE" goto StopSection | |
248 | ||
249 | REM | |
250 | REM Check to see if they used a command line option | |
251 | REM | |
252 | ||
253 | if "%1%" == "" goto StartNormal | |
254 | if "%1%" == "normal" goto StartNormal | |
255 | if "%1%" == "n" goto StartNormal | |
256 | if "%1%" == "light" goto StartLight | |
257 | if "%1%" == "longhaul" goto StartLonghaul | |
258 | if "%1%" == "l" goto StartLight | |
259 | if "%1%" == "present" goto StartPresent | |
260 | if "%1%" == "min" goto StartMin | |
261 | if "%1%" == "m" goto StartMin | |
262 | if "%1%" == "verbose" goto StartVerbose | |
263 | if "%1%" == "v" goto StartVerbose | |
264 | goto CLUsage | |
265 | ||
266 | :StartLonghaul | |
267 | REM | |
268 | REM Start Longhaul | |
269 | REM | |
270 | "%~dp0"..\Xperf -on %TRACE_NT_LONGHAUL% %TRACE_LARGE_BUFFERS% -f Kernel.etl | |
271 | "%~dp0"..\Xperf -start DxcLogger -on %TRACE_DXC_LONGHAUL% %TRACE_LARGE_BUFFERS% -f DXC.etl | |
272 | "%~dp0"..\Xperf -capturestate DxcLogger %TRACE_DXC_LONGHAUL% | |
273 | set TLOG=LONGHAUL | |
274 | goto EndIt | |
275 | ||
276 | :StartProviders | |
277 | ||
278 | if "%ECHO_INFO%" == "yes" echo Xperf -on %TRACE_NT_PROVIDER% %TRACE_LARGE_BUFFERS% -f Kernel.etl | |
279 | if "%ECHO_INFO%" == "yes" echo. | |
280 | "%~dp0"..\Xperf -on %TRACE_NT_PROVIDER% %TRACE_LARGE_BUFFERS% -f Kernel.etl | |
281 | ||
282 | if "%ECHO_INFO%" == "yes" echo Xperf -start CaptureState -on %TRACE_CS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f CaptureState.etl | |
283 | if "%ECHO_INFO%" == "yes" echo. | |
284 | "%~dp0"..\Xperf -start CaptureState -on %TRACE_CS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f CaptureState.etl | |
285 | ||
286 | if "%ECHO_INFO%" == "yes" echo Xperf -capturestate CaptureState %TRACE_CS_STATE% | |
287 | if "%ECHO_INFO%" == "yes" echo. | |
288 | "%~dp0"..\Xperf -capturestate CaptureState %TRACE_CS_STATE% | |
289 | ||
290 | if "%ECHO_INFO%" == "yes" echo Xperf -start SchedulingLog -on %SCHEDULER_LOG_STATE% %TRACE_LARGE_BUFFERS% -f SchedulingLog.etl | |
291 | if "%ECHO_INFO%" == "yes" echo. | |
292 | "%~dp0"..\Xperf -start SchedulingLog -on %SCHEDULER_LOG_STATE% %TRACE_LARGE_BUFFERS% -f SchedulingLog.etl | |
293 | ||
294 | if "%ECHO_INFO%" == "yes" echo Xperf -capturestate SchedulingLog %SCHEDULER_LOG_STATE% | |
295 | if "%ECHO_INFO%" == "yes" echo. | |
296 | "%~dp0"..\Xperf -capturestate SchedulingLog %SCHEDULER_LOG_STATE% | |
297 | ||
298 | if "%ECHO_INFO%" == "yes" echo Xperf -start NoCaptureState -on %TRACE_NOCS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f NoCaptureState.etl | |
299 | if "%ECHO_INFO%" == "yes" echo. | |
300 | "%~dp0"..\Xperf -start NoCaptureState -on %TRACE_NOCS_PROVIDERS% %TRACE_LARGE_BUFFERS% -f NoCaptureState.etl | |
301 | ||
302 | goto EndIt | |
303 | ||
304 | :StartMin | |
305 | SET TRACE_NT_PROVIDER=%TRACE_NT_MIN% | |
306 | SET TRACE_CS_PROVIDERS=%TRACE_DXC_MIN%+%TRACE_CS_PROVIDERS_MIN% | |
307 | SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_MIN% | |
308 | SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x9+%TRACE_XAML%:4+%TRACE_WARP%:1+%TRACE_NOCS_PROVIDERS_MIN% | |
309 | call :StartProviders | |
310 | @echo off | |
311 | set TLOG=MIN | |
312 | goto EndIt | |
313 | ||
314 | :StartPresent | |
315 | SET TRACE_NT_PROVIDER=%TRACE_NT_MIN% | |
316 | SET TRACE_CS_PROVIDERS=%TRACE_DXC_MIN%+%TRACE_CS_PROVIDERS_PRESENT% | |
317 | SET TRACE_CS_STATE=%TRACE_DXC_ALL_PRESENT%+%TRACE_CS_STATE_PRESENT% | |
318 | SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x9+%TRACE_XAML%:4+%TRACE_NOCS_PROVIDERS_PRESENT% | |
319 | call :StartProviders | |
320 | @echo off | |
321 | set TLOG=PRESENT | |
322 | goto EndIt | |
323 | ||
324 | :StartLight | |
325 | SET TRACE_NT_PROVIDER=%TRACE_NT_LIGHT% | |
326 | SET TRACE_CS_PROVIDERS=%TRACE_DXC_LIGHT%+%TRACE_CS_PROVIDERS_LIGHT% | |
327 | SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_LIGHT% | |
328 | SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x2F+%TRACE_XAML%:4+%TRACE_WARP%:1+%TRACE_NOCS_PROVIDERS_LIGHT% | |
329 | call :StartProviders | |
330 | @echo off | |
331 | set TLOG=LIGHT | |
332 | goto EndIt | |
333 | ||
334 | :StartNormal | |
335 | SET TRACE_NT_PROVIDER=%TRACE_NT_NORMAL% | |
336 | SET TRACE_CS_PROVIDERS=%TRACE_DXC_NORMAL%+%TRACE_CS_PROVIDERS_NORMAL% | |
337 | SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_NORMAL% | |
338 | SET TRACE_NOCS_PROVIDERS=%TRACE_DX%:0x2F+%TRACE_XAML%:4+%TRACE_WARP%:1+%TRACE_NOCS_PROVIDERS_NORMAL%+%TRACE_WDLOG_ERRORS% | |
339 | call :StartProviders | |
340 | @echo off | |
341 | set TLOG=NORMAL | |
342 | goto EndIt | |
343 | ||
344 | :StartVerbose | |
345 | REM "%~dp0"..\Xperf -setprofint 1221 | |
346 | SET TRACE_NT_PROVIDER=%TRACE_NT_NORMAL% | |
347 | SET TRACE_CS_PROVIDERS=%TRACE_DXC_NORMAL%+%TRACE_CS_PROVIDERS_VERBOSE% | |
348 | SET TRACE_CS_STATE=%TRACE_DXC_ALL%+%TRACE_CS_STATE_VERBOSE% | |
349 | SET TRACE_NOCS_PROVIDERS=%TRACE_DX%+%TRACE_XAML%:5+%TRACE_WARP%:0x12+%TRACE_NOCS_PROVIDERS_VERBOSE%+%TRACE_WDLOG_ALL% | |
350 | call :StartProviders | |
351 | @echo off | |
352 | set TLOG=VERBOSE | |
353 | goto EndIt | |
354 | ||
355 | ||
356 | ||
357 | REM Stop Logging section | |
358 | :StopSection | |
359 | REM | |
360 | REM Here is where we determine how to shut things off | |
361 | REM | |
362 | ||
363 | if "%TLOG%"=="MIN" goto StopMin | |
364 | if "%TLOG%"=="PRESENT" goto StopPresent | |
365 | if "%TLOG%"=="LIGHT" goto StopLight | |
366 | if "%TLOG%"=="LONGHAUL" goto StopLonghaul | |
367 | if "%TLOG%"=="NORMAL" goto StopNormal | |
368 | if "%TLOG%"=="VERBOSE" goto StopVerbose | |
369 | goto EndIt | |
370 | ||
371 | :StopLonghaul | |
372 | "%~dp0"..\Xperf -stop DxcLogger | |
373 | "%~dp0"..\Xperf.exe -stop | |
374 | echo All loggers stopped, starting merge... | |
375 | "%~dp0"..\Xperf -merge DXC.etl kernel.etl Merged.etl | |
376 | "%~dp0"..\Xperf -setprofint > NUL | |
377 | echo Output: %~dp0Merged.etl | |
378 | call :DeleteIntermediate DXC.etl | |
379 | call :DeleteIntermediate Kernel.etl | |
380 | set TLOG= | |
381 | goto EndIt | |
382 | ||
383 | :StopProviders | |
384 | ||
385 | REM Capture scheduler log state | |
386 | if "%ECHO_INFO%" == "yes" echo XPerf -capturestate SchedulingLog | |
387 | "%~dp0"..\Xperf -capturestate SchedulingLog %SCHEDULER_LOG_STATE% | |
388 | ||
389 | if "%ECHO_INFO%" == "yes" echo Xperf -stop SchedulingLog | |
390 | "%~dp0"..\Xperf -stop SchedulingLog | |
391 | ||
392 | if "%ECHO_INFO%" == "yes" echo Xperf -stop CaptureState | |
393 | "%~dp0"..\Xperf -stop CaptureState | |
394 | if "%ECHO_INFO%" == "yes" echo Xperf -stop NoCaptureState | |
395 | "%~dp0"..\Xperf -stop NoCaptureState | |
396 | if "%ECHO_INFO%" == "yes" echo Xperf -stop | |
397 | "%~dp0"..\Xperf.exe -stop | |
398 | echo All loggers stopped, starting merge... | |
399 | "%~dp0"..\Xperf -merge Kernel.etl NoCaptureState.etl CaptureState.etl SchedulingLog.etl Merged.etl | |
400 | "%~dp0"..\Xperf -setprofint > NUL | |
401 | echo Output: %~dp0Merged.etl | |
402 | call :DeleteIntermediate Kernel.etl | |
403 | call :DeleteIntermediate NoCaptureState.etl | |
404 | call :DeleteIntermediate CaptureState.etl | |
405 | call :DeleteIntermediate SchedulingLog.etl | |
406 | goto EndIt | |
407 | ||
408 | :StopMin | |
409 | call :StopProviders | |
410 | @echo off | |
411 | set TLOG= | |
412 | goto EndIt | |
413 | ||
414 | :StopPresent | |
415 | call :StopProviders | |
416 | @echo off | |
417 | set TLOG= | |
418 | goto EndIt | |
419 | ||
420 | :StopLight | |
421 | call :StopProviders | |
422 | @echo off | |
423 | set TLOG= | |
424 | goto EndIt | |
425 | ||
426 | :StopNormal | |
427 | call :StopProviders | |
428 | @echo off | |
429 | set TLOG= | |
430 | goto EndIt | |
431 | ||
432 | :StopVerbose | |
433 | call :StopProviders | |
434 | @echo off | |
435 | set TLOG= | |
436 | goto EndIt | |
437 | ||
438 | ||
439 | REM | |
440 | REM Error message section. | |
441 | REM | |
442 | ||
443 | :CLUsage | |
444 | echo Error: Invalid command line argument. | |
445 | goto EndIt | |
446 | ||
447 | ||
448 | :GetPhysicalMemory | |
449 | systeminfo > me.txt | |
450 | findstr /sipn /C:"Total Physical Memory" me.txt > me2.txt | |
451 | REM TRACE_LOGGING_MEMORY will hold the amount of physical memory on this machine. | |
452 | for /f "tokens=6 delims=: " %%a in (me2.txt) do set TRACE_LOGGING_MEMORY=%%a | |
453 | del me.txt | |
454 | del me2.txt | |
455 | set TRACE_LOGGING_MEMORY=%TRACE_LOGGING_MEMORY:,=% | |
456 | goto :eof | |
457 | ||
458 | :EndIt | |
459 | ||
460 | REM Are we still logging? | |
461 | if not "%TLOG%"=="" goto CLEANUP | |
462 | goto Exit_File | |
463 | :CLEANUP | |
464 | ||
465 | set TRACE_MIRAGE= | |
466 | set TRACE_DHD= | |
467 | set TRACE_DXVA2= | |
468 | set TRACE_MMCSS= | |
469 | set TRACE_WMDRM= | |
470 | set TRACE_WME= | |
471 | set TRACE_WMP= | |
472 | set TRACE_DVD= | |
473 | set TRACE_DSHOW= | |
474 | set TRACE_MF= | |
475 | set TRACE_AE= | |
476 | set TRACE_HME= | |
477 | set TRACE_HDDVD= | |
478 | set TRACE_DWMAPIGUID= | |
479 | set TRACE_SCHEDULEGUID= | |
480 | set TRACE_DX= | |
481 | set TRACE_VR= | |
482 | set TRACE_WARP= | |
483 | set TRACE_DXGI= | |
484 | set TRACE_DXGIDEBUG= | |
485 | set TRACE_DXGIDEBUG_LIGHT= | |
486 | set TRACE_DXGIDEBUG_NORMAL= | |
487 | set TRACE_DXGIDEBUG_VERBOSE= | |
488 | set TRACE_DXCORE= | |
489 | set TRACE_D3D11ON12= | |
490 | set TRACE_D3D9ON12= | |
491 | set TRACE_D3D12= | |
492 | set TRACE_D3D11= | |
493 | set TRACE_D3D10LEVEL9= | |
494 | set TRACE_D3DSCACHE= | |
495 | set TRACE_DXC= | |
496 | set TRACE_DXC_ALL= | |
497 | set TRACE_DXC_LONGHAUL= | |
498 | set TRACE_DXC_MIN= | |
499 | set TRACE_DXC_LIGHT= | |
500 | set TRACE_DXC_NORMAL= | |
501 | set TRACE_DXC_STACKS= | |
502 | set TRACE_UMD= | |
503 | set TRACE_DWM= | |
504 | set TRACE_DWM2= | |
505 | set TRACE_DWM3= | |
506 | set TRACE_CODEC= | |
507 | set TRACE_KMFD= | |
508 | set TRACE_UMFD= | |
509 | set TRACE_TESTFRAMEWORK= | |
510 | set TRACE_TEST= | |
511 | set TRACE_SC= | |
512 | set TRACE_XAML= | |
513 | set TRACE_WIN32K= | |
514 | set TRACE_D2D= | |
515 | set TRACE_D2DSCENARIOS= | |
516 | set TRACE_MLSD= | |
517 | ||
518 | set TRACE_D3D9_PRESENT= | |
519 | set TRACE_DXGI_PRESENT= | |
520 | set TRACE_D3D11_PRESENT= | |
521 | set TRACE_DXC_ALL_PRESENT= | |
522 | set TRACE_DXC_PRESENT= | |
523 | ||
524 | set TRACE_LARGE_BUFFERS= | |
525 | set TRACE_STAND_BUFFERS= | |
526 | set TRACE_NT_LONGHAUL= | |
527 | set TRACE_NT_MIN= | |
528 | set TRACE_NT_LIGHT= | |
529 | set TRACE_NT_NORMAL= | |
530 | set TRACE_NT_VERBOSE= | |
531 | ||
532 | set TRACE_CS_PROVIDERS_MIN= | |
533 | set TRACE_CS_PROVIDERS_PRESENT= | |
534 | set TRACE_CS_PROVIDERS_LIGHT= | |
535 | set TRACE_CS_PROVIDERS_NORMAL= | |
536 | set TRACE_CS_PROVIDERS_VERBOSE= | |
537 | set TRACE_CS_STATE_MIN= | |
538 | set TRACE_CS_STATE_PRESENT= | |
539 | set TRACE_CS_STATE_LIGHT= | |
540 | set TRACE_CS_STATE_NORMAL= | |
541 | set TRACE_CS_STATE_VERBOSE= | |
542 | set TRACE_NOCS_PROVIDERS_MIN= | |
543 | set TRACE_NOCS_PROVIDERS_PRESENT= | |
544 | set TRACE_NOCS_PROVIDERS_LIGHT= | |
545 | set TRACE_NOCS_PROVIDERS_NORMAL= | |
546 | set TRACE_NOCS_PROVIDERS_VERBOSE= | |
547 | SET TRACE_NOCS_PROVIDERS_LIGHT_NODXGIDEBUG= | |
548 | SET TRACE_NOCS_PROVIDERS_NORMAL_NODXGIDEBUG= | |
549 | SET TRACE_NOCS_PROVIDERS_VERBOSE_NODXGIDEBUG= | |
550 | ||
551 | set ECHO_INFO= | |
552 | ||
553 | set TRACE_NT_PROVIDER= | |
554 | set TRACE_CS_PROVIDERS= | |
555 | set TRACE_CS_STATE= | |
556 | set TRACE_NOCS_PROVIDERS= | |
557 | goto :Exit_File | |
558 | ||
559 | :DeleteIntermediate | |
560 | if exist "%~dp0%~1" del "%~dp0%~1" | |
561 | goto :EOF | |
562 | ||
563 | :Exit_File | |
564 | @echo on | |
565 | ||
566 |