Defrag Tools (HD) - Channel 9

Defrag Tools (HD) - Channel 9
By Microsoft
About this podcast
Defrag Tools with Andrew Richards, Chad Beeder and Larry Larsen
Episodes (Total: 40 / Page: 1)
Sept. 25, 2017 · 00:19:30
In this episode of Defrag Tools, Chad Beeder is joined by James Pinkerton and Ivette Carreras to introduce a new feature of WinDbg Preview: Time Travel Debugging (TTD).Related Links:WinDbg Preview (download from Microsoft Store)Time Travel Debugging Overview (Online documentation)Debugging Tools for Windows BlogTimeline:[00:00] Introductions[00:54] Introducing Time Travel Debugging (TTD)[05:06] Tracing[07:33] Debugging Forwards[09:23] Debugging Backwards![13:31] Data is available[17:20] Great for Customer Support[19:11] Email us at [email protected]
Sept. 18, 2017 · 00:21:07
In this episode of Defrag Tools, we continue our series on the new WinDbg Preview. Andrew Richards is joined by Bill Messmer to talk about the updated scripting engine.Related Links:WinDbg Preview (download from Microsoft Store)Documentation for WinDbg Preview (Dev Center)Announcement blog postRelated Episodes:Defrag Tools #138 - Debugging - 'dx' Command Part 1Defrag Tools #139 - Debugging - 'dx' Command Part 2Defrag Tools #169 - Debugging Tools For Windows TeamDefrag Tools #170 - Debugger - JavaScript ScriptingDefrag Tools #182 - WinDbg Preview Part 1Defrag Tools #183 - WinDbg Preview Part 2 
Aug. 28, 2017 · 00:09:38
In this episode of Defrag Tools, Chad Beeder is joined by Nickolay Ratchev and Tim Misiak to show off some features of WinDbg Preview, a new version of the WinDbg tool.Also see our previous episode, if you missed it: Defrag Tools #182 - WinDbg Preview Part 1Related Links:WinDbg Preview (download from Microsoft Store)Documentation for WinDbg Preview (Dev Center)Announcement blog postTimeline:[00:00] Welcome and introductions[00:42] Recent targets - every debugging session is saved for easy access next time[01:44] New features of the locals window and watch window: Use LINQ expressions[03:22] Model window allows different views (i.e. grid)[04:05] Demo: Use a NatVis script to modify how data is shown in the Model window. JavaScript supported as well.[06:00] New interactions between windows, new features in Command window... better copy & paste[08:15] Right-click to search on MSDN[08:58] Use the Feedback Hub for bug reports and feature requests!
Aug. 28, 2017 · 00:11:14
In this episode of Defrag Tools, Chad Beeder is joined by Tim Misiak and Andy Luhrs to introduce WinDbg Preview, a new version of the WinDbg tool.Also see our followup episode: Defrag Tools #183 - WinDbg Preview Part 2Related Links:WinDbg Preview (download from Microsoft Store)Documentation for WinDbg Preview (Dev Center)Announcement blog postTimeline:[00:00] Welcome and introductions[00:32] All new shell, and it's available as a Store app[01:17] Yes, all your old debugging commands and extensions still work[02:06] New features enabled by the debugger data model (for more on this topic, see Defrag Tools Episode #138 and Episode #139)[03:24] Use the Feedback Hub to help us make it better[04:17] All new UI. (Ribbon, relaunch recent sessions, new windowing system, dark theme)[07:05] Watch window, locals window, etc., can all use the new debugger data model[08:13] New script window - makes it easy to write NatVis and JavaScript visualizations[08:50] WinDbg Preview is a work in progress! Expect frequent updates.
June 26, 2017 · 00:32:04
In this episode of Defrag Tools, Chad Beeder and Andrew Richards are joined by Paresh Maisuria from the Windows Kernel Power team and Zach Holmes from the Fundamentals team to talk about System Power Report, a new feature in Windows 10 Creators Update.Related links:Defrag Tools #168 - Powercfg Sleep Study (older version of this tool)Defrag Tools #157 - Energy Estimation Engine (E3) (the framework used for estimating power usage)Timeline:[00:00] Welcome and introductions[00:30] This is an updated and expanded version of a feature previously called Sleep Study. Now it covers everything related to power, not just details of modern standby states.[02:55] You can still run it with powercfg /sleepstudy (for backwards compatibility) - but the new command is powercfg /systempowerreport, or powercfg /spr[04:08] Opening up the generated report - lots more data than in the old Sleep Study report.[05:32] Looking an active session: How much battery power was used, and by what? What was the screen brightness? Which apps used the most power?[09:40] Why some power usage gets attributed to "Unknown"[15:00] Unlike the old Sleep Study report, the System Power Report even gives useful info on traditional standby (S3) systems.[16:40] Looking at a standby session: You can tell why a system went into standby, and why it woke up. Also lots of other stats, like how long it took to hibernate, etc.[20:27] The report also contains an "expert tab" which contains data about the battery design capacity, current capacity, and health[23:18] Bugchecks are also logged in the report (including the parameters).[24:35] Still has all the details on a modern standby system (like in the old Sleep Study report). But enhanced. Now we have better instrumentation to track why a system got woken from standby.[27:58] Of interest to OEMs and hardware engineers: We track power usage data for the SoC (System on a Chip) subsystems. Can give you the first indication of where to look further if power usage is too high.Email us at [email protected]
June 19, 2017 · 00:21:35
In this episode of Defrag Tools, Graham McIntyre joins Andrew Richards and Chad Beeder to talk about the new Active Memory Dump type. This new kernel dump size replaces the Complete Memory Dump type, and although much smaller, is equally as useful. 
June 12, 2017 · 00:32:25
In this episode of Defrag Tools, Andrew Richards and Chad Beeder walk through the process of manually creating a full memory dump via the keyboard. This is useful when you want to capture the state of the operating system. For example, to debug a hang.Resources:Forcing a System Crash from the Keyboard Registry files (.reg) demonstrated in this episode are on the Defrag Tools OneDrive share ( Express Dump Switch Card (if you need to use the NMI method)Timeline:[00:00] Welcome and Intro[00:57] When would you need to manually force a crash dump?[02:42] Typically you'll want to get a Complete Memory Dump[05:57] ...which also requires you to set a large enough page file on the C: drive (RAM size plus some additional)[08:00] Setting up manual crash dump via CrashOnCtrlScroll (if your keyboard has a ScrollLock key)[13:20] Discussion of keyboards and keyboard scan codes. The old Peter Norton "pink shirt" book still comes through for this![16:55] Once you know the scan code, you can use the Dump1Keys and Dump2Key registry settings to choose your own keyboard combo. Make sure not to use CrashOnCtrlScroll at the same time![25:04] The big guns: If a system is hung badly enough that keyboard crash doesn't work, you can try CrashOnNMI. Usually requires special hardware like a PCIe NMI card.[28:34] Looking at the memory dump we just created. Bugcheck 0xE2: MANUALLY_INITIATED_CRASH
June 5, 2017 · 00:29:35
In this episode of Defrag Tools, Andrew Richards and Chad Beeder talk about the new features of Sysinternals ProcDump v9.0Multiple Dumps per trigger in multiple Dump Sizes:-mm Write a 'Mini' dump file. (default) Includes the Process, Thread, Module, Handle and Address Space info-ma Write a 'Full' dump file. Includes All the Image, Mapped and Private memory-mp Write a 'MiniPlus' dump file. Includes all Private memory and all Read/Write Image or Mapped memory. To minimize size, the largest Private memory area over 512MB is excluded. A memory area is defined as the sum of same-sized memory allocations. The dump is as detailed as a Full dump but 10%-75% the size. Note: CLR processes are dumped as Full (-ma) due to debugging limitations-mc Write a 'Custom' dump file. Include memory defined by the specified MINIDUMP_TYPE mask (Hex). -md Write a 'Callback' dump file. Include memory defined by the MiniDumpWriteDump callback routine named MiniDumpCallbackRoutine of the specified DLL-mk Also write a 'Kernel' dump file. Includes the kernel stacks of the threads in the process. OS doesn't support a kernel dump (-mk) when using a clone (-r). When using multiple dump sizes, a kernel dump is taken for each dump sizeKernel Dump Support:Complete Thread Stack – Kernel & UserOpen the User and Kernel Dumps in separate debuggersMatch the TIDs from the User Dump, with the TIDs from the Kernel Dump, to get the entire stackAwesome tool for hang debugging!Debugging the Kernel DumpDump includes the kernel stack (memory) of every thread in the process (Running, Ready or Idle)Dump has the Process PID and each Thread TID. There is no PEB or TEB information.View the Kernel Call Stack for each Thread in the Process: !process -1 17 Debugging the User DumpView the User Call Stack for each Thread in the Process (e.g.): ~*k !pde.deep
May 22, 2017 · 00:14:45
In this episode of Defrag Tools, Andrew Richards and Chad Beeder are joined by Alex Ionescu and Pavel Yosifovich, authors of the Windows Internals 7th Edition Part 1 book.We talk to Alex in the Channel 9 Studio and to Pavel over Skype from Israel. We cover the history of the Windows Internals book series, Alex's involvement in writing the 6th Edition and their co-authorship of the 7th Edition.The Windows Internals 7th Edition Part 1 is based on Windows 10 Curators Update, and is a must-have for any Troubleshooter or Developer!The Part 1 book covers:Understand Windows system architecture and its most important entities, such as processes and threadsExamine how processes manage resources and threads scheduled for execution inside processesObserve how Windows manages virtual and physical memoryDig into the Windows I/O system and see how device drivers work and integrate with the rest of the systemGo inside the Windows security model to see how it manages access, auditing, and authorization, and learn about the new mechanisms in Windows 10 and Windows Server 2016
March 13, 2017 · 00:33:42
In this episode of Defrag Tools, Andrew Richards and Chad Beeder delve into the way the Shell uses the registry to provide the Right-Click behavior of a (File Explorer) Folder.We add sub-menus to the Directory context menu, allowing a Command Prompt or PowerShell prompt to be opened in the current folder, either elevated and non-elevated.The registry file created is provided on Andrew's MSDN blog (Where in the API is Andrew Richards?), and the Defrag Tools OneDrive.Resources:Enhancing the "Open Command Prompt here" Context Menu experience (Andrew's MSDN blog)Creating Shortcut Menu Handlers (MSDN) 
March 6, 2017 · 00:38:46
In this episode of Defrag Tools, Chad Beeder is joined by Jeffrey Tippet from the Windows Networking team to talk about how to debug networking problems in NDIS (Network Driver Interface Specification) using the !ndiskd debugger extension in WinDbg.Resources:The NDIS BlogTimeline:[00:00] Introductions[01:10] What is NDIS (Network Driver Interface Specification)[03:11] Common problems encountered by the Networking Team. (Bug Check 0x9F DRIVER_POWER_STATE_FAILURE, Bug Check 0x133 DPC_WATCHDOG_VIOLATION)[06:27] Introducing the !ndiskd debugger extension. Start with ![10:27] !ndiskd.netreport gives you a Network Debug Report including graphical overview of the network configuration[18:23] !ndiskd.netreport -verbose takes much longer to run, but gives a lot more detail including animations of how many packets are going over each adapter[22:58] To enable the logging of recent network traffic, and get the animations in the netreport, enable NBL Logging by setting a registry key (documented here).[25:20] Wi-Fi can act like an access point in some cases (i.e. Wi-Fi Direct). How this shows up in the Network .[27:30] The other tabs on the report: Useful if you need to send the report to someone else.[31:34] DRIVER_POWER_STATE_FAILURE debugging tips: Use !ndiskd.oid to see which network OIDs (networking requests) are pending. One of these may be the power request which is holding up the network stack.[34:40] DPC_WATCHDOG_VIOLATION debugging tips[37:15] Comments/questions? Email us at [email protected]
Feb. 13, 2017 · 00:24:23
In this episode of Defrag Tools, Andrew Richards and Chad Beeder are joined by Aaron Margosis. We talk about the Security Baseline for Windows 10. We also look at the Policy Analyzer and Local Group Policy Objects (LGPO) tools.Resources:Microsoft Security Guidance BlogPolicy Analyzer v3.1Local Group Policy Objects (LGPO)Aaron Margosis' Non-Admin, App-Compat and Sysinternals WebLogTroubleshooting with the Windows Sysinternals Tools, 2nd Edition
Jan. 30, 2017 · 00:16:35
In this episode of Defrag Tools, Andrew Richards and Chad Beeder are joined by Aaron Margosis, the co-author of the Sysinternals book -- now in its 2nd Edition!Troubleshooting with the Windows Sysinternals Tools, 2nd EditionResources:Defrag Tools: #81 - Aaron MargosisWindows Sysinternals Administrator's ReferenceTroubleshooting with the Windows Sysinternals Tools, 2nd EditionAaron Margosis' Non-Admin, App-Compat and Sysinternals WebLog 
Jan. 9, 2017 · 00:23:47
In this episode of Defrag Tools, Andrew Richards and Chad Beeder talk about Application Hangs. We collect a dump of a process and debug it with the Debugging Tools for Windows.Resources:Defrag Tools: #24 - WinDbg - Critical SectionsDefrag Tools: #25 - WinDbg - EventsDefrag Tools: #26 - WinDbg - Semaphores, Mutexes and TimersTimeline:[00:00] Happy New Year![01:20] Tools for Application Hang analysis[02:36] Analyze Wait Chain in Task Manager[04:36] Sysinternals ProcDump[07:00] Thread List: ~[07:34] Call Stack of each thread: ~*k[08:28] Unique Call Stacks (filtering): !uniqstack[11:26] Call Stacks (with N+ frames): !pde.deep [N][12:40] Call Stacks (with N+ frames) not on a wait: !pde.busy [N][15:20] Demo Apps and PDE are on the Defrag Tools OneDrive[17:45] View Critical Section Locking: !locks[21:48] ConclusionEmail us your questions and comments to [email protected]
Dec. 12, 2016 · 00:18:51
In this episode of Defrag Tools, Andrew Richards and Chad Beeder talk to Dan Taylor and Chuck Weininger about Application Insights Profiler. The profiler allows you to get detailed performace data from Azure App Services.How to - - [email protected]:[00:00] Introductions[01:10] Forza Horizon 3 Awesomeness in Australia[03:55] Application Insights Profiler Introduction[05:00] How the profiler collects data[06:48] Enabling Application Insights Profiler for an Azure App Service[08:48] View example traces using the Music Store app[10:53] Understanding the call stack shown in the detailed trace window[14:15] What are common performance bugs?[15:10] Does disk contention get shown?[16:12] How do I start using Application Insights Profiler[17:20] Conclusion
Oct. 3, 2016 · 00:36:47
In this episode of Defrag Tools, Andrew Richards talks to Andy Luhrs and Bill Messmer from the Debugging Tools for Windows team. We talk about the new JavaScript extensibility and scripting abilities in WinDbg available in the WDK and SDK build 14951 and newer.Blog - - [email protected] Bill leveraged the debugger object model previously in these episodes:Defrag Tools #138 - Debugging - 'dx' Command Part 1Defrag Tools #139 - Debugging - 'dx' Command Part 2Defrag Tools #169 - Debugging Tools for Windows TeamTimeline:[00:00] Welcome and introductions[00:24] New SDK drop[00:29] Why JavaScript[02:07] New commands[03:50] Visual Studio Code[04:00] Example - Hello World[07:15] Debugger default namespaces[09:07] Example - Print all threads[10:26] Example - Conditional breakpoint[18:13] 'g' vs. 'gc' – Andrew was right! 'gc' resumes execution in the same way that it started. So if you hit 'p' and then hit a conditional breakpoint that has 'gc' in it, the 'gc' will just finish your initial 'p'.[20:40] Example - Unique stacks[34:40] Example - AdditionQuestions/Comments? Email us at [email protected] MSDN Docs:JavaScript Debugger ScriptingJavaScript Debugger Example ScriptsNative Debugger Objects in JavaScript Extensions Unique Stacks Example (the right one): "use strict"; class __stackEntry { constructor(frameString) { this.threads = []; this.frameString = frameString; this.children = new Map(); } display(indent) { for (var child of this.children.values()) { host.diagnostics.debugLog(indent, child.frameString, " [Threads In Branch: "); for (var thread of child.threads) { host.diagnostics.debugLog(thread.Id, " "); } host.diagnostics.debugLog("]\n"); child.display(indent + " "); } } } class __stackMap { constructor(process) { this.__process = process; this.__root = new __stackEntry("");; } build() { for (var thread of this.__process.Threads) { var current = this.__root; var frameNum = 0; var frameCount = thread.Stack.Frames.Count(); for (var frameNum = frameCount - 1; frameNum >= 0; --frameNum) { var frame = thread.Stack.Frames[frameNum]; var frameString = frame.toString(); if (current.children.has(frameString)) { current = current.children.get(frameString); current.threads.push(thread); } else { var newEntry = new __stackEntry(frameString); current.children.set(frameString, newEntry); current = newEntry; current.threads.push(thread); } } } } findEntry(thread) { var current = this.__root; var frameCount = thread.Stack.Frames.Count(); for (var frameNum = frameCount - 1; frameNum >= 0; --frameNum) { var frame = thread.Stack.Frames[frameNum]; var frameString = frame.toString(); if (!current.children.has(frameString)) { return null; } current = current.children.get(frameString); } return current; } display() { this.__root.display(""); } } class __threadSameStacks { constructor(thread) { this.__thread = thread; } getDimensionality() { return 1; } getValueAt(idx) { for (var idxVal of this) { var tid = idxVal[Symbol.indicies][0]; if (idxVal[Symbol.indicies][0] == idx && tid != this.__thread.Id) { return idxVal.value; } return undefined; } } *[Symbol.iterator]() { var context = this.__thread.hostContext; var session = host.namespace.Debugger.Sessions.getValueAt(context); var process = session.Processes.getValueAt(context); var map = new __stackMap(process); var entry = map.findEntry(this.__thread); if (entry != null) { for (var sharingThread of entry.threads) { if (sharingThread.Id != this.__thread.Id) { yield new host.indexedValue(sharingThread, [sharingThread.Id]); } } } } } class __threadExtension { get IdenticalStacks() { return new __threadSameStacks(this); } } function invokeScript() { var map = new __stackMap(host.currentProcess); map.display(); } function initializeScript() { return [new host.namedModelParent(__threadExtension, "Debugger.Models.Thread")]; }
Sept. 26, 2016 · 00:16:41
In this episode of Defrag Tools, Andrew Richards talks to Andy Luhrs and Bill Messmer from the Debugging Tools for Windows team. We talk about what the team develops, what it is working on, the debugger object model, their blog and their feedback email address.Blog - - [email protected] leveraged the debugger object model previously in these episodes:Defrag Tools #138 - Debugging - 'dx' Command Part 1Defrag Tools #139 - Debugging - 'dx' Command Part 2Timeline:[00:00] Welcome and introductions[01:20] What application's are in the Debugging Tools for Windows?[01:57] Kernel Transports - COM, USB, 1394/Firewire, Network[02:34] Symbol Tools - Defrag Tools: #88 - Symbol Folder Hierarchy - index2.txt[03:15] Current focus is on usability[05:06] Debugger Object Model[06:20] NatVis support [05:06] Feedback - [email protected][05:06] Blog -[05:06] 1394 Kernel Debugging is now in the SDK, not inbox[09:19] Enabling Postmortem Debugging[12:28] Next week - JavaScript scripting supportQuestions/Comments? Email us at [email protected]
Sept. 19, 2016 · 00:35:47
In this episode of Defrag Tools, Andrew Richards and Chad Beeder talk to Nashaat Soliman and Paresh Maisuria (program manager and developer from the Windows kernel power team) about the "Sleep Study" feature in the Powercfg tool, and how you can use it to diagnose battery drain issues on Modern Standby systems.For related content on power management and analysis using Powercfg, refer to the following earlier episodes:Defrag Tools #157 - Energy Estimation Engine (E3)Defrag Tools #159 - PowercfgFor additional details on Sleep Study, see this blog post:Sleep Study: Diagnose what's draining your battery while the system sleepsTimeline:[00:00] Welcome and introductions[02:55] Powercfg Sleepstudy requires a system capable of Modern Standby. What is this compared to traditional standby?[07:03] You can specify a report duration (up to the last 28 days) and look at the resulting report file[08:57] %Low Power State Time columns indicate how much the system was in the lowest power state during each standby session[10:13] Click on a table row for details, including a chart of how often the system was woken up to do work[15:38] Top Offenders list of who woke up the system[17:15] Nashaat's system is an engineering sample which includes a special Energy Meter chip to enable more accurate power usage data (Jorge Novillo mentioned this in Episode #157 as well). Useful in debugging preproduction hardware.[18:46] Example 1: TV capture device keeps the system from entering standby[21:01] The list of devices we monitor, which are expected to be powered down during standby, is in a firmware table provided by the system manufacturer. We can see these in the report.[25:44] Example 2: Standby settings configured incorrectly on the system. The Sleep Study report shows idle standby was disabled.[29:29] Example 3: A particular desktop app which prevents us from entering standby for 5 minutes[32:09] Pros and cons of Sleep Study vs. manual analysis via Windows Performance ToolkitQuestions/Comments? Email us at [email protected]
Aug. 29, 2016 · 00:56:43
In this episode of Defrag Tools, Andrew Richards and Chad Beeder use Debugging Tools for Windows (WinDbg) to determine the root cause of various application crashes which have occurred on Andrew's computer. We use Sysinternals ProcDump to capture the dumps.While debugging, we take a side trip into configuring colors for Compressed and Encrypted files in Windows Explorer, and use Sysinternals Process Monitor to determine why the debugger was getting an Access Denied when loading the PDE Debugger Extension.We did a similar investigation in these two episodes:Defrag Tools #135 - Debugging User Mode Crash Dumps Part 1Defrag Tools #136 - Debugging User Mode Crash Dumps Part 2We cover how to install the Debugging Tools for Windows in this episode:Defrag Tools #131 - Windows 10 SDKGet the Sysinternals tools from We use:Sysinternals ProcDumpSysinternals Process MonitorGet the PDE debugger extension from the Defrag Tools OneDriveGet your Symbol Path to the Microsoft Public Symbol Server:Via Environment Variablesetx /m _NT_SYMBOL_PATH SRV*C:\My\Sym* the Debugger.sympath SRV*C:\My\Sym* collect dumps of crashes on your own machine, install ProcDump as the Postmortem (AeDebugger) debugger:    md c:\dumps    procdump.exe -ma -i c:\dumps On any dump (user or kernel), you can run automated analysis to view the issue:    !analyze -vDebugging Cheat Sheetc0000005 is an Access Violation - use .ecxr & kc000027b is a Stowed Exception (Store Apps) - use !pde.dsee0434352 is a CLR Exception - use !sos.pee0697282 is a C++ Exception - use .ecxr & k80000003 is a Breakpoint - use !analyze -vWhen typing a decimal number, prefix it "0n"When typing a hexadecimal number, prefix it "0x" (the default prefix)Common Debugger Commands.exr -1View the Exception Code and the Exception ParametersNumber looking like C0xxxxxx and 80xxxxxx are HRESULTs (Error Codes)Number looking like 7FFFxxxxxxxx are usually code (assembler) addresses!address <number>Display the address information - Commited/Reserved/Free, Image/Mapped/PrivateUsed to determine if a number is code or data.ln <address>List Nearest addressDisplays the symbol at or near the addressUsed to determine if a number is code or data..ecxrChange the debugging context to the point of the exception (rather than being at the Windows Error Reporting context)rView the registers at the current context. (.ecxr produces the same output)kView the call stacklmvm <module>View loaded module verbosely with a maskView a module's details, including folder, timestamp, description, copyright, product/file version|  (Vertical Bar or Pipe character)View the executable's path (e.g. c:\windows\notepad.exe)!ext.errorGet the description of an Error Code. Best at describing System Error Codes.!pde.errGet the description of an Error Code. Good at describing HRESULTs (80xxxxxx and C0xxxxxx)!pde.dpxScrape the current thread for evidence (symbols, structures, strings, etc.).formats <number>Displays the number in various formats.Easy way of working out if a number is actually ASCII text, or a date/time!sos.peDisplay a CLR Exception.If there is an Inner Exception, click on the link to view it..cordll -u & .cordll -lIf SOS isn't loaded, try to do an unload and load of the CLR support.!pebView the Process Environment Block (Modules, Command Line, Environment Variables, etc.)!tebView the current Thread's Environment Block (Stack Range, Last Error Code, Last Status Code, etc.)!gleGet Last ErrorDisplay the Last Error Code and Last Status Code of the current thread.clsClear the screen..reloadForce a reload (download) of symbols for the modules on the current stack..reload /fForce a full reload (download) of symbols for the modules on the current stack. Store ApplicationsTo view the currently installed Store Applications and their version use:Registry Editor (regedit.exe)HKEY_CURRENT_USER\SOFTWARE\Classes\ActivatableClasses\PackagePowerShellGet-AppxPackage 
Aug. 15, 2016 · 00:32:50
In this episode of Defrag Tools, Sylvain Goyette joins Chad Beeder to discuss performance tracing of Universal Windows Platform (UWP) apps.(Sorry that Sylvain's screen is somewhat hard to read; we had some technical issues with the screen capture session.)Resources:Assessment and Deployment Kit (ADK) including the Windows Performance ToolkitRelated Videos (from Build events):Data Binding: Boost Your Apps' Performance Through New Enhancements to XAML Data BindingXAML Performance: Techniques for Maximizing Universal Windows App Experiences Built with XAMLHow to Analyze Performance Issues in Your Windows and Windows Phone AppsQuality and Performance for XAML AppsApp Performance: The Mental Model for Interacting with the PlatformApp Performance: The Windows Performance ToolkitApp Performance: From UX to API for 5 Key ScenariosApp Performance: Planning Costs Less Than RearchitectingTimeline:[00:00] Welcome and introductions[02:15] Different providers to enable in Windows Performance Recorder, depending on whether the app is XAML or HTML[03:08] In Windows 10, you can also do tracing using "wpr" command line tool (ships in-box).[05:15] Example: Tracing the in-box Weather app (XAML app)[08:47] Load the pre-configured WPA profile to get a good set of default analysis views[11:20] Looking at the Dwm Frame Rate and GPU Utilization[14:54] On the Frame Analysis tab, we can look at individual frames which are rendered (or late) and look at the CPU Usage (Attributed) graph to see what the CPU was doing at that time[20:57] Using an ADK assessment ("Windows Store apps performance") to measure the launch time of UWP apps[24:56] Looking at the results of the Windows Store apps performance test[27:07] Open an individual trace (Sports app launch) and see what took up time during launch[31:50] Questions/comments? Email us at [email protected]