<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>Notes from a Platforms Premier Field Engineer</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/robertsmith/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/robertsmith/feed.xml</link>
    <description>Tips and technical articles on various issues and resolution I have encountered during my travels in the field</description>
    <lastBuildDate>Wed, 19 Jul 2017 14:33:59 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>An easy way to measure computer reboot and logon times</title>
      <link>https://docs.microsoft.com/archive/blogs/robertsmith/an-easy-way-to-measure-computer-reboot-and-logon-times</link>
      <pubDate>Wed, 19 Jul 2017 14:24:05 GMT</pubDate>
      <dc:creator><![CDATA[Robert Smith, PFE]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/robertsmith/?p=235</guid>
      <description><![CDATA[Hello It Professionals.  Robert M. Smith here with some information on measuring reboot and logon...]]></description>
      <content:encoded><![CDATA[Hello It Professionals.  Robert M. Smith here with some information on measuring reboot and logon times using a Sysinternals' tool; Process Monitor.  Process Monitor has evolved over the years from several different tools, into a single, "must have" tool for a wide variety of troubleshooting scenarios.  One of the great capabilities of Process Monitor is its ability to capture a computer trace from very early in the computer startup process.  The information collected from this startup trace can be used to determine how long the computer takes to get to various states, such as:
<ul>
 	<li> Logon screen</li>
 	<li>Credentials entered by user</li>
 	<li>Start Explorer.exe (shell)</li>
 	<li>Desktop "ready to use"</li>
</ul>
I know of at least one other toolkit that performs this; Windows Performance Toolkit (WPT).  WPT is also a "must have" set of tools for tracing a reboot scenario, and many other facets of Windows performance.  The only condition of WPT that lead me to use Process Monitor, is that Process Monitor has a powerful filtering capability that allows a reboot cycle trace to be as small as 8192 bytes (8 KB).  For pure time measurements of reboot and logon timing, the only events that needs to be collected are "process start" events.

Process start events can be used as markers to indicate key events in the Windows startup process.
<ul>
 	<li>Logonui.exe (logon dialog is presented to use)</li>
 	<li>Userinit.exe (started after a user has entered credentials, is successfully authenticated, and subsequent processes are started for that user to set up their desktop)</li>
 	<li>Explorer.exe (start shell)</li>
 	<li>Process Monitor (the user runs Process Monitor to stop and save the trace, which also indicates the desktop is at or near a "ready to use" state)</li>
</ul>
Regarding the phrase "desktop ready to use", this is an arbitrary time in the logon process, where Windows has started the majority of services and processes, and has achieved a state where the user can begin opening and interacting with applications.  At "desktop ready to use", the user should be able to open their e-mail client or their business tools and be able to use them without having unnecessary pauses or busy cursors.  This is again an arbitrary state, to be determined by each customer in their environment.  You might have for example a tool that starts up to assist with setting up a default printer.  This could be a marker that the desktop is at or near "ready to use" for the IT consumer.  In this case the user logon time is approximately the time difference between when the 'Userinit.exe' process starts, and the name of your printer assistance tool starts.

There is some consideration that might be given to the fact that a full reboot of the computer can be far more resource intensive than a simple logoff and logon.  In many environments, a full computer restart may trigger security software to perform a new scan of files, memory, and processes, or Windows processes such as AppLocker might perform additional scanning only on a full computer restart, that it may not perform on a simple logoff and log back on.  A full computer resource can skew a logon time after a full restart.  To help offset that to some degree, the test may add a condition where the user does not logon when the logon dialog appears, but instead waits a minute or more to logon.  The same markers listed above can be used to measure user logon time.  By waiting a minute or two, Windows will have completed most if not all, of the starting of services and other automatic system processes that occur on a full computer restart.

Anyway, on to the procedures to capture startup and logon traces using Process Monitor.
<h1><a></a>Windows Reboot and Logon Analysis Tool</h1>
<h2><a href="https://technet.microsoft.com/en-us/sysinternals/processmonitor">Sysinternals’ Process Monitor</a><a></a></h2>
<em>Process Monitor</em> is an advanced monitoring tool for Windows that display and optionally records, real-time file system, Registry and process/thread activity. Process Monitor can run in real-time mode or can be configured to record a boot logging trace.

Process Monitor can be downloaded and copied to a computer being analyzed. There is no formal installation process for Sysinternals tools. If you run the Process Monitor tool interactively, the first time you will be presented the end-user license agreement (EULA). If you accept that, you will not be prompted again to accept the EULA, for that specific user profile. If your profile is deleted or reset, you may have to accept the EULA the next time you run Process Monitor.

If you pin the Process Monitor executable to your taskbar, then during trace capture you will not have to start Explorer or a command prompt to start Process Monitor, you can just click Process Monitor directly from your taskbar.

You can find the Sysinternals’ Process Monitor tool using your favorite Internet search engine, and search for Process Monitor.
<h1><a></a>Recording a “Reboot Cycle” trace, using the Sysinternals’ Process Monitor</h1>
<ol>
 	<li>Start Process Monitor (this may require <a href="https://msdn.microsoft.com/en-us/library/windows/desktop/dn742497(v=vs.85).aspx">elevation</a>)</li>
 	<li>The ‘Process Monitor Filter’ interface will be displayed. Click the ‘Reset’ button to reset filters to default values, and then click the ‘Ok’ button.</li>
 	<li>Click the ‘Capture’ button to stop the current real-time trace, as depicted below:</li>
</ol>
<a href="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-01.png"><img width="452" height="271" class="alignnone wp-image-245" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-01-300x180.png" /></a>
<ol>
 	<li>Before the boot logging is started, some filtering can be enabled that will reduce the captured trace to a very small size, and filter out events that are not needed to analyze reboot and logon.
<ol>
 	<li>On the ProcMon icon bar, click to de-select the following categories of events:
<ol>
 	<li>Network (name is “Show Network Events”)</li>
 	<li>Disk and File (name is “Show File System Activity”)</li>
 	<li>Registry (Show Registry Activity)</li>
</ol>
</li>
 	<li>Now, click ‘Filter’ from the ProcMon menu, and then click the menu item named ‘Drop Filtered Events’.</li>
</ol>
</li>
 	<li>In the Process Monitor menu, click ‘<strong>Options</strong>’, and then click ‘<strong>Enable Boot Logging</strong>’, which enables the Process Monitor boot logging, until the tracing is stopped.</li>
 	<li>An option dialog will appear titled ‘<strong>Enable Boot Logging</strong>’, which offers an option to “generate thread profiling events”. Don’t click any option, just click the ‘Ok’ button to enable boot logging on the subsequent reboot.</li>
 	<li>After clicking the "Ok" button, close Process Monitor and restart the computer.</li>
</ol>
<strong>NOTE:</strong> It is important to log on after the reboot, start Process Monitor, and then stop and save the trace, so that it does not use an excessive amount of disk space.

<a href="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-02.png"><img width="486" height="293" class="alignnone wp-image-255" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-02-300x181.png" /></a>

<a href="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-03.png"><img width="483" height="174" class="alignnone wp-image-265" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-03-300x108.png" /></a>

<strong> </strong>
<h1>Analyzing a “Reboot Cycle” trace, using the Sysinternals’ Process Monitor</h1>
<ol>
 	<li>After rebooting the device, logon to the device, and then start Sysinternals’ Process Monitor.</li>
 	<li>You may be prompted to reset the filter, which you can do, and then click OK.</li>
 	<li>You will then be prompted to save the current trace. You can click ‘Ok’ and then choose the folder to save the trace to.</li>
 	<li>Once the trace is saved, the boot trace will be available and displayed in Process Monitor.</li>
 	<li>Click ‘Tools’ and then click ‘Process Tree’.</li>
 	<li>Click the very first item in the far-left column, which should be the pseudo-process ‘Idle’, and note the clock time.<a href="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-04.png"><img width="450" height="27" class="alignnone wp-image-275" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-04-300x18.png" /></a></li>
 	<li>Next, in the ‘Process Tree’ display, scroll down while looking in the far-left column for the item ‘Logonui.exe’. When found, click ‘Logonui.exe’, and again note the clock time.<a href="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-05.png"><img width="455" height="91" class="alignnone wp-image-266" alt="" src="https://msdnshared.blob.core.windows.net/media/2017/07/ProcMonRLDTR-05-300x60.png" /></a></li>
</ol>
<strong>NOTE:</strong> the difference between ‘Idle’ clock time and ‘Logonui.exe’ is the time interval from computer startup to the logon credentials dialog box. In this case the difference is 11 seconds.
<ul>
 	<li>At this point in computer startup, the user entered credentials and pressed ENTER. The next marker in the trace to look for is the process ‘Userinit.exe’. ‘Userinit.exe is the process that is launched if the user’s credentials are verified, and initiates the subsequent chain of events leading to the user’s shell starting, desktop starting, and the important marker “desktop ready to use”.</li>
</ul>
<strong>NOTE:</strong> Desktop ready to use is going to be determined by each individual configuration. You are looking for a process starting, at approximately the same time that the computer is responsive enough to allow some other process to start and be used without excessive delay. For example, desktop ready to use could mean that the user is able to start Microsoft Office Word and begin working in Word without delays or excessive sluggishness from the operating system.  The marker you are looking for may be the process name of your anti-virus software being started, or some shell item being started. A Windows 10 inbox example might be ‘Windows Defender tray item’. The point being that the time that ‘MSASCuiL.exe’ (Windows Defender tray item) starts, may be approximately the same time that services and other items have started, and that the OS is responsive enough to user input to be declared “ready to use”. Therefore, this arbitrary marker is termed by me, “desktop ready to use”.
<ul>
 	<li>The ‘Userinit.exe’ process should be relative close but under’ the previously noted process ‘Logonui.exe. Note the clock time for starting of the ‘Userinit.exe’ process.</li>
 	<li>A good indicator of “desktop ready to use”, in this case, is the starting of the process ‘Procmon.exe’. Recall that after logging on, we started ‘Procmon.exe’ in order to stop and save the boot trace. Note the clock time of starting ‘Procmon.exe’.</li>
 	<li>The difference in clock time between starting of ‘Userinit.exe’ and ‘Procmon.exe’ is roughly that particular user's overall logon time.</li>
</ul>
<strong>NOTE:</strong> A reboot/logon trace with default ProcMon filtering may be 3 GB or more. A reboot/logon trace recorded with the filtering options documented in this guide may be as small as 8192 bytes. An additional effect of this filtering is that much less memory and processor resources are needed, and thus the effect of trace capture has far less impact on the overall reboot/logon trace statistics, including clock time.

I hope this information is helpful.

Sincerely,

Robert M. Smith, Sr. PFE
Microsoft Premier Services]]></content:encoded>
    </item>
    <item>
      <title>Windows 10, 1607, VDI Performance Tuning Guide available</title>
      <link>https://docs.microsoft.com/archive/blogs/robertsmith/windows-10-1607-vdi-performance-tuning</link>
      <pubDate>Wed, 19 Jul 2017 13:23:22 GMT</pubDate>
      <dc:creator><![CDATA[Robert Smith, PFE]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/robertsmith/?p=216</guid>
      <description><![CDATA[Hello IT Community.  Robert M. Smith, Sr. PFE with Microsoft Premier Services here.  I would like to...]]></description>
      <content:encoded><![CDATA[Hello IT Community.  Robert M. Smith, Sr. PFE with Microsoft Premier Services here.  I would like to call out a guide I created and helped get published, on Windows 10 Virtual Desktop Infrastructure (VDI).  This guide is for Windows 10, build 1607.  This guide goes through built-in apps, scheduled tasks, settings, and other optimizations available for VDI environments.  You can find this guide here:

<a href="https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-vdi-recommendations">https://docs.microsoft.com/en-us/windows-server/remote/remote-desktop-services/rds-vdi-recommendations</a>

The settings in this guide are called out, but not necessarily "recommended" by Microsoft, one way or the other.  But rather, these settings are called out for customers to evaluate for their environments, to see if the settings may provide performance improvements.  The core idea behind this guide, is that most of the settings by themselves are miniscule.  However, multiply the settings times a hundred settings, and then multiply that times the number of VDI desktops, and there is a potential to reduce compute resource demands on the VDI infrastructure, and hopefully provide better performance to each VDI desktop.

And finally, the recommendations can be applied to regular Windows 10 in most cases.  I hope you find this guide useful.

Sincerely,

Robert M. Smith, Sr. PFE
Microsoft Premier Services]]></content:encoded>
    </item>
    <item>
      <title>Updated Windows Updating/Servicing Guidance (from Ignite 2015)</title>
      <link>https://docs.microsoft.com/archive/blogs/robertsmith/updated-windows-updatingservicing-guidance-from-ignite-2015</link>
      <pubDate>Wed, 13 May 2015 19:36:00 GMT</pubDate>
      <dc:creator><![CDATA[Robert Smith, PFE]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/robertsmith/2015/05/13/updated-windows-updatingservicing-guidance-from-ignite-2015/</guid>
      <description><![CDATA[Windows servicing; the process of managing updates to Windows, has finally been documented, per the...]]></description>
      <content:encoded><![CDATA[<p>Windows servicing; the process of managing updates to Windows, has finally been documented, per the following presentation from Ignite 2015:</p>
<p><span style="font-size:medium;"><a href="https://channel9.msdn.com/events/Ignite/2015/BRK2321">Getting Ready for Windows 10: Servicing Windows Client and Server in a Managed Environment&nbsp;Today</a></span></p>
<p>If you care about the topic of Windows updating/servicing, this is the presentation for you.&nbsp; This presentation is all about current Windows (client &amp; server), but NOT Windows 10.&nbsp; There are some topics discussed for Windows 7 and Windows Server 2008 R2.&nbsp; Windows 10 strategies were covered at Ignite&nbsp;in other&nbsp;presentations.</p>
<p><strong>NOTE:</strong> I want to point out that I am NOT a member of the Windows PG, I am a Platforms PFE in Microsoft Premier Services.&nbsp; All of the information in this blog post, is what was discussed in the Ignite presentation.&nbsp; The OFFICIAL bottom line on all these topics will come from the authoritative blog:&nbsp;<strong><a href="/controlpanel/blogs/posteditor.aspx/&lt;strong&gt;&lt;a%20href=&quot;http:/blogs.windows.com/itpro/&quot;&gt;Windows&lt;/a&gt;%20for%20IT%20Pros&lt;/strong&gt;">Windows for IT Pros</a></strong>.</p>
<p><b>IMPORTANT</b>:&nbsp; None of this information changes any guidance on security updates.&nbsp; Security updates should be applied as soon as possible, within existing change management processes for the enterprise. Microsoft guidance on security updates and other related topics is available at this location:</p>
<p><a href="https://www.microsoft.com/security/default.aspx"><span style="color:#0000ff;">Microsoft Safety and Security Center</span></a></p>
<p><span style="font-family:Times New Roman;font-size:medium;"> </span></p>
<h3>Windows Updates: Categorization Processes</h3>
<ul>
<li>Since Windows 8,&nbsp;Microsoft has released updates that are NOT categorized as &quot;<strong>Critical</strong>&quot; or &quot;<strong>Important</strong>&quot;, those updates are released&nbsp;with status &quot;<strong>Optional</strong>&quot;.&nbsp; This included most, if not all of the previous monthly Windows 8x/Server 2012x rollups.</li>
<li><strong>Optional</strong> updates are discovered and installed by a relatively small percentage of users around the world that are Windows Update clients.</li>
<li>Keeping the updates as <strong>Optional</strong> (at first) provides time to discover and correct problems before those updates are promoted to status <strong>Recommended</strong> or <strong>Important</strong>.</li>
<li>Microsoft would like to have more customers not only try Optional updates as soon as possible, they would like customers to opt-in to the <a href="https://www.microsoft.com/products/ceip/en-us/default.mspx">Customer Experience Improvement Program</a> (CEIP) so their computing devices can send telemetry back to Microsoft, including how those update installations went.</li>
<li>Having IT Pros and enterprise customers sending telemetry on Windows updates, further aids in evaluating overall product quality with patches.&nbsp; The enterprise segments are very important with Windows updates because the enterprise environments have different environments than consumer devices, and thus can help uncover issues that may not be discovered otherwise until deployment.</li>
</ul>
<h3>Hotfix Deployment Guidance: Then and Now</h3>
<ul>
<li>The text in today&rsquo;s hotfix KB articles says <em><strong>don&#39;t apply this hotfix unless you experience this particular problem</strong></em>. Microsoft is changing the guidance on hotfixes and Optional updates to say &ldquo;<strong><em>don&rsquo;t wait to experience blue-screens, hangs, or data corruptions issues if there is a fix available that could correct these today</em></strong>&rdquo;.&nbsp; Proactively evaluate available fixes, whether Optional or hotfixes, as those fixes are in fact tested more stringently than in the past. Problems such as bugchecks, hangs, or data corruption, are not problems you should wait to experience.</li>
<li>Problems such as bugchecks, hangs, or data corruption, are not problems you should wait to experience.</li>
<li>Microsoft is changing guidance to say, &quot;<strong>Deploy Hotfixes Proactively</strong>&quot;, <em><strong>especially bugchecks, hangs, and data corruption</strong></em>, maintaining strict testing standards, etc.</li>
<li>Microsoft&nbsp;will be&nbsp;updating hotfix&nbsp;KB articles to reflect Microsoft&#39;s updated Windows updating/servicing guidance.</li>
</ul>
<h3>Optional Update Guidance &amp; Other</h3>
<ul>
<li>Microsoft would like to get telemetry from <strong>Optional</strong> updates from IT Pros which will help update quality and be a determinate for promotion to <strong>Recommended</strong> or <strong>Important</strong>.</li>
<li>Once an update appears in WU as &quot;<strong>Recommended</strong>&quot;, that particular fix has been installed/deployed to millions of Windows devices already, so has been vetted to some degree.</li>
<li>Going forward, Windows updates listed as <strong>Recommended</strong>, <strong>Optional</strong>, or <strong>Important</strong> will be published as &quot;<strong>one fix, one package</strong>&quot;.</li>
<li>Microsoft wants all customers to proactively install updates to help overall product quality.</li>
<li>The bottom line: <em><strong>Microsoft&nbsp;would like&nbsp;customers to proactively install available updates, not just security updates</strong></em>.&nbsp; For the enterprise, this would mean introducing <strong>Optional</strong> updates into the change control process as soon as they are released, for eventual rollout to the production computer systems.</li>
</ul>
<h3>What about those Rollups?</h3>
<ul>
<li>Rollups are&nbsp;a single package with multiple fixes</li>
<li>Up until December 2014, Windows 8x/2012x had &quot;monthly rollups&quot;.&nbsp; At least for now, <em><strong>no more monthly rollups</strong></em>.</li>
<li>There may be from time-to-time., cumulative &quot;convenience rollups&quot; (not a technical term).&nbsp; These provide a way to get current with all fixes by applying one package.</li>
<li>Moving forward, HOTFIXES will be published to the <a href="https://catalog.update.microsoft.com/v7/site/Home.aspx">Windows Update Catalog</a> (no timeline specified).&nbsp; Therefore these can be relatively easily ingested into <a href="https://technet.microsoft.com/en-us/library/hh852345.aspx">Windows Server Update Services</a>, for enterprise deployment.</li>
<li><em><strong>There WILL BE A ROLLUP FOR WINDOWS 7 &amp; WINDOWS SERVER 2008 R2</strong></em> (no timeline&nbsp;specified).</li>
</ul>
<p>That last part if fantastic for those still running Windows 7 and/or Windows Server 2008 R2.</p>
<p>Thanks for reading!</p>
<p>Robert M. Smith, Senior PFE<br />Microsoft Premier Services</p>
<p style="padding:0;margin:0;"></p>]]></content:encoded>
    </item>
    <item>
      <title>Debugging with symbols: A field perspective</title>
      <link>https://docs.microsoft.com/archive/blogs/robertsmith/debugging-with-symbols-a-field-perspective</link>
      <pubDate>Wed, 03 Dec 2014 19:00:29 GMT</pubDate>
      <dc:creator><![CDATA[Robert Smith, PFE]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/robertsmith/2014/12/03/debugging-with-symbols-a-field-perspective/</guid>
      <description><![CDATA[Published: December 3, 2014 Updated: December 3, 2014
Part 1: Getting Started with Debugging...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:tahoma,arial,helvetica,sans-serif;font-size:x-small;"><span>Published: December 3, 2014<br /> Updated: December 3, 2014</span></span><span style="font-family:verdana,geneva;font-size:medium;"><br /></span></p>
<h1><span style="font-family:tahoma,arial,helvetica,sans-serif;font-size:x-small;"><span><span style="font-family:verdana,geneva;font-size:large;">Part 1: Getting Started with Debugging Symbols</span><br /></span></span></h1>
<p><span style="font-family:verdana,geneva;font-size:small;">Hey Folks.&nbsp; Platform PFEs <a href="https://social.technet.microsoft.com/Profile/Robert%20Smith%2c%20PFE/activity"><span>Robert Smith</span></a> and <a href="https://social.technet.microsoft.com/Profile/dan%20cuomo%20%5Bmsft%5D/activity"><span>Dan Cuomo</span></a> here to give you an overview on debugging with &ldquo;symbols.&rdquo;&nbsp; Now if you&rsquo;re thinking to yourself, &ldquo;I have no use for an ancient Egyptian writing form&rdquo; or even &ldquo;I&rsquo;m pretty sure that cornfield thing was a hoax&rdquo; then this article is for you.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">In this series of posts, we&rsquo;ll give you an overview of what debugging symbols are, why you need them, and how to get them.&nbsp; We&rsquo;ll cover how to use symbols with the Debugging Tools for Windows, as well as other tools such as Windows Performance Analyzer (WPA) and the SysInternals suite.&nbsp; If you operate within the challenging confines of an isolated/disconnected (AKA air-gap) network, we&rsquo;ll show you how to setup your own symbol resources in that environment.&nbsp; In addition, we&rsquo;ll give you some tips to managing your symbols and also provide some troubleshooting advice for common issues you might run into.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">In this first post, we&rsquo;ll cover what symbols are and why they&rsquo;re pertinent to you and provide an example to get you started. &nbsp;We would like to mention first that there is an existing article on this topic that is also a great reference:</span></p>
<p><span style="font-family:verdana,geneva;font-size:medium;"><a href="https://blogs.msdn.com/b/pfedev/archive/2009/02/27/dump-analysis-in-a-disconnected-environment.aspx"><span>Dump Analysis in a Disconnected Environment</span></a></span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">We will add some information and a few tips and tricks along the way.</span></p>
<h1><span style="font-family:Segoe UI;">What are symbols and why do I need them?</span></h1>
<p><span style="font-family:verdana,geneva;font-size:small;">The typical field scenario for symbols occurs during the analysis of crash-dumps copied from other workstations.&nbsp; While loading crash-dumps, the debugger will parse the &ldquo;loaded module list&rdquo; of the process or dump file.&nbsp; Without symbols, the debugger might have incomplete or inaccurate information.&nbsp; Here is an example from the WinDbg debugging tool showing a call stack before symbols are loaded.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;"><b>Before symbols have loaded:</b></span></p>
<table style="border:1px solid #c0c0c0;width:683px;height:149px;" border="1">
<tbody>
<tr>
<td><span style="font-family:Times New Roman;font-size:medium;"> </span>
<p><span style="font-family:courier new,courier;font-size:small;">0:000&gt; kf<br />&nbsp; Memory&nbsp; Child-SP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RetAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call Site<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00000000`0027fc18 00000000`77999e9e user32!SfmDxSetSwapChainStats+0x1a<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 00000000`0027fc20 00000000`ffab1064 user32!GetMessageW+0x2a<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30 00000000`0027fc50 00000000`ffab133c notepad+0x1064<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80 00000000`0027fcd0 00000000`77875a4d notepad+0x133c<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c0 00000000`0027fd90 00000000`77aaba01 kernel32!BaseThreadInitThunk+0xd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30 00000000`0027fdc0 00000000`00000000 ntdll!RtlUserThreadStart+0x21</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family:verdana,geneva;font-size:small;">In the absence of a correct symbol for a given module, the debugger will still try to locate and display the parent function for a given call-stack, such as the one above.&nbsp; If you are debugging on the same machine the dump originated from, the debugger will attempt to utilize the same named module (file) from your local file system to assist in call-stack display.&nbsp; The problem comes when you debug from a different platform, as is the case here.&nbsp; The dump above was taken from a Windows 7 system, and is being analyzed on a Windows 8 system.&nbsp; There are modules with the same name, but different versions.&nbsp; Therefore, you cannot trust the output you see, even if it looks valid.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;"><span> </span>We can fix our symbols path(s) by typing &ldquo;.sympath &lt;path&gt;&rdquo; in the debugger.&nbsp; You can follow that by .reload and the debugger will try again to retrieve and load the correct debugging symbols:</span></p>
<table style="border:1px solid #c0c0c0;width:715px;height:125px;" border="1">
<tbody>
<tr>
<td><span style="font-family:Times New Roman;font-size:medium;"></span>
<p><span style="font-family:courier new,courier;font-size:small;">0:000&gt; kf<br />&nbsp; Memory&nbsp; Child-SP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RetAddr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Call Site<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00000000`0017f7e8 00000000`776f9e9e user32!<span style="background-color:#ffff99;">ZwUserGetMessage+0xa</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8 00000000`0017f7f0 00000000`ffc21064 user32!<span style="background-color:#ffff99;">GetMessageW+0x34</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30 00000000`0017f820 00000000`ffc2133c notepad!<span style="background-color:#ffff99;">WinMain+0x182</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80 00000000`0017f8a0 00000000`777f5a4d notepad!<span style="background-color:#ffff99;">DisplayNonGenuineDlgWorker+0x2da</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; c0 00000000`0017f960 00000000`7792ba01 kernel32!BaseThreadInitThunk+0xd<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30 00000000`0017f990 00000000`00000000 ntdll!RtlUserThreadStart+0x1d</span></p>
</td>
</tr>
</tbody>
</table>
<p><span style="font-family:verdana,geneva;font-size:small;">Notice the function calls highlighted.&nbsp; The top-most in particular, is now the correct function.</span></p>
<p><span style="font-size:small;">Debugging symbols provide &ldquo;symbolic&rdquo; information about software, such as:</span></p>
<ul>
<li><span style="font-size:small;">Function names and the addresses of their entry points</span></li>
<li><span style="font-size:small;">Variable definitions (global and local)</span></li>
<li><span style="font-size:small;">Frame pointer omission (FPO) records</span></li>
<li><span style="font-size:small;">Source code filename and line-number</span></li>
</ul>
<p><span style="font-family:tahoma,arial,helvetica,sans-serif;font-size:small;">Though there are different types of symbols, .PDB is a very common type and the type currently available for debugging Windows.</span></p>
<p><span style="font-family:tahoma,arial,helvetica,sans-serif;font-size:small;">During compilation of &ldquo;retail&rdquo; code, the symbolic information about code can be separated from the modules, and a &ldquo;<b>p</b>rogram <b>d</b>ata<b>b</b>ase&rdquo; (PDB) is created as a result.&nbsp; The PDB files are matched to the original binary via a GUID, placed in .DLLs, .EXEs, and the .PDB files.&nbsp; Matching the proper symbol to the associated binary is vital for accurate output from the various tools that utilize debugging symbols for analysis.&nbsp; Here is an example from the WinDbg debugging tool showing a call stack after symbols have loaded.</span></p>
<h2><b>General Symbol Location</b></h2>
<p><span style="font-family:verdana,geneva;font-size:small;">This is a high level overview of how the debugging engine (Dbghelp.dll), locates and make symbols available to the debugging tools:</span></p>
<ol>
<li><span style="font-family:verdana,geneva;font-size:small;">Set up &ldquo;symbol path&rdquo; based on whether or not a path is currently defined.&nbsp; If no path is defined, symbols are searched for in a pre-defined list of well-known symbol locations.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small;">Determine GUID of given module</span></li>
<li><span style="font-family:verdana,geneva;font-size:small;">As a given call-stack is parsed, search for symbols&nbsp;matching modules referenced in stack.</span></li>
<li><span style="font-family:verdana,geneva;font-size:small;">Search local paths first.&nbsp; If no local matching symbol located:</span><ol>
<li><span style="font-family:verdana,geneva;font-size:small;">Connect to symbol server, if available, send request to server</span></li>
<li><span style="font-family:verdana,geneva;font-size:small;">If a match is found, download and load the symbol</span></li>
<li><span style="font-family:verdana,geneva;font-size:small;">If a local cache is defined, add that symbol to the local cache, so subsequent symbols requests can be satisfied locally instead of over a network</span></li>
<li><span style="font-family:tahoma,arial,helvetica,sans-serif;font-size:small;">If no matching symbol can be found, display an error and help text</span></li>
</ol></li>
</ol>
<h2><b>Using the Microsoft Public Symbol Server</b></h2>
<p><span style="font-family:verdana,geneva;font-size:small;">Microsoft provides public access to a symbol server that contains symbols for Windows operating systems and some other components such as the .Net Framework. This catalog of symbols is not guaranteed to be complete, but it is extensive and is almost always up to date.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">If you have access to the Internet during debugging, you can configure the debugger (as you&rsquo;ll see in the next section) to download symbols as needed during a debugging session, rather than downloading symbol files separately before a debugging session. The symbols are downloaded to a directory location that you can specify and loaded by the debugger locally.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">The URL for the Microsoft symbol store is <a href="https://msdl.microsoft.com/download/symbols"><b><span>https://msdl.microsoft.com/download/symbols</span></b></a>.</span></p>
<h3><b>Getting Started: Debugging a Local Process</b></h3>
<p><span style="font-family:Times New Roman;font-size:medium;"></span><span style="font-family:verdana,geneva;font-size:small;">WinDbg.exe is the name of the executable that starts the GUI based debugger from the Debugging Tools for Windows package.</span></p>
<table style="border-width:0px;" border="0">
<tbody>
<tr>
<td><span style="font-family:verdana,geneva;font-size:small;"><b><i>NOTES</i></b></span></td>
<td>
<ul>
<li><em><span style="font-family:Verdana;font-size:small;">We have a separate step-by-step guide that covers the installation of the Debugging Tools for Windows package, which you can find here:</span></em></li>
<li><span style="font-family:verdana,geneva;font-size:small;"><i><em><span style="font-family:Verdana;font-size:small;">If you are just debugging crash-dumps, and accessing symbols from a path you have full-control to, you won&#39;t need to run the debuggers elevated.&nbsp; But for debugging running processes, or for accessing dump files in protected locations such as C:\Windows or C:\Windows\minidump, you&#39;ll need to run the tools elevated.</span></em></i></span></li>
<li><em><span style="font-size:small;"><span style="font-family:Verdana;">the debugging tools require exact syntax when entering debugging command.&nbsp; The periods, asterisks, and the like are intentional.&nbsp; The example commands here are in <b>bold.</b></span></span></em><span style="font-family:verdana,geneva;font-size:small;"><br /></span></li>
</ul>
</td>
</tr>
</tbody>
</table>
<table border="0">
<tbody>
<tr>
<td style="width:400px;"><span><span style="font-family:verdana,geneva;font-size:small;">After you&rsquo;ve installed the Debugging Tools for Windows, browse to the start location of your Debugging Tools, which you can find in the Start Menu.</span>&nbsp; </span></td>
<td><span><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/Apps.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/Apps.png"><img width="262" height="262" style="width:194px;height:195px;" alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/Apps.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/Apps.png" border="0" /></a></span></td>
</tr>
</tbody>
</table>
<p><span style="font-family:verdana,geneva;font-size:small;">To get started, let&rsquo;s debug a process on the local computer and add symbols to enhance analysis.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">Open&nbsp;<strong>WinDbg.exe</strong> -&gt;&nbsp;on the menu bar click&nbsp;&quot;<strong>File</strong>&quot; -&gt;&nbsp;then click &quot;<strong>Open&nbsp;Executable</strong>&quot; &gt; browse to:</span></p>
<p style="margin-left:30px;"><span style="font-family:verdana,geneva;font-size:small;">%windir%\System32\net.exe</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">At the prompt, type <b>.sympath srv*</b> to tell the debugger to use the default symbol server path and retrieve symbols from the default symbol store; a structured folder path of symbols.</span></p>
<p></p>
<p><span style="font-family:Calibri;font-size:small;">As you can see in the highlighted section above, the default path includes the Microsoft Public Symbol Server covered in the previous section</span></p>
<p><span style="font-family:Calibri;font-size:small;">Now type <b>.reload</b></span></p>
<p></p>
<p><span style="font-family:Calibri;font-size:small;">Lastly type <b>x net!</b></span></p>
<p></p>
<p><span style="font-family:Calibri;font-size:small;">Symbols for the critical modules will be download to the local symbol cache as you&rsquo;ll see in the next section.&nbsp; You&rsquo;ll also find a pingme.txt file in that same location.&nbsp; This file is auto-generated and indicates that the location is a symbol store, even if the SRV* prefix is not provided.&nbsp; On our test systems, the default cache locations were:</span></p>
<ul>
<li><span style="font-size:small;">Windows 8 - \ProgramData\dbg\sym</span></li>
<li><span style="font-size:small;">Server 2012 - \Program Files (x86)\Windows Kits\8.1\Debuggers\x64\sym</span></li>
</ul>
<h2><b>Caching symbols</b></h2>
<p><span style="font-family:verdana,geneva;font-size:small;">As symbols are resolved by the debugging tools engine, they are cached either temporarily, or long-term.&nbsp; The behavior is determined by the syntax of the symbol path.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">The following example shows how to set a symbol path, using what is referred to as a &ldquo;<i>downstream store.</i>&rdquo;&nbsp; The debugging engine copies the symbol into a subfolder in the &ldquo;<i>downstream store&rdquo;</i> after retrieving that file from the symbol server.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">In subsequent analyses, the symbol in the &ldquo;<i>downstream store&rdquo; </i>will be utilized first removing the need to browse the remote store.&nbsp; In the example below, the Microsoft Public Symbol server will be used to find symbols if an appropriate symbol cannot be found in C:\DownStreamStore.&nbsp; If found in the Microsoft Public Symbol Server, the symbol will be cached in the C:\DownstreamStore for future use.</span></p>
<p style="margin-left:30px;"><span style="font-family:verdana,geneva;font-size:small;"><b><i>NOTE</i></b><i>: Substitute your downstream store path for c:\DownstreamStore:</i></span></p>
<p style="margin-left:30px;"><span style="font-family:verdana,geneva;font-size:small;">srv*c:\DownstreamStore*https://msdl.microsoft.com/download/symbols</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">In field, and especially when debugging disconnected networks, you may not have the luxury of connecting to the public symbol server to retrieve symbols on demand.&nbsp; Instead you can take a copy of your &ldquo;downstream store&rdquo; folder and subfolders to your isolated network, and use that as the basis for your own symbol server.&nbsp; </span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">In this post we covered what symbols are, why they&rsquo;re pertinent to you, and provided an example to get you started in the debugger.&nbsp; In part two we&rsquo;ll cover how to setup your own symbol server including how to retrieve symbols for an offline environment and setup your symbol path.</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">Thanks for reading,</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">Robert Smith and Dan Cuomo</span></p>
<p><span style="font-family:verdana,geneva;font-size:small;">If you&rsquo;re interested in reading the other parts of this series, please see one of the links below.</span></p>
<ul>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Part 1: Getting Started with Symbols</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Part 2: Setting up your Symbol Server and Setting the Symbol path</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Part 3: Managing your Symbols</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Part 4: Using Symbols with Tools</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Part 5: Troubleshooting Symbols</span></p>
</li>
<li>
<p><span style="font-family:verdana,geneva;font-size:small;">Complementary: Step-by-Step - Debugging Tools for Windows Installation</span></p>
</li>
</ul>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>OS Patching Guidance for Windows 8.x and Windows Server 2012 R.x</title>
      <link>https://docs.microsoft.com/archive/blogs/robertsmith/os-patching-guidance-for-windows-8-x-and-windows-server-2012-r-x</link>
      <pubDate>Sun, 28 Sep 2014 07:28:00 GMT</pubDate>
      <dc:creator><![CDATA[Robert Smith, PFE]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/robertsmith/2014/09/28/os-patching-guidance-for-windows-8-x-and-windows-server-2012-r-x/</guid>
      <description><![CDATA[The Windows 8x/Server 2012x OS family has a different patching method than previous versions of...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:verdana,geneva;font-size:small;">The Windows 8x/Server 2012x OS family has a different patching method than previous versions of Windows.&nbsp; There are basically&nbsp;three forms of updates for Windows 8x/2012x:</span></p>
<ul>
<li><span style="font-size:small;">Monthly rollup</span></li>
<li><span style="font-size:small;">Globally released update</span></li>
<li><span style="font-size:small;">Limited released update</span></li>
</ul>
<h2>Monthly Rollup</h2>
<p><span style="font-family:verdana,geneva;">Windows 8x and Windows Server 2012x&nbsp;were being&nbsp;serviced mainly through monthly rollups, which usually correspond to the time when security updates are released.&nbsp;&nbsp;For the most part, these rollups&nbsp;were <strong>NOT</strong> cumulative since the last milestone.&nbsp; They&nbsp;were essentially cumulative since the previous rollup, with an occasional exception (April 2014 &amp; November 2014).</span></p>
<p><span style="font-family:verdana,geneva;"><strong>NOTE:</strong>&nbsp; <strong><em>The monthly rollups are sometimes listed as &quot;Optional&quot; or &quot;Recommended&quot;, but should be evaluated and applied as soon as practical.&nbsp; These rollups often contain fixes to address performance, reliability, feature, or role updates (ex. Hyper-V, Failover Clustering, etc.).</em></strong></span></p>
<p><span style="font-family:verdana,geneva;"><strong><em><br /></em></strong>Our &quot;ASKPFEPLAT&quot; group has a great blog post on this topic:</span></p>
<p><span style="font-family:verdana,geneva;"><a href="/b/askpfeplat/archive/2013/05/13/update-rollups-for-windows-server-2012-and-windows-8-explained.aspx">Update Rollups For Windows Server 2012 and Windows 8 Explained</a></span></p>
<p><span style="font-family:verdana,geneva;"><strong>NOTE: <em>Per the Ignite 2015 conference, and <a href="https://channel9.msdn.com/events/Ignite/2015/BRK2321">this presentation</a> specifically, Microsoft has announced that there will be no more monthly rollups.&nbsp; There may be an occasional &quot;convenience&quot; rollup.</em></strong><br /></span></p>
<h2>Global Distribution Release (GDR) Update</h2>
<p><span style="font-family:verdana,geneva;">GDR&nbsp;updates are available through Windows Update,&nbsp;<a href="https://catalog.update.microsoft.com/v7/site/Home.aspx">Microsoft Update Catalog</a>, or <a href="https://technet.microsoft.com/en-us/windowsserver/bb332157.aspx">Windows Server Update Services</a> (WSUS).&nbsp; GDR&nbsp;updates are usually localized in various languages, and are tested as widely as possible before public release.&nbsp; In the past we might have seen these show up in a list of fixes available on &quot;Patch Tuesday&quot;.&nbsp; With the rollup mechanism being used in Window 8x/2012x, there are likely to be fewer standalone updates than previous operating systems.</span></p>
<h2>Limited Distribution Released (LDR) Update</h2>
<p><span style="font-family:verdana,geneva;">Limited released patches,&nbsp;also known as &quot;hotfixes&quot;, &quot;QFEs&quot;, or &quot;LDR&quot;, are fixes that are generated most often as the result of a critical customer support incident.&nbsp; These fixes generally need to be created, tested, and delivered to customers in a condensed timeline.&nbsp;&nbsp;Limited release&nbsp;fixes that can be discovered through a published KB article, and&nbsp;obtained by the public,&nbsp;are fully supported by Microsoft. These types of fixes are available for public download, but usually only available through direct download, not through Windows Update or the Windows Update Catalog.</span></p>
<p><span style="font-family:verdana,geneva;">LDR fixes were historically intended to be included in the next milestone, whether that is service pack or new OS version.&nbsp; There is a great blog post on the <a href="https://blogs.msdn.com/b/ntdebugging/">&quot;NTDebugging&quot; blog</a> that goes into this topic in greater detail:</span></p>
<p><strong><span style="font-family:verdana,geneva;"><a href="https://blogs.msdn.com/b/ntdebugging/archive/2008/10/21/windows-hotfixes-and-updates-how-do-they-work.aspx">Windows Hotfixes and Updates - How do they work?</a></span></strong></p>
<h2>&quot;Unofficial&quot; Operating System Patching Guidance (Windows 8x/Server 2012 Rx)</h2>
<p>PLEASE NOTE:&nbsp;</p>
<p><span style="font-family:verdana,geneva;">I am offering this guidance, to aid in keeping operating systems as up to date as possible, with all fixes, not just security, and with as little effort as possible.&nbsp; I provide these recommendations in the context of a Microsoft PFE that works on site with customers, and experiences the various challenges of Windows servicing in general.&nbsp; <span style="text-decoration:underline;"><em><strong>I am making no official guidance statements with regard to Windows servicing, only my general guidance for enterprise customers</strong></em></span>.&nbsp; Any official guidance on Windows servicing will be posted on a top level Microsoft blog site, such as the <a href="https://blogs.windows.com/">Windows Blog</a></span></p>
<p></p>
<ul>
<li><span style="font-family:verdana,geneva;"><strong>Install all rollups available since the previous &quot;milestone&quot;.</strong>&nbsp; A milestone would be from Windows 8 to Windows 8.1, or from Windows Server 2012 to Windows Server 2012 R2.<br /><br /><strong>NOTE:</strong> One rollup in particular, <span style="font-family:verdana,geneva;"><a href="https://support.microsoft.com/kb/2919355">KB<span style="font-family:Verdana;">2919355</span></a></span>, is cumulative since the Windows 8.1 and Windows Server 2012 R2 respective milestones.&nbsp; This rollup IS cumulative since those milestones, and should be applied first after a new OS installation.<br /><br /></span>
<ul>
<li><span style="font-family:verdana,geneva;"><a href="https://support.microsoft.com/kb/2919355">KB<span style="font-family:Verdana;">2919355</span></a>, &quot;<strong>Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2 update: April 2014</strong>&quot;, has a prerequisite as well; <a href="https://support.microsoft.com/kb/2919442">2919442</a>, &quot;<strong>A servicing stack update is available for Windows RT 8.1, Windows 8.1, and Windows Server 2012 R2: March 2014</strong>&quot;.&nbsp; If you have installed your operating system some number of months after 2919442 was released, and have installed all offered updates,&nbsp;then you may&nbsp;receive&nbsp;a message that&nbsp;2919442 is not applicable.</span>&nbsp; This may happen if you have a later version of KB2919442 installed, such as <a href="https://support.microsoft.com/kb/2989647">KB2989647</a>.&nbsp; Related error codes are 2149842967, or 0x80240017h, and translate as <strong>WU_E_NOT_APPLICABLE</strong> (wuerror.h).<br /><br /></li>
<li>If <span style="font-family:verdana,geneva;"><a href="https://support.microsoft.com/kb/2919355">KB<span style="font-family:Verdana;">2919355</span></a></span>&nbsp;is installed manually, there are 7 files in all to download, and must be installed in a specific order.&nbsp; From the installation notes of <a href="https://www.microsoft.com/en-us/download/details.aspx?id=42334">KB2919355 download page</a>: &quot;These KB&#39;s must be installed in the following order: clearcompressionflag.exe, KB2919355, KB2932046, KB2959977, KB2937592, KB2938439, and KB2934018.<br /><br /></li>
<li><span style="font-family:verdana,geneva;"><a href="https://support.microsoft.com/kb/2919355">KB<span style="font-family:Verdana;">2919355</span></a></span>&nbsp;has a &quot;Known Issues&quot; section for both pre and post installation issues.&nbsp; It is important to review the Known Issues section of this, and other KBs, before proceeding.<span style="font-family:verdana,geneva;"><br /></span><span style="font-family:verdana,geneva;"><br /></span><span style="font-family:verdana,geneva;"><br /></span></li>
</ul>
</li>
<li><span style="font-family:verdana,geneva;"><strong>If available, use Windows Update, or Windows Server Update Services (WSUS).</strong>&nbsp; Windows Update, and Automatic Updates in Windows, will evaluate what&nbsp;updates are currently installed on the operating system, what&nbsp;updates are available, comb the list, evaluate superseded patches, and offer the most condensed list of currently available updates.<br /><br /></span></li>
<li><span style="font-family:verdana,geneva;"><strong><em>Critical Updates should be tested and installed as soon as possible with high priority.</em><br />NOTE: This blog post does NOT change any existing security guidance.<br /></strong><strong><br /></strong></span></li>
<li><span style="font-family:verdana,geneva;"><strong>Important updates should be tested as soon as practical, and installed as soon as practical.&nbsp;</strong> The &quot;Important&quot; class of updates can address security, performance, or reliability issues.<br /><br /></span></li>
<li><strong>Recommended updates should be reviewed, tested, and installed as applicable.</strong>&nbsp; The monthly rollups are sometimes categorized as &quot;Optional&quot;, such as the <a href="https://support2.microsoft.com/kb/2995388">October 2014 Rollup</a>.&nbsp; These rollups should be evaluated as soon as possible, as they often contain fixes for&nbsp;components in&nbsp;Windows Server Features and Roles.&nbsp; The default setting for Windows 8x/2012x is to install Recommended updates the same as Important updates.&nbsp; For systems that are serviced through Windows Update, this setting will ensure that nearly all available updates are installed and those systems are running up-to-date code.<br /><br /></li>
<li><strong>Optional updates should be reviewed, and installed possibly in a pilot group</strong>.&nbsp; The Optional updates are either&nbsp;just published new&nbsp;updates, or updates that don&#39;t fall into one of the other categories.&nbsp; Per the Ignite 2015 conference, Optional updates are evaluated periodically and their category ranking could be promoted to Recommended.&nbsp; There is no setting available in the Windows Update client that will automatically install Optional updates.&nbsp; Optional updates have to be installed manually, or through some other means such as SCCM.</li>
</ul>
<p>The following page has good general patching guidance with respect to security updates:</p>
<p><span style="font-size:small;"><strong><a href="https://www.microsoft.com/security/pc-security/updates.aspx">Stay up-to-date for more secure web browsing</a></strong></span></p>
<p>There is also a security guide available that goes into some of the topics discussed in this blog post, in great detail:</p>
<p><strong><span style="font-size:small;"><a href="https://technet.microsoft.com/en-us/security/dn550891.aspx">Microsoft Security Update Guide, Second Edition</a></span></strong></p>
<p>The Windows Update component makes it simple to install all available updates automatically.&nbsp; If all settings are set to &quot;automatic&quot;, the only user intervention would be to reboot when notified, which is very important.&nbsp; Windows will prompt when a reboot is needed, and will automatically reboot after a period of several days.&nbsp; The reason is that patches may contain updated components that are &quot;in-use&quot;, and cannot be replaced while the operating system is running.&nbsp; These components are &quot;staged&quot; to be replaced during the next full computer restart.&nbsp; During the time that there are pending reboots necessary, some functions in Windows are not available, such as adding or removing Roles or Features, and/or installing further operating system patches.&nbsp; If you attempt to perform one of these operations, you will likely receive a prompt to restart your computer first, to handle to the pending changes.</p>
<p>This guidance is subject to change in the current releases, or in future releases.&nbsp; This blog post makes no recommendation to change any setting or practice with respect to operating system security or hardening.</p>
<p><br />Thank you and safe, reliable computing.</p>
<p><br />Robert M. Smith, Sr. PFE, Platforms</p>]]></content:encoded>
    </item>
    <item>
      <title>Windows 2008 R2 Performance and Hotfix Recommendations</title>
      <link>https://docs.microsoft.com/archive/blogs/robertsmith/windows-2008-r2-performance-and-hotfix-recommendations</link>
      <pubDate>Tue, 16 Apr 2013 06:30:00 GMT</pubDate>
      <dc:creator><![CDATA[Robert Smith, PFE]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/robertsmith/2013/04/16/windows-2008-r2-performance-and-hotfix-recommendations/</guid>
      <description><![CDATA[Windows 2008 R2 Performance and Hotfix Recommendations&nbsp;
Hello from the field.&nbsp; It&#39;s...]]></description>
      <content:encoded><![CDATA[<hr style="width:50px;" />
<h1><span>Windows 2008 R2 Performance and <span>Hotfix</span> Recommendations&nbsp;</span></h1>
<p>Hello from the field.&nbsp; It&#39;s been a little since my last post.&nbsp; I spend quite a bit of time analyzing performance on Windows Server.&nbsp; I have recently put together a list of fixes and settings that I recommend to any person running Windows Server 2008 R2.&nbsp; These fixes are to maximize performance and stability.&nbsp; Please note that the recommendations in this blog post are not necessarily required.&nbsp; My intent is not to&nbsp;change any current guidance&nbsp;by Microsoft Corporation with respect to security or privacy.&nbsp; I am only seeking to increase awareness of operating system patches that are available, but mostly not offered proactively in any form.</p>
<p>First and foremost is a rollup for Windows 7 and Windows Server 2008 R2: <a href="https://support.microsoft.com/kb/2775511">2775511</a>.&nbsp; This rollup is recommended, per the verbiage in the article.&nbsp; Please note that there are several patches that should be applied along with the rollup, and are all documented in the KB article.</p>
<p><span>This post covers mainly a category of operating system fixes known as &quot;hotfixes&quot;, or &quot;LDR&quot; fixes.&nbsp; Microsoft creates <span>hotfixes</span> as a result of either a critical issue reported, issue identified, and a code fix created, or as a result of &quot;Watson&quot; telemetry of Windows computers around the world reporting errors in Windows until some threshold is crossed.&nbsp; Here is a recent <span>TechNet</span> article on Windows Telemetry:</span></p>
<p style="padding-left:30px;"><strong>What&#39;s New in Telemetry</strong><br /><a href="https://technet.microsoft.com/en-us/library/jj651022.aspx"><span>https://technet.microsoft.com/en-us/library/jj651022.<span>aspx</span></span></a></p>
<p><span>I do not advocate installing <span>hotfixes</span> just because they are there and the latest code.&nbsp; I do advocate occasionally evaluating what <span>hotfixes</span> are available that address significant performance or reliability issues.&nbsp; Which brings me to performance.</span></p>
<h3>Power Policy Performance Considerations</h3>
<p><span>Windows has long provided means to help conserve power.&nbsp; This makes sense for many situations.&nbsp; In the case of servers, and especially always busy servers like Exchange or SQL, there are documented issues with the default Windows power policy which is balanced.&nbsp; Changing the Windows power policy to High Performance often results in better overall server performance.&nbsp; The increased performance may come at the expense of increased power usage and heat generation, so that is a factor that has to be considered, especially in a dense <span>datacenter</span> environment, or an environment where power and cooling are already an issue.</span></p>
<p>Note that you can utilize the built-in <a href="https://technet.microsoft.com/en-us/library/cc748940(v=WS.10).aspx"><span><span>Powercfg</span>.<span>exe</span></span></a>&nbsp;to change power policy at command line, which means it can be scripted.&nbsp; A <a href="https://technet.microsoft.com/en-us/library/cc766428.aspx">scheduled task</a> can be created to set the power policy to High Performance just before peak hours, and set it back to Balanced just after peak hours.&nbsp; That might be an acceptable compromise of power savings and performance gains.</p>
<p>The power policy topic is well documented and you can find more about that here:</p>
<p style="padding-left:30px;"><strong>Degraded overall performance on Windows Server 2008 R2</strong><br /><a href="https://support.microsoft.com/kb/2207548"><span>https://support.microsoft.com/<span>kb</span>/2207548</span></a></p>
<h3><span>Windows Server 2008 R2 <span>Hotfixes Available</span></span></h3>
<p><span>I would like to reiterate, this is only a list of available fixes&nbsp;for Windows Server 2008 R2, and all are released since rollup 2775511.&nbsp;&nbsp;Any Windows <span>fix</span> should be first carefully evaluated and tested prior to deployment in production.&nbsp; Microsoft does not test &quot;Limited Distribution Release&quot; (<strong>LDR</strong>) Windows fixes as thoroughly as &quot;General Distribution Release&quot; (<strong>GDR</strong>) fixes.&nbsp; LDR and GDR are Microsoft terms to categorize Windows fixes.&nbsp; GDR fixes are international release, widely-tested fixes, whereas LDR fixes are not widely tested.&nbsp; LDR fixes are not unsupported however.&nbsp; You won&#39;t put your server in an unsupported state by applying LDR fixes.&nbsp; And often times if you have to engage Microsoft CSS for troubleshooting you will be given advice to install a recent LDR fix for a given component to ensure the issue being addressed is not the result of a fix that already exists.&nbsp; You can find more about Windows servicing technology with these searches:</span></p>
<p>Bing &quot;LDR&quot; &quot;GDR&quot; site:microsoft.com<br /><a href="https://www.bing.com/search?q=ldr+gdr+site%3Amicrosoft.com&amp;qs=n&amp;form=QBRE&amp;pq=ldr+gdr+site%3Amicrosoft.com&amp;sc=0-8&amp;sp=-1&amp;sk"><span>https://www.<span>bing</span>.com/search?q=<span>ldr</span>+<span>gdr</span>+site%3Amicrosoft.com&amp;qs=n&amp;form=QBRE&amp;<span>pq</span>=<span>ldr</span>+<span>gdr</span>+site%3Amicrosoft.com&amp;<span>sc</span>=0-8&amp;sp=-1&amp;sk</span></a>=</p>
<p>The Windows Servicing Guy Blog:<br /><a href="https://www.bing.com/search?q=ldr+gdr+site%3Amicrosoft.com&amp;qs=n&amp;form=QBRE&amp;pq=ldr+gdr+site%3Amicrosoft.com&amp;sc=0-8&amp;sp=-1&amp;sk"><span>https://www.<span>bing</span>.com/search?q=<span>ldr</span>+<span>gdr</span>+site%3Amicrosoft.com&amp;qs=n&amp;form=QBRE&amp;<span>pq</span>=<span>ldr</span>+<span>gdr</span>+site%3Amicrosoft.com&amp;<span>sc</span>=0-8&amp;sp=-1&amp;sk</span></a>=</p>
<p>Also, please note that <em>this list does not change any existing security guidance from Microsoft</em>.&nbsp; Any security related fixes available should immediately be evaluated, tested, and deployed per existing Microsoft guidance from our <a href="https://www.microsoft.com/security/default.aspx">Security teams</a>.&nbsp; The settings and fixes in this blog post are intended to address performance and reliability issues.</p>
<h1>Hotfixes&nbsp;available for Windows Server 2008 R2, post SP-1:</h1>
<table style="width:821px;" border="0" cellspacing="0" cellpadding="0"><colgroup><col width="69" /></colgroup><colgroup><col width="681" /></colgroup><colgroup><col width="34" /></colgroup><colgroup><col width="37" /></colgroup>
<tbody>
<tr>
<td width="69" height="18"><strong><span style="font-size:small;">KB</span></strong></td>
<td width="681"><strong><span style="font-size:small;">KB Title</span></strong></td>
<td width="34"><strong><span style="font-size:small;">LDR</span></strong></td>
<td width="37"><strong><span style="font-size:small;">GDR</span></strong></td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2974313/EN-US"><span style="color:#0563c1;">2974313</span></a></td>
<td width="681">A domain controller freezes when an event subscription manager list is long in Windows 7 and Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2973337/EN-US"><span style="color:#0563c1;">2973337</span></a></td>
<td width="681">SHA512 is disabled in Windows 7 or Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2971670/EN-US"><span style="color:#0563c1;">2971670</span></a></td>
<td width="681">DNS service crashes every hour when a query can achieve all DNS resource record types in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2966897/EN-US"><span style="color:#0563c1;">2966897</span></a></td>
<td width="681">Infinite loop occurs when the MSDSM inquires serial numbers of an MPIO device in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2966583/EN-US"><span style="color:#0563c1;">2966583</span></a></td>
<td width="681">Improvements for the System Update Readiness tool in Windows 7 and Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2965917/EN-US"><span style="color:#0563c1;">2965917</span></a></td>
<td width="681">A computer freezes during startup after filter drivers are installed in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2965904/EN-US"><span style="color:#0563c1;">2965904</span></a></td>
<td width="681">Task name is deleted after you link a storage report to a scheduled task in Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2965768/EN-US"><span style="color:#0563c1;">2965768</span></a></td>
<td width="681">Stop error 0x3B when an application changes the z-order of a window in Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2965351"><span style="color:#0563c1;">2965351</span></a></td>
<td width="681">Error_FILE_NOT_FOUND when you print to a shared network printer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2964832/EN-US"><span style="color:#0563c1;">2964832</span></a></td>
<td width="681">RemoteApp program pop-up window is hidden in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2964643"><span style="color:#0563c1;">2964643</span></a></td>
<td width="681">Third-party VPN client stops Internet connectivity in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2964548/EN-US"><span style="color:#0563c1;">2964548</span></a></td>
<td width="681">DHCP server fails to lease reserved IP addresses in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2964511/EN-US"><span style="color:#0563c1;">2964511</span></a></td>
<td width="681">Stop Error DRIVER_POWER_STATE_FAILURE occurs when you put your computer into standby or hibernation mode</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2962059/EN-US"><span style="color:#0563c1;">2962059</span></a></td>
<td width="681">RPC Server Unavailable error when you set up a password and then click Next in Bitlocker To Go in Windows 8.1 or Windows 7</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2958997/EN-US"><span style="color:#0563c1;">2958997</span></a></td>
<td width="681">EUDC fonts cannot be printed correctly by using an XPS print driver in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2958399"><span style="color:#0563c1;">2958399</span></a></td>
<td width="681">&quot;0xD1&quot; Stop error occurs occasionally in all SQL Server cluster nodes running Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2958122"><span style="color:#0563c1;">2958122</span></a></td>
<td width="681">NetLogon 3210 events are logged after MSA renews it password in Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2957775"><span style="color:#0563c1;">2957775</span></a></td>
<td width="681">System crashes during I/O traffic after you install a Host Bus Adapter on a computer that&#39;s running Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2957560"><span style="color:#0563c1;">2957560</span></a></td>
<td width="681">Windows freezes or loses cluster disk reservation during a stress test in iSCSI initiator</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2956703"><span style="color:#0563c1;">2956703</span></a></td>
<td width="681">You cannot renew the IP address after the system time synchronizes in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2956344/EN-US"><span style="color:#0563c1;">2956344</span></a></td>
<td width="681">Clients randomly lose connection to a Windows Server 2008 R2 SP1 Network Policy Server</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2955074"><span style="color:#0563c1;">2955074</span></a></td>
<td width="681">Retrieval of paged results is interrupted when an LDAP server receives queries that generate many results</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2953722/EN-US"><span style="color:#0563c1;">2953722</span></a></td>
<td width="681">Drive Maps preferences are still displayed in Group Policy RSoP after they are removed or disabled</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2952507"><span style="color:#0563c1;">2952507</span></a></td>
<td width="681">0x00000050 Stop error when you browse files by using Windows Explorer on a remote desktop in Windows 7 SP1 or Windows 8.1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2951611/EN-US"><span style="color:#0563c1;">2951611</span></a></td>
<td width="681">DirectAccess is used for internal network connections in Windows 7 SP1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2950358"><span style="color:#0563c1;">2950358</span></a></td>
<td width="681">A memory leak in Network Store Interface Service (NSI) occurs unexpectedly</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2939652/EN-US"><span style="color:#0563c1;">2939652</span></a></td>
<td width="681">WM_DEVICECHANGE messages are delayed after a SATA hard disk is removed</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2939490/EN-US"><span style="color:#0563c1;">2939490</span></a></td>
<td width="681">Records on WINS server are added incorrectly when you use the Netsh command in Windows Server 2012 R2 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2937676/EN-US"><span style="color:#0563c1;">2937676</span></a></td>
<td width="681">Hotfix rollup 2937676 is available for the .NET Framework 4.5.1 in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2937350/EN-US"><span style="color:#0563c1;">2937350</span></a></td>
<td width="681">Update is available to set up UDP port routes between cluster nodes</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2936341"><span style="color:#0563c1;">2936341</span></a></td>
<td width="681">The WebClient service does not send cookies in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2935389"><span style="color:#0563c1;">2935389</span></a></td>
<td width="681">System shows a high nonpaged pool utilization from pool tag AfdP</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2934562"><span style="color:#0563c1;">2934562</span></a></td>
<td width="681">&quot;The home folder could not be created&quot; error when using a non-exist folder path in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2932119/EN-US"><span style="color:#0563c1;">2932119</span></a></td>
<td width="681">Incorrect DNS queries cause unnecessary network traffic when you start GPMC or GPUpdate in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2929755/EN-US"><span style="color:#0563c1;">2929755</span></a></td>
<td width="681">Out of memory when you load some image resources in a Windows application</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2928562"><span style="color:#0563c1;">2928562</span></a></td>
<td width="681">Event 55 when you copy an encrypted folder to EFS shared folder in Windows</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2928492/EN-US"><span style="color:#0563c1;">2928492</span></a></td>
<td width="681">Cannot connect to remote applications hosted on a Windows Server 2012 R2 or Windows Server 2008 R2 SP1-based computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2928490/EN-US"><span style="color:#0563c1;">2928490</span></a></td>
<td width="681">Windows PowerShell scripts stop working in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2927901"><span style="color:#0563c1;">2927901</span></a></td>
<td width="681">SetDefaultPrinter sets a wrong default printer in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2927193"><span style="color:#0563c1;">2927193</span></a></td>
<td width="681">Can&#39;t back up the system state on a computer that&#39;s running Windows 7 or Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2926993/EN-US"><span style="color:#0563c1;">2926993</span></a></td>
<td width="681">Hotfix rollup 2926993 is available for the .NET Framework 3.5.1 on Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2926986/EN-US"><span style="color:#0563c1;">2926986</span></a></td>
<td width="681">Hotfix rollup 2926986 is available for the .NET Framework 4.0 in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2925489"><span style="color:#0563c1;">2925489</span></a></td>
<td width="681">You cannot establish an IPsec connection with certain third-party devices in Windows</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2924678"><span style="color:#0563c1;">2924678</span></a></td>
<td width="681">Trusted Publishers settings are unmanageable in a Group Policy Object in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2924171/EN-US"><span style="color:#0563c1;">2924171</span></a></td>
<td width="681">Resource Monitor (Perfmon /res) crashes in Windows 7 and in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2923884/EN-US"><span style="color:#0563c1;">2923884</span></a></td>
<td width="681">Invalid subnet masks occur after IP configuration change and computer restart in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2923388/EN-US"><span style="color:#0563c1;">2923388</span></a></td>
<td width="681">Plain text displayed when XSLT style sheet used to transform an XML document into HTML in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><span style="text-decoration:underline;"><span style="color:#0563c1;">2922852</span></span></td>
<td width="681">Update resolves a problem in which LDAP, Kerberos and DC locator responses are slow or time out with Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2922514/EN-US"><span style="color:#0563c1;">2922514</span></a></td>
<td width="681">White line appears when printing an image by using an XPS printer driver in Windows</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2919469/EN-US"><span style="color:#0563c1;">2919469</span></a></td>
<td width="681">Canada country code is incorrect in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2918893"><span style="color:#0563c1;">2918893</span></a></td>
<td width="681">User profile corruption after you lose network connectivity or hibernate a Windows 7-based computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2917033/EN-US"><span style="color:#0563c1;">2917033</span></a></td>
<td width="681">An update is available to enable the use of Local ADMX files for Group Policy Editor</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2916627"><span style="color:#0563c1;">2916627</span></a></td>
<td width="681">Stop Error 0x0000008E (KERNEL_MODE_EXCEPTION_NOT_HANDLED) when you try to access DFS in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2916267/EN-US"><span style="color:#0563c1;">2916267</span></a></td>
<td width="681">The DFS Namespace reparse point for folder targets are missing in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2915094"><span style="color:#0563c1;">2915094</span></a></td>
<td width="681">Profile loading takes a long time due to full DFS namespace sync with PDC</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2914677/EN-US"><span style="color:#0563c1;">2914677</span></a></td>
<td width="681">Server Work Queues performance object counters become abnormally high in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2914029/EN-US"><span style="color:#0563c1;">2914029</span></a></td>
<td width="681">IPP printing job fails when using an XPS driver when the printer is shared on a Windows Server 2008 R2 SP1 print server</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2913763"><span style="color:#0563c1;">2913763</span></a></td>
<td width="681">Biometric fingerprint device does not work on a Windows 7 SP1 or Windows Server 2008 R2 SP1-based computer</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2913607"><span style="color:#0563c1;">2913607</span></a></td>
<td width="681">&quot;Failed to create source node&quot; error when you try to open a .wmv file from the TopoEdit console in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2913152/EN-US"><span style="color:#0563c1;">2913152</span></a></td>
<td width="681">Windows Photo Viewer prints white lines when you use an XPS driver to print photos in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2910686/EN-US"><span style="color:#0563c1;">2910686</span></a></td>
<td width="681">Domain users cannot change or reset their passwords when KRBTGT account is restored in Windows client</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2908783"><span style="color:#0563c1;">2908783</span></a></td>
<td width="681">Data corruption occurs on iSCSI LUNs in Windows</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2907244/EN-US"><span style="color:#0563c1;">2907244</span></a></td>
<td width="681">Spurious RHS deadlocks occur when the system time is adjusted forward in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2907094/EN-US"><span style="color:#0563c1;">2907094</span></a></td>
<td width="681">High CPU usage after members are added to the DFSR replication group</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2906850"><span style="color:#0563c1;">2906850</span></a></td>
<td width="681">Print job status remains as &quot;Sent to printer&quot; when Isolated mode is set in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2898997"><span style="color:#0563c1;">2898997</span></a></td>
<td width="681">Adamsync fails when you synchronize tombstoned objects in a Windows 7 SP1 or Windows Server 2008 R2 SP1 environment</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2898092/EN-US"><span style="color:#0563c1;">2898092</span></a></td>
<td width="681">Tlntsvr.exe process crashes on a Windows Server 2008 R2 SP1-based telnet server</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2897770/EN-US"><span style="color:#0563c1;">2897770</span></a></td>
<td width="681">NFS sharing type resources do not come online after the Cluster service fails over a cluster group in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2965705"><span style="color:#0563c1;">2965705</span></a></td>
<td width="681">Display problems when a supplementary character follows a mathematical operator</td>
<td></td>
<td></td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2896881/EN-US"><span style="color:#0563c1;">2896881</span></a></td>
<td width="681">Long logon time when you use the AddPrinterConnection VBScript command to map printers for users during logon process in Windows Server 2012 R2 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2896256/EN-US"><span style="color:#0563c1;">2896256</span></a></td>
<td width="681">FIX: A remote desktop session cannot start after you add a new user to a computer that is running Windows 7 Service Pack 1 or Windows Server 2008 R2 Service Pack 1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2895729"><span style="color:#0563c1;">2895729</span></a></td>
<td width="681">FIX: Stop error 0x9F or 0xFE in Usbhub.sys occurs when asynchronous transfer is in progress with a USB device in Windows 7 Service Pack 1 or Windows Server 2008 R2 Service Pack 1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2895698/EN-US"><span style="color:#0563c1;">2895698</span></a></td>
<td width="681">Users who have the remote audio setting enabled cause the RD Session Host servers to freeze intermittently in Windows Server 2012 R2 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2895044/EN-US"><span style="color:#0563c1;">2895044</span></a></td>
<td width="681">&quot;0x0000007F&quot; Stop error when you run a stress test on a Windows Server 2008 R2 SP1-based computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2894252"><span style="color:#0563c1;">2894252</span></a></td>
<td width="681">Process that runs in Untrusted integrity level is reported as an AppContainer after you install KB2532445 in Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2893634"><span style="color:#0563c1;">2893634</span></a></td>
<td width="681">Performance of an application that calls the GetFileAttributesEx function degrades significantly in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2893519/EN-US"><span style="color:#0563c1;">2893519</span></a></td>
<td width="681">Remember my credentials option cannot be hidden when the SspiPromptForCredentials function is called in Windows</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2892678/EN-US"><span style="color:#0563c1;">2892678</span></a></td>
<td width="681">Logon screen, shutdown screen, and lock screen are not displayed in full-screen mode after you change the screen resolution to 3200 &times; 1800 in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2891144/EN-US"><span style="color:#0563c1;">2891144</span></a></td>
<td width="681">Application does not draw polylines correctly when you run it through an RD Session in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2889889/EN-US"><span style="color:#0563c1;">2889889</span></a></td>
<td width="681">Hotfix rollup 2889889 is available for the .NET Framework 4.5 in Windows 7 SP1, Windows Server 2008 R2 SP1, Windows Server 2008 SP2, and Windows Vista SP2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2889748/EN-US"><span style="color:#0563c1;">2889748</span></a></td>
<td width="681">High memory usage by the Svchost.exe process after you install Windows Management Framework 3.0 on a Windows-based computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2884927/EN-US"><span style="color:#0563c1;">2884927</span></a></td>
<td width="681">FIX: A user account is unexpectedly locked out when you provide an invalid password at a task scheduler authentication prompt</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2884866/EN-US"><span style="color:#0563c1;">2884866</span></a></td>
<td width="681">SCVMM refreshes a virtual machine and causes errors on clustered Hyper-V hosts that are running Windows Server 2012 R2 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2884284"><span style="color:#0563c1;">2884284</span></a></td>
<td width="681">New certificate is generated whenever you start a Windows 7 SP1 or Windows Server 2008 R2 SP1-based computer that uses NAP 802.1X</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2884176/EN-US"><span style="color:#0563c1;">2884176</span></a></td>
<td width="681">Large backlogs on Windows Server 2008 R2 SP1-based DFSR servers</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2883703"><span style="color:#0563c1;">2883703</span></a></td>
<td width="681">&quot;0xC0000203&quot; error when you try to access a DFS share that is located on a Windows Server 2003 R2 or earlier version of Windows-based computer from a Windows 7 SP1 or Windows Server 2008 R2 SP1-based computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2882822/EN-US"><span style="color:#0563c1;">2882822</span></a></td>
<td width="681">Update adds ITraceRelogger interface support to Windows Embedded Standard 7 SP1, Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2882780/EN-US"><span style="color:#0563c1;">2882780</span></a></td>
<td width="681">Incorrect UI color rendering when an application uses the D3D11CreateDevice or D3D10CreateDevice function in Windows</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2878563/EN-US"><span style="color:#0563c1;">2878563</span></a></td>
<td width="681">Applications experience up to three seconds of AD DS or AD LDS query latency in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2878378/EN-US"><span style="color:#0563c1;">2878378</span></a></td>
<td width="681">OpsMgr 2012 or OpsMgr 2007 R2 generates a &quot;Heartbeat Failure&quot; message and then goes into a greyed out state in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2877115"><span style="color:#0563c1;">2877115</span></a></td>
<td width="681">Error message when you try to perform a LUN resynchronization in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2627489"><span style="color:#0563c1;">2627489</span></a></td>
<td width="681">Recursive calls to window manager functions may fail unexpectedly</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2871997/EN-US"><span style="color:#0563c1;">2871997</span></a></td>
<td width="681">Microsoft Security Advisory: Update to improve credentials protection and management: May 13, 2014</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2871803/EN-US"><span style="color:#0563c1;">2871803</span></a></td>
<td width="681">&quot;0x0000007E&quot; Stop error when you log off from a Windows Server 2008 R2 SP1-based failover cluster</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2871085/EN-US"><span style="color:#0563c1;">2871085</span></a></td>
<td width="681">I/O failures occur when you create a snapshot for a large volume in Windows Server 2012 or Windows Server 2008 R2 SP1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2870165/EN-US"><span style="color:#0563c1;">2870165</span></a></td>
<td width="681">Unknown time zone information in a remote desktop session when you try to query the time zone information from a Windows 7 SP1-based client computer to a Windows Server 2008 R2-based RDS server</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2869606/EN-US"><span style="color:#0563c1;">2869606</span></a></td>
<td width="681">The LUN for a storage device is lost when multiple paths are lost concurrently in Windows</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2866772"><span style="color:#0563c1;">2866772</span></a></td>
<td width="681">&quot;Rdrleakdiag.exe -snap&quot; command fails on a computer that is running Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2865346/EN-US"><span style="color:#0563c1;">2865346</span></a></td>
<td width="681">MSDTC service stops unexpectedly in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2862063/EN-US"><span style="color:#0563c1;">2862063</span></a></td>
<td width="681">Hotfix rollup 2862063 is available for the .NET Framework 4.5 in Windows 7 SP1, Windows Server 2008 R2 SP1, Windows Server 2008 SP2, and Windows Vista SP2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2858684/EN-US"><span style="color:#0563c1;">2858684</span></a></td>
<td width="681">Not all results are returned by file content search from Windows Explorer in Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2856657/EN-US"><span style="color:#0563c1;">2856657</span></a></td>
<td width="681">Splwow64.exe process doesn&#39;t end after a print job finishes in the 64-bit version of Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2856310"><span style="color:#0563c1;">2856310</span></a></td>
<td width="681">64-bit ODBC application crashes when it configures a statement attribute in Windows Vista, Windows 7, Windows Server 2008 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2855028/EN-US"><span style="color:#0563c1;">2855028</span></a></td>
<td width="681">Svchost.exe process that hosts the RasMan service crashes in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2853952/EN-US"><span style="color:#0563c1;">2853952</span></a></td>
<td width="681">Loss of consistency with IDE-attached virtual hard disks when a Hyper-V host server experiences an unplanned restart</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2851868/EN-US"><span style="color:#0563c1;">2851868</span></a></td>
<td width="681">&quot;0x0000003B&quot; Stop error when you use the DFSR service on a Windows Server 2008 R2-based computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2851323"><span style="color:#0563c1;">2851323</span></a></td>
<td width="681">Windows Explorer does not display all network computers in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2848576"><span style="color:#0563c1;">2848576</span></a></td>
<td width="681">Variant data type is overwritten after you use a Visual Basic script to call an RDS component in Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2847635/EN-US"><span style="color:#0563c1;">2847635</span></a></td>
<td width="681">The number of ifXTable entries does not match the number of ifNumber objects in Windows Server 2008 R2 Service Pack 1 as defined by the SNMP MIB agent</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2847346/EN-US"><span style="color:#0563c1;">2847346</span></a></td>
<td width="681">Svchost.exe running NSI service leaks memory and non-paged pool memory leak Tag NSpc</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2846960/EN-US"><span style="color:#0563c1;">2846960</span></a></td>
<td width="681">Error when you open a SharePoint Document Library in Windows Explorer or map a network drive to the library after you install Internet Explorer 10</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2846340/EN-US"><span style="color:#0563c1;">2846340</span></a></td>
<td width="681">Duplicate friendly names of network adapters are displayed in Windows</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2843376"><span style="color:#0563c1;">2843376</span></a></td>
<td width="681">Chkdsk tool incorrectly reports exFAT volume file system as corrupted in Windows 7 and Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2833914"><span style="color:#0563c1;">2833914</span></a></td>
<td width="681">&quot;Interactive Logon: Smart card removal behavior&quot; Group Policy setting doesn&#39;t work as expected in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2833001/EN-US"><span style="color:#0563c1;">2833001</span></a></td>
<td width="681">Wmiprvse.exe process crashes when you run a WMI script on a computer that is running Windows 7 or Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2831206"><span style="color:#0563c1;">2831206</span></a></td>
<td width="681">DFS network path goes offline in Windows 7 or Windows Server 2008 R2 when Transparent Caching Group Policy setting is enabled</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2831013/EN-US"><span style="color:#0563c1;">2831013</span></a></td>
<td width="681">User receives SMB change notifications from a subfolder that the user does not have permission to access in Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2829589/EN-US"><span style="color:#0563c1;">2829589</span></a></td>
<td width="681">Message Queuing service freezes when queue size increases in Windows Server 2008 SP2 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2826910"><span style="color:#0563c1;">2826910</span></a></td>
<td width="681">Secondary dump data is limited to 256 MB in Windows 7 and Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2823655"><span style="color:#0563c1;">2823655</span></a></td>
<td width="681">Searchindexer.exe consumes lots of memory in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2823180"><span style="color:#0563c1;">2823180</span></a></td>
<td width="681">Update is available for Windows Management Framework 3.0 in Windows 7 SP1, Windows Server 2008 R2 SP1, or Windows Server 2008 SP2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2821230/"><span style="color:#0563c1;">2821230</span></a></td>
<td width="681">&quot;0x80100065&quot; error when you call the SCardConnect function in Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2815853/EN-US"><span style="color:#0563c1;">2815853</span></a></td>
<td width="681">RPC service crashes on a Windows 7-based or Windows Server 2008 R2-based COM client</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2812416/EN-US"><span style="color:#0563c1;">2812416</span></a></td>
<td width="681">You cannot schedule a File Management task accurately in Windows Server 2008 R2 or in Windows Server 2012</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2809808/EN-US"><span style="color:#0563c1;">2809808</span></a></td>
<td width="681">Takes longer than expected to log off from a Windows Server 2008 R2 SP1-based RDS server remotely</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="46"><a href="https://support.microsoft.com/kb/2808679"><span style="color:#0563c1;">2808679</span></a></td>
<td width="681">Update that protects from internal URL port scanning is available for Windows XP, Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows Embedded Standard 7, Windows Server 2008 R2, Windows 8, Windows RT, and Windows Server 2012</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2807831/EN-US"><span style="color:#0563c1;">2807831</span></a></td>
<td width="681">Memory leak occurs in the Lsass.exe process on a domain controller that is running Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2801662"><span style="color:#0563c1;">2801662</span></a></td>
<td width="681">&quot;0x000000C4&quot; Stop error when you run the WDF Fault Injection Logo Test in Windows 7 and Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2800422"><span style="color:#0563c1;">2800422</span></a></td>
<td width="681">&quot;0x00000034&quot; Stop error and file corruption when you burn a Live File System formatted disc in Windows 7 or Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2798787"><span style="color:#0563c1;">2798787</span></a></td>
<td width="681">Name of Group Policy preferences for Internet Explorer are displayed incorrectly in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2797789/EN-US"><span style="color:#0563c1;">2797789</span></a></td>
<td width="681">You cannot overwrite an exported event log file by using the Wevtutil.exe tool in Windows 7, Windows Server 2008 R2, Windows 8, and Windows Server 2012</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2797749"><span style="color:#0563c1;">2797749</span></a></td>
<td width="681">Explorer.exe process may crash after you add custom properties to a .doc file in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2796764"><span style="color:#0563c1;">2796764</span></a></td>
<td width="681">The &quot;New&quot; option in the shortcut menu is missing for the root folder of a redirected drive in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2796725"><span style="color:#0563c1;">2796725</span></a></td>
<td width="681">Wireless Hosted Network feature does not work in Windows 7 or Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2789430/EN-US"><span style="color:#0563c1;">2789430</span></a></td>
<td width="681">Isnscli.exe incorrectly displays IPv6 address information that is from a Windows Server 2008 and Windows Server 2008 R2-based iSNS server</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2787046/EN-US"><span style="color:#0563c1;">2787046</span></a></td>
<td width="681">Task that is created by using the &quot;AT&quot; command is not deleted after it is executed in Windows Vista, Windows Server 2008, Windows 7, or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2786667/EN-US"><span style="color:#0563c1;">2786667</span></a></td>
<td width="681">Validate simultaneous failover test fails when you run cluster validation tests on a multi-node failover cluster that is running Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2786454"><span style="color:#0563c1;">2786454</span></a></td>
<td width="681">Incorrect source IP address is returned in the SNMP response in Windows 8, Windows Server 2012, Windows 7, Windows Server 2008 R2, Windows Vista, and Windows Server 2008</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2782558/EN-US"><span style="color:#0563c1;">2782558</span></a></td>
<td width="681">DNS settings of a DHCP reservation revert to the settings at the scope level in Windows Server 2008 R2 and Windows Server 2012</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2780130/EN-US"><span style="color:#0563c1;">2780130</span></a></td>
<td width="681">&quot;0x00000027&quot; Stop error when you try to use a redirected smart card to log on to a Windows 7 or Windows Server 2008 R2-based remote computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2778863/EN-US"><span style="color:#0563c1;">2778863</span></a></td>
<td width="681">RD Gateway service crashes on a computer that is running Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2777201/EN-US"><span style="color:#0563c1;">2777201</span></a></td>
<td width="681">SQL Server 2012 service shuts down unexpectedly upon availability group replica role transition on a Windows Server 2008 R2-based failover cluster</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2775511"><span style="color:#0563c1;">2775511</span></a></td>
<td width="681">An enterprise hotfix rollup is available for Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2769121"><span style="color:#0563c1;">2769121</span></a></td>
<td width="681">802.1X authentication fails on a Windows 7-based or Windows 2008 R2-based computer that has multiple certificates</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2768523/EN-US"><span style="color:#0563c1;">2768523</span></a></td>
<td width="681">&quot;0x0000007E&quot; Stop error after you configure a computer to host a web service in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2768494"><span style="color:#0563c1;">2768494</span></a></td>
<td width="681">You cannot log on to a Windows 7-based or Windows Server 2008 R2-based client computer after you disable AES encryption for Kerberos authentication</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2767652/EN-US"><span style="color:#0563c1;">2767652</span></a></td>
<td width="681">Shadow copy storage area is created on the wrong disk when you create a volume snapshot of a CSV by using VSS in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2765546"><span style="color:#0563c1;">2765546</span></a></td>
<td width="681">Icons are not displayed correctly on the taskbar in Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2761217"><span style="color:#0563c1;">2761217</span></a></td>
<td width="681">An update is available to add the Calibri Light and Calibri Light Italic fonts to Windows 7 and Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2760730/EN-US"><span style="color:#0563c1;">2760730</span></a></td>
<td width="681">Description of an update rollup that resolves interoperation issues in Windows Vista SP2, Windows Server 2008 SP2, Windows 7 SP1, and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2752183/EN-US"><span style="color:#0563c1;">2752183</span></a></td>
<td width="681">You cannot migrate a Hyper-V virtual machine from a non-Bulldozer-based computer to a Bulldozer-based computer in Windows Server 2008 R2 (AMD Only)</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2743155/EN-US"><span style="color:#0563c1;">2743155</span></a></td>
<td width="681">Application crashes when it uses the BitmapImage class to optimize images in Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2740562/EN-US"><span style="color:#0563c1;">2740562</span></a></td>
<td width="681">Lsass.exe process crashes when an application uses an incorrect CredGroup object to call the SpAcceptLsaModeContext function on a computer that is running Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2740317"><span style="color:#0563c1;">2740317</span></a></td>
<td width="681">You can&rsquo;t use IXSSO to query an Index Server catalog after you install hotfix 2698365 in Windows 7 or Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2740180/EN-US"><span style="color:#0563c1;">2740180</span></a></td>
<td width="681">Performance Monitor or a PDH function takes longer than expected to collect performance data on a computer that is running Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2736782/EN-US"><span style="color:#0563c1;">2736782</span></a></td>
<td width="681">You cannot save a file by using the Save method of a Recordset object in Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2718841"><span style="color:#0563c1;">2718841</span></a></td>
<td width="681">&quot;0xc0000005&quot; error message and Windows Explorer stops responding on a computer that is running Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2712561"><span style="color:#0563c1;">2712561</span></a></td>
<td width="681">&quot;0x000000D1&quot; Stop error when you run a Windows Logo Kit 1.6 common scenario test in Windows 7 or in Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2712286/EN-US"><span style="color:#0563c1;">2712286</span></a></td>
<td width="681">1101 error code when you run an esentutl /g command on a Windows 7-based or Windows Server 2008 R2-based computer</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2708857"><span style="color:#0563c1;">2708857</span></a></td>
<td width="681">RDX cartridge disks are not recognized correctly in Windows 7, in Windows Vista, in Windows Server 2008, or in Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2707589"><span style="color:#0563c1;">2707589</span></a></td>
<td width="681">You may not receive correct rich error information when a COM application encounters an error in Windows 7 SP1 or in Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2707157"><span style="color:#0563c1;">2707157</span></a></td>
<td width="681">WebIO component uses its own DNS cache to resolve an FQDN in Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2705759/EN-US"><span style="color:#0563c1;">2705759</span></a></td>
<td width="681">Live migration fails when you perform a live migration of a Hyper-V virtual machine in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2698957"><span style="color:#0563c1;">2698957</span></a></td>
<td width="681">Hibernation feature does not work on certain HP Proliant computers that are running Windows 7 SP1 or Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2685893/EN-US"><span style="color:#0563c1;">2685893</span></a></td>
<td width="681">Error messages after you change the 2047 character limit in an environment variable on a computer that is running Windows Vista, Windows 7,&nbsp; Windows Server 2008 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2685088/EN-US"><span style="color:#0563c1;">2685088</span></a></td>
<td width="681">The screen saver grace period does not work as expected if the period exceeds 60 seconds on a computer that is running Windows 7 or Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2680906"><span style="color:#0563c1;">2680906</span></a></td>
<td width="681">Robocopy.exe utility incorrectly skips some files during the file copy or backup process in Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2675612/EN-US"><span style="color:#0563c1;">2675612</span></a></td>
<td width="681">SUA utilities end unexpectedly when you use them together with wildcard characters in Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2670838/EN-US"><span style="color:#0563c1;">2670838</span></a></td>
<td width="681">Platform update for Windows 7 SP1 and Windows Server 2008 R2 SP1</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2653312"><span style="color:#0563c1;">2653312</span></a></td>
<td width="681">Audio file sounds distorted after you convert the sample rate in Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2652029/EN-US"><span style="color:#0563c1;">2652029</span></a></td>
<td width="681">Computer name is displayed in the wrong language in the &quot;Devices and Printers&quot; Control Panel item in Windows 7 or in Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2646060/EN-US"><span style="color:#0563c1;">2646060</span></a></td>
<td width="681">An update that selectively disables the Core Parking feature in Windows 7 or in Windows Server 2008 R2 is available</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2639077/EN-US"><span style="color:#0563c1;">2639077</span></a></td>
<td width="681">Handle leak in Svchost.exe when a WMI query is triggered by using the Win32_PowerSettingCapabilities class in Windows 7 or in Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2635500/EN-US"><span style="color:#0563c1;">2635500</span></a></td>
<td width="681">Issues when you try to display a large TIFF file that contains multiple pages by using Windows Photo Viewer in Windows Vista, in Windows 7,&nbsp; in Windows Server 2008 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2615327"><span style="color:#0563c1;">2615327</span></a></td>
<td width="681">You cannot cancel a shrink operation on a volume in Windows 7 or in Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2614892/EN-US"><span style="color:#0563c1;">2614892</span></a></td>
<td width="681">A computer stops responding because of a deadlock situation in the Mountmgr.sys driver in running Windows 7 or in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2607047/EN-US"><span style="color:#0563c1;">2607047</span></a></td>
<td width="681">Event ID 4114 and Event ID 4008 are logged in the DFS Replication log in Windows Server 2008 R2</td>
<td></td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/2591462/EN-US"><span style="color:#0563c1;">2591462</span></a></td>
<td width="681">A boot LUN can be disabled if it is claimed for use with MPIO in Windows 7 or in Windows Server 2008 R2</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="30"><a href="https://support.microsoft.com/kb/2559392/EN-US"><span style="color:#0563c1;">2559392</span></a></td>
<td width="681">The List Running Processes test fails when you run the Failover Cluster Validation Wizard on a Windows 7-based or Windows Server 2008 R2-based cluster node</td>
<td>X</td>
<td>X</td>
</tr>
<tr>
<td height="18"><a href="https://support.microsoft.com/kb/982018/EN-US"><span style="color:#0563c1;">982018</span></a></td>
<td width="681">An update that improves the compatibility of Windows 7 and Windows Server 2008 R2 with Advanced Format Disks is available</td>
<td>X</td>
<td>X</td>
</tr>
</tbody>
</table>
<p><span>&nbsp;</span></p>
<p><span>By the way, fantastic work for all those involved, and you know who you are, that pushed to get that Post-SP1 <span>rollup</span> out.&nbsp; That <span>rollup</span> can be applied to Windows 7 as well as Windows Server 2008 R2.&nbsp; If nothing else, I highly recommend 2775511 be evaluated as an across-the-board standard for Windows 7 or Windows Server 2008 R2.&nbsp; There will continue to be fixes for Windows 7 and Windows Server 2008 R2 until they reach end of support, so I may append the list above as I come across new fixes that are very important.</span></p>
<p>Thank you for reading.</p>
<p>Sincerely,</p>
<p>Robert M. Smith<br />Senior Premier Field Engineer, Microsoft</p>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Analyzing Storage Performance using the Windows Performance Analysis ToolKit (WPT)</title>
      <link>https://docs.microsoft.com/archive/blogs/robertsmith/analyzing-storage-performance-using-the-windows-performance-analysis-toolkit-wpt</link>
      <pubDate>Tue, 07 Feb 2012 16:41:00 GMT</pubDate>
      <dc:creator><![CDATA[Robert Smith, PFE]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/robertsmith/2012/02/07/analyzing-storage-performance-using-the-windows-performance-analysis-toolkit-wpt/</guid>
      <description><![CDATA[Introduction
Performance problems, especially as they may relate to the storage subsystem, can be...]]></description>
      <content:encoded><![CDATA[<h2>Introduction</h2>
<p style="padding-left: 30px;">Performance problems, especially as they may relate to the storage subsystem, can be quite difficult to troubleshoot.&nbsp; Enterprise storage technology has come a long way since the SCSI controller with an array of disks.&nbsp; Fortunately, there are some great tools available to help narrow down where to look more closely for storage performance problems.&nbsp; This blog post covers the Windows Performance Analysis Toolkit (WPT), as used for analyzing performance in the storage subsystem.</p>
<p style="padding-left: 30px;">The facility that enables the analysis I am about to cover is called "Event Tracing for Windows" (ETW).&nbsp; The Performance Analyzer is built on top of the ETW infrastructure. ETW enables Windows and applications to efficiently generate events, which can be enabled and disabled at any time without requiring system or process restarts. ETW collects requested kernel events and saves them to one or more files referred to as "trace files" or "traces." These kernel events provide extensive details about the operation of the system. Some of the most important and useful kernel events available for capture and analysis are context switches, interrupts, deferred procedure calls, process and thread creation and destruction, disk I/Os, hard faults, processor P-State transitions, and registry operations, though there are many others.</p>
<p style="padding-left: 30px;">One of the great features of ETW, supported in WPT, is the support of symbol decoding, sample profiling, and capture of call stacks on kernel events. These features provide very rich and detailed views into the system operation. WPT also supports automated performance analysis. Specifically, <span style="font-family: Courier New;">xperf</span> is designed for scripting from the command line and can be employed in automated performance gating infrastructures (it is the core of Windows PerfGates). <span style="font-family: Courier New;">xperf</span> can also dump the trace data to an ANSI text file, which allows you to write your own trace processing tools that can look for performance problems and regressions from previous tests.</p>
<p style="padding-left: 30px;">The following information will be mostly about the WPT tool called "<em><strong>Xperf.exe</strong></em>".&nbsp; Xperf.exe is the command line tool used to start, stop, and manage traces.&nbsp; The usage of Xperf.exe is documented thoroughly in the help file included with the WPT titled "<em>WindowsPerformanceToolkit.chm</em>".</p>
<h2><span style="font-size: medium;">Obtaining the WPT Tools</span></h2>
<p><span style="font-size: small;">The WPT comes with the Windows Software Development Kit (SDK), which is a free download</span></p>
<p style="padding-left: 60px;"><span style="color: #003366; font-size: small;"><strong>Microsoft Windows SDK for Windows 7 and .NET Framework 4</strong><br /></span><span style="font-size: small;"><a href="https://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=8279">https://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=8279</a></span></p>
<p><span style="font-size: small;">You can install just the WPT from the SDK using the custom installation option.&nbsp; You can also choose to just download the WPT as a Windows Installer file (.MSI) in case you need to install that later on other machines.&nbsp; The .MSI packages are delivered under the section called "Redistributable" components.&nbsp; There will be 3 .MSI files, one per machine type architecture (x64, IA64, and x86).</span></p>
<p><span style="font-size: small;">One important thing to note about the WPT.&nbsp; <em>You can capture a trace from a running production computer without making any changes to that computer.&nbsp;</em> That is, you do not need to install the SDK, nor the .MSI package.&nbsp; You can install the WPT on a different machine, even a virtual machine.&nbsp; Then you can just copy the files, folder, and sub-folders to the production machine.&nbsp;<em> In fact, you really don't need to copy all the files to the production machine,&nbsp;just the analysis machine</em>.&nbsp; The following blog has documented that you need just two application files; Xperf.exe and Perfctrl.dll:</span></p>
<p style="padding-left: 60px;"><span style="color: #003366; font-size: small;"><strong>Xperf Articles:</strong></span><br /><a href="https://blogs.msdn.com/b/pigscanfly/archive/2008/03/15/xperf-articles.aspx">https://blogs.msdn.com/b/pigscanfly/archive/2008/03/15/xperf-articles.aspx</a></p>
<h2><span style="font-size: medium;">More About the WPT</span></h2>
<p style="padding-left: 60px;"><span style="color: #003366; font-size: small;"><strong>Windows Performance Analysis Tools</strong></span><br /><span style="font-size: small;"><a href="https://msdn.microsoft.com/en-us/performance/cc825801.aspx">https://msdn.microsoft.com/en-us/performance/cc825801.aspx</a></span></p>
<p>WPT and XPerf utilize Event Tracing for Windows to record system activity that can later be used for performance analysis.&nbsp; Here is more about Event Tracing for Windows:</p>
<p style="padding-left: 60px;"><span style="color: #003366; font-size: small;"><strong>About Event Tracing</strong></span><br /><a href="https://msdn.microsoft.com/en-us/windows/hardware/gg487334">https://msdn.microsoft.com/en-us/windows/hardware/gg487334</a></p>
<p style="padding-left: 60px;">CL16: Performance Analysis Using the Windows Performance Toolkit<br /><a href="https://ecn.channel9.msdn.com/o9/pdc09/ppt/CL16.pptx">https://ecn.channel9.msdn.com/o9/pdc09/ppt/CL16.pptx</a></p>
<p>In fact, the blog above has great information about getting started.&nbsp; The only other real "best practice" would be to use the same version of Xperf for the respective architecture (x64 for x64, x86 for 32-bit, IA-64 for Itanium).</p>
<h3>Getting Started: Capturing Storage Performance Data</h3>
<h4><strong><span style="font-size: small;">Scenarios</span></strong></h4>
<p>Here are scenarios that you would use the WPT:</p>
<ul>
<li>Start the trace from a batch file, based on anticipated load.&nbsp; For example, the storage seems sluggish at a particular time, so a trace is started at that time, run for some period of time, and then stopped.</li>
<li>Run a trace in "circular mode", which means the trace runs all the time, but is limited to a pre-determined size.&nbsp; The pre-determined size might be 1 GB, which on most system allows a good time "window", though the size is impossible to predict.&nbsp; 1 GB might be 30 minutes on 1 system or 10 on another, depending on number of Logical Units (LUs), workload, etc.&nbsp; And, you can certainly make the trace larger, just keep in mind the analysis machine and the time it takes to load and process the resulting trace file.</li>
</ul>
<h4><strong><span style="font-size: small;">Considerations for Starting a Trace</span></strong></h4>
<p>Once you get the files copied to the target server, or the WPT installed, you can start a trace easily by going to an "administrator" .CMD prompt and running:</p>
<table border="0">
<tbody>
<tr>
<td style="padding-left: 30px;"></td>
<td>
<table style="border-width: 2px; border-color: #74788b; width: 200px; height: 22px; background-color: #000000;" border="2" summary="Xperf Start Command">
<tbody>
<tr>
<td>
<p><strong><span style="color: #ffffff; font-family: courier new,courier;">C:\Temp&gt;Xperf -on diag</span></strong></p>
<p><strong><span style="color: #ffffff; font-family: courier new,courier;">C:\Temp</span></strong></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p style="padding-left: 30px;">If you run that command and get no feedback, you are capturing a trace.&nbsp; You will only get feedback if there is an error or if a "kernel" trace is already running, as is the case with the following example:</p>
<table style="width: 741px;" border="0">
<tbody>
<tr>
<td style="padding-left: 30px;"></td>
<td>
<table style="border: 2px solid #74788b; width: 705px; background-color: #000000;" border="2" summary="Xperf Start Command">
<tbody>
<tr>
<td>
<p><strong><span style="color: #ffffff; font-family: courier new,courier;">C:\Temp&gt;Xperf -on diag<br /><span style="color: #ff0000;">xperf: error: NT Kernel Logger: Cannot create a file when that file already exists. (0xb7).</span></span></strong></p>
<p><strong><span style="color: #ffffff; font-family: courier new,courier;">C:\Temp&gt;</span></strong></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>From this point, the trace captures to&nbsp;buffers in memory and periodically flushes the trace information to a disk file.&nbsp; One thing to keep in mind is that the Xperf process does have a small amount of overhead of RAM for buffers, CPU for processing the trace events, and storage performance and space&nbsp;for the target disk device.&nbsp; The output from Xperf can be directed to a particular location.&nbsp; Generally you are safe to start&nbsp; your trace in the same volume as your operating system is installed, or some other volume other than the one being analyzed.&nbsp; You can start your trace on a different drive, or use the "-f &lt;location&gt;" parameter to redirect the WPT output.</p>
<p>NOTE:&nbsp; There are many different components that you can trace using Xperf.&nbsp; For storage performance analysis, here are some suggested ways to start Xperf, along with the charts available in the resulting traces:</p>
<p style="padding-left: 30px;"><strong><span style="font-family: courier new,courier;">xperf -on FileIO+Latency+DISK_IO+DISK_IO_INIT+SPLIT_IO</span></strong><br /><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8270.XperfView_LTC_DIO_DIOI_SIO.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8270.XperfView_5F00_LTC_5F00_DIO_5F00_DIOI_5F00_SIO.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8270.XperfView_LTC_DIO_DIOI_SIO.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8270.XperfView_5F00_LTC_5F00_DIO_5F00_DIOI_5F00_SIO.png" width="875" height="575" /></a></p>
<p style="padding-left: 30px;"><strong><span style="font-family: courier new,courier;">Xperf -on FileIO+DISK_IO+DISK_IO_INIT+SPLIT_IO<br /></span></strong><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/5483.XperfView_FIO_DIO_DIOI_SIO.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/5483.XperfView_5F00_FIO_5F00_DIO_5F00_DIOI_5F00_SIO.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/5483.XperfView_FIO_DIO_DIOI_SIO.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/5483.XperfView_5F00_FIO_5F00_DIO_5F00_DIOI_5F00_SIO.png" width="873" height="571" /></a></p>
<p>The differences in the above commands are the result of parameters passed in to Xperf when starting a trace.&nbsp; There are many different parameters that can be used to start a trace.&nbsp; The parameter above, &ldquo;diag&rdquo;, is a group (kernel group)&nbsp;of commonly used parameters.&nbsp; Here is the list of kernel groups available with the 7.1 WPT version of Xperf:</p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">Kernel Groups:</span></p>
<p style="padding-left: 30px;"><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Base&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+MEMINFO</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Diag&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER+COMPACT_CSWITCH</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DiagEasy&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Latency&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PROFILE</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FileIO&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+FILE_IO+FILE_IO_INIT</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; IOTrace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+CSWITCH</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ResumeTrace&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+PROFILE+POWER</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SysProf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+PROFILE</span><br /><span style="font-family: courier new,courier;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Network&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : PROC_THREAD+LOADER+NETWORKTRACE</span></p>
<p>The main advantage of gathering one set of parameters versus another is that you have more information to drill down into by adding the &ldquo;latency&rdquo; kernel group flag.&nbsp; The down-side will be larger overall trace size, and a bit more overhead on the system being measured as the traces are running.</p>
<p><strong><span style="font-size: small;">Stopping a Trace</span></strong></p>
<p>When you are ready to stop a trace, you can easily stop with the "-stop" parameter of Xperf.exe.&nbsp; In&nbsp;nearly all&nbsp;cases however, I would recommend using the "<strong>-d</strong>" parameter to stop (<em>and merge</em>) a trace.&nbsp; The only time you wouldn't be concerned would be if the trace and analysis computer were the same computer.</p>
<table border="0">
<tbody>
<tr>
<td style="padding-left: 30px;"></td>
<td>
<table style="width: 261px; height: 76px; background-color: #000000;" border="2" summary="Xperf Start Command">
<tbody>
<tr>
<td>
<p><span style="color: #ffffff; font-family: courier new,courier;"><strong>C:\Temp&gt;Xperf -d kernel.etl<br />Merged Etl: kernel.etl</strong></span></p>
</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<p>The difference between the two parameters is that "-stop" simply stops the capture and flushes everything to disk, while "-d" does the same but merges additional information about the current system into that trace.&nbsp; The benefit of using "-d" is that the trace is now portable, meaning you can copy that to a different machine and perform analysis there.&nbsp; This is what happens most of the time with production systems, because we usually don't want to be analyzing traces on servers that are busy doing production work.</p>
<p>One consideration when stopping a trace is the file name.&nbsp; You will probably want to keep the suffix the same (.ETL), but you may want to name the trace file to include the computer name, date, time, or other aspects of the trace.&nbsp; This just helps later if you have multiple trace files to manage from multiple systems.</p>
<p>Another consideration is identifiable information in the trace.&nbsp; When traces are taken, items are recorded such as computer names, file names, paths, etc.&nbsp; This is just an additional consideration.&nbsp; One way to get the recorded data and scrub out private information is to export to a file from the trace, and then filter or delete from your second analysis tool, such as Excel.&nbsp; There are other ways to accomplish the data scrub if needed, such as PowerShell scripts, LogParser, etc.</p>
<h3><strong>Trace Analysis</strong></h3>
<p>There are&nbsp;two different&nbsp;ways to initiate trace analysis with the WPT; command line or GUI.&nbsp; With the GUI tool, you can start the trace viewer by running "Xperfview.exe" from the Start menu, then from the tool called "Windows Performance Analyzer", click File, then click Open, and then browse to the trace file being analyzed.&nbsp; If you prefer the command line, run "Xperf &lt;filename.etl&gt;".&nbsp; If you run Xperf from an "administrator" level .CMD prompt, you will get the following message pop-up:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3487.Xperf_PopUp.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3487.Xperf_5F00_PopUp.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3487.Xperf_PopUp.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3487.Xperf_5F00_PopUp.png" width="482" height="199" /></a></p>
<p>Clicking Yes will allow the trace processing to continue, clicking No will terminate the trace processing at that point.&nbsp; Once the trace begins to load in the trace tool, you will see activity as the trace processing moves through it's phases:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/7103.Xperf_PopUp2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/7103.Xperf_5F00_PopUp2.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/7103.Xperf_PopUp2.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/7103.Xperf_5F00_PopUp2.png" width="318" height="182" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/4431.Xperf_PopUp2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/4431.Xperf_5F00_PopUp2.png"></a></p>
<p>Once the trace is fully loaded, you will see the trace depicted graphically in the Xperfview tool.&nbsp; For storage performance analysis, you can get down to I/O by starting at the "Disk I/O" chart, as shown below in a sample trace:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/7750.XperfView1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/7750.XperfView1.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/7750.XperfView1.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/7750.XperfView1.png" width="0" height="0" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/6320.XperfView1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/6320.XperfView1.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/6320.XperfView1.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/6320.XperfView1.png" width="848" height="612" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3618.XperfView1.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3618.XperfView1.png"></a></p>
<p>From the screen capture above, and in the DIsk I/O chart context, you have the following elements:</p>
<ul>
<li><strong>X-Axis:</strong> This is the horizontal "time" line, which is from the time the trace initiated until the trace capture stopped (in seconds)</li>
<li><strong>Y-Axis:&nbsp;</strong> The value of the vertical Y-axis will change depending on this chart you are viewing.&nbsp; In the first example above, you can see I/O counts.</li>
<li><strong>Top-Right "flyout":</strong> (downward pointing arrow to the right in the&nbsp;bar labeled "IO Counts") Changes with chart. In the top example, this is I/O Counts with red being read I/O and the blue being write I/O<br />Clicking once will open the flyout, clicking again will close the flyout.</li>
<li><strong>Left middle "flyout":</strong> (right pointing arrow midway up the left side of the chart) This is the "Frame List", and allows you to select or deselect charts for immediate viewing in the Xperfview tool.<br />Clicking once will open the flyout, clicking again will close the flyout.</li>
</ul>
<p>Here is the same chart as shown above, with both flyouts open:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/5164.XperfView1a.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/5164.XperfView1a.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/5164.XperfView1a.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/5164.XperfView1a.png" width="849" height="613" /></a></p>
<p>At this point, we will drill down into the data.&nbsp; Point your mouse cursor to a section of the top-most chart, left-click and hold, and then swipe the mouse right to select an area to drill down into.&nbsp; Your selection may look something like this:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3005.XperfView2.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3005.XperfView2.png"><img style="border: 0px currentColor;" alt="ETW trace, loaded in the Xperf Viewer, showing Disk I/O chart" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3005.XperfView2.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3005.XperfView2.png" width="781" height="609" /></a></p>
<p>Now, point the mouse cursor to any part of the shaded area of the "Disk I/O" chart, right-click, and you will have a context menu pop-up with additional actions available:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/0358.XperfView11_detailgraph.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/0358.XperfView11_5F00_detailgraph.png"></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8838.XperfView11_detailgraph.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8838.XperfView11_5F00_detailgraph.png"><img style="border: 0px currentColor;" alt="Xperfview, Disk IO chart, with right-click menu and &quot;Detail Graph&quot; highlighted" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8838.XperfView11_detailgraph.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8838.XperfView11_5F00_detailgraph.png" width="0" height="0" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/4722.XperfView3.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/4722.XperfView3.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/4722.XperfView3.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/4722.XperfView3.png" width="0" height="0" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8130.XperfView11_detailgraph.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8130.XperfView11_5F00_detailgraph.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8130.XperfView11_detailgraph.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8130.XperfView11_5F00_detailgraph.png" width="780" height="611" /></a></p>
<p>For our purposes, point to the option called "Detail Graph", and then left-click Detail Graph to open a new chart that looks like the following:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/7433.XperfView4.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/7433.XperfView4.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/7433.XperfView4.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/7433.XperfView4.png" width="743" height="542" /></a></p>
<p>This new chart is called the "Disk I/O Detail" chart.&nbsp; The first thing that stands out is the visual representation of the I/O on the disk during this trace sample.&nbsp; For example, you can quickly spot trends such as sequential I/O, random I/O, or concurrent I/O with mixed workloads such as sequential and random at the same time on the same disk</p>
<p>The various elements of this chart are as follows:</p>
<ul>
<li>Detail about the disk on the left pane</li>
<li>Left-upper pane drop-down, under the section called "Physical Disk".&nbsp; This allows you to change the view to a different physical disk</li>
<li>Upper-right side flyout titled "Process Name".&nbsp; Clicking this allows you to select and deselect I/O from various process that were running at the time the trace was captured.</li>
<li>X-Axis (time):&nbsp; This is the time, in seconds, of the area previously selected when we swiped to select an area of the previous chart for analysis.</li>
<li>Y-Axis (Offset):&nbsp; This is the offset from the beginning of the physical disk, to the end of the physical disk.<br /><strong>NOTE:</strong> The Offset value next to the color-chart is decimal, and the Offset value in the information pane on the left side is in hexadecimal.</li>
</ul>
<p>Next, choose the "Physical Disk" that you would like to analyze.&nbsp; in the example above, there is a "Disk 0 - Intel...".&nbsp; Next to that you will see a down-arrow.&nbsp; Click the down-arrow and you can click to view a different physical disk:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/0576.XperfView5.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/0576.XperfView5.png"><img style="border: 3px solid gray;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/0576.XperfView5.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/0576.XperfView5.png" width="215" height="310" /></a></p>
<p>From here, clicking a different disk, such as "Disk 1", will change the chart to reflect the new disk selection.&nbsp; You will get information about the disk, as well as the partitions on the disk.&nbsp; The graphical view is a depiction of the disk and the I/O that occurred during the sample interval, with time going left to right and location of I/O on the disk going bottom to top.&nbsp; In this example, the trace interval was 700 seconds, and there were 2 concurrent workloads to relatively small files, concurrently.&nbsp; There was one file on a partition with drive letter "D", and another file on a second partition with drive letter "G".&nbsp; For a concurrent workload like that, you would normally expect there to be some penalty involved with disk seek, as would be the case with rotational disk drives.&nbsp; But this test was performed using a Solid-State Drive (SSD), so there is no seek penalty.</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8546.XperfView6.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8546.XperfView6.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8546.XperfView6.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8546.XperfView6.png" width="743" height="542" /></a></p>
<p>Now, point to an area of the chart above, somewhere towards the left side of the graph, left-click, hold, and swipe right to highlight a section of this graph to analyze further.&nbsp; Your selection may look something like this:</p>
<p style="padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/6607.XperfView7.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/6607.XperfView7.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/6607.XperfView7.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/6607.XperfView7.png" width="743" height="542" /></a></p>
<p>The next image depicts Xperf with the partition information expanded (click the plus-sign next to partition to expand) and the "right-click" context menu.with "Summary Table" highlighted:</p>
<p style="text-align: left; padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/2313.XperfView8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/2313.XperfView8.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/2313.XperfView8.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/2313.XperfView8.png" width="744" height="545" /></a><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/8836.XperfView8.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/8836.XperfView8.png"></a></p>
<p style="text-align: left;">On the context menu, click the option called "Summary Table" to open a new window, which is a detail view of the I/O that took place during the interval of the sample selection.&nbsp; Your chart might look like this:</p>
<p style="text-align: left;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3857.XperfView9.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3857.XperfView9.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3857.XperfView9.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3857.XperfView9.png" /></a></p>
<p style="text-align: left;">This is a table, that is the result of every I/O from the sample that we drilled down into from step 1.&nbsp; Recall that the first step we chose maybe all, or maybe part of that first chart.&nbsp; Then in the second step we once again had a choice to select the entire chart, or only&nbsp;a portion.&nbsp; This table contains a wealth of information about the I/O that occurred during the trace collection.</p>
<p style="text-align: left;">The elements of this table are as follows:</p>
<ul>
<li>
<div style="text-align: left;">Each line represents a single I/O, numbered based on the number of I/O in this sample interval</div>
</li>
<li>
<div style="text-align: left;">Each column contains information relevant to that I/O</div>
</li>
<li>
<div style="text-align: left;">You can sort the table by the column of your choice.&nbsp; The sample above is sorted by "Complete Time", which will display the trace I/O top to&nbsp;bottom, via time of I/O completion.&nbsp; You could for example click the column header "QD/I", and then you could see what was going on at various points with respect to I/O queueing.</div>
</li>
</ul>
<table style="border-width: 2px; border-style: solid; width: 596px; height: 354px;" border="2" cellpadding="1" frame="border">
<tbody>
<tr>
<td><strong>&nbsp;Line</strong></td>
<td>Line number of the individual I/O</td>
</tr>
<tr>
<td><strong>&nbsp;IO Type</strong></td>
<td>Read, Write, or Flush</td>
</tr>
<tr>
<td><strong>Complete Time</strong></td>
<td>(<em>Milliseconds</em>) Time of I/O completion, relative to start and stop of the current trace.<br /> (not clock time and not overall I/O completion time)</td>
</tr>
<tr>
<td><strong>IO Time</strong></td>
<td>(<em>Microseconds</em>) Amount of time the I/O took to complete, based on timestamps in the IRP header for creation and when the IRP is completed.&nbsp; These measurements come from the partition manager level in the Windows kernel.</td>
</tr>
<tr>
<td><strong>Disk Service Time</strong><br />(micro-seconds)</td>
<td>
<p>(<em>Microseconds</em>) An inferred duration the I/O has spent on the device, based on several&nbsp;assumptions:<br />-&nbsp; A single I/O in flight<br />-&nbsp; No I/O delay if the disk is available<br />-&nbsp; A single disk service time interval per I/O, tucked at the end of the I/O time interval, and<br />-&nbsp; Disk service time of another I/O completion<br />The disk service time interval spans (backwards in time) from the completion of the I/O back to the latest preceding completion of some other I/O on the same physical disk or the initialization of the I/O, <em>whichever is later</em>.</p>
<p>Disk service time is a valuable measurement but has limitations.&nbsp; There can be multiple I/O in flight, I/O issuing delays (low-priority I/O), I/O reordering below the partition manager, etc.</p>
</td>
</tr>
<tr>
<td><strong>QD/I</strong><br />Queue Depth at Init</td>
<td>Queue depth for that disk, irrespective of partitions, at the time this I/O request initialized</td>
</tr>
<tr>
<td><strong>IO Size</strong><br />(bytes)</td>
<td>Size of this I/O, in bytes.</td>
</tr>
<tr>
<td><strong>Min Offset</strong></td>
<td>Relative location of this I/O, from beginning of the disk, based on Logical Block Address (LBA)</td>
</tr>
<tr>
<td><strong>Process Name</strong></td>
<td>If known, the name of the process that owns the thread that initiated this I/O.&nbsp; Getting the process name depends on what flags you use when you start the trace.</td>
</tr>
<tr>
<td><strong>Thread ID</strong></td>
<td>Thread identification number.</td>
</tr>
<tr>
<td><strong>Path</strong></td>
<td>Path and file name, if known, that is the target of this I/O.</td>
</tr>
</tbody>
</table>
<div style="text-align: left;">&nbsp;</div>
<h4 style="text-align: left;"><strong>What to Look For</strong></h4>
<div style="text-align: left;">&nbsp;</div>
<div style="text-align: left;">&nbsp;Right away you get information on the bottom status bar of how many I/O are in this sample, and of those, how many are reads and how many are writes.&nbsp; There are other types of I/O, such as flushes that might be found in a trace.&nbsp; You can look at disk queuing and find out if queuing is impacting performance.&nbsp;</div>
<p style="text-align: left; padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/5633.XperfView12_DiskSumTbl.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/5633.XperfView12_5F00_DiskSumTbl.png"><img style="border: 0px currentColor;" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/5633.XperfView12_DiskSumTbl.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/5633.XperfView12_5F00_DiskSumTbl.png" /></a></p>
<p style="text-align: left;">In this sample we see a&nbsp;read I/O that took around&nbsp;130 ms to complete, which is not very good.&nbsp; We can see from the column QD/I that the disk queue length at this time was 508, and the inferred time spent waiting on hardware was .282 millisecond.&nbsp; On an SSD drive, .282 ms I/O time is&nbsp;pretty common.&nbsp; On a rotational drive, you would see similar response times at various points in your trace..&nbsp;&nbsp;If you were viewing a trace from a rotational disk, and you see&nbsp;sub-millisecond response time, you can conclude that this I/O was serviced by cache at some point, either the cache directly on the disk, or cache on a storage controller somewhere.&nbsp; What we can conclude from this I/O was the&nbsp;slow response time was the result of too many I/O being sent at one time, perhaps from a multi-threaded application,&nbsp; You might see something like that from a stored procedure in a database application,&nbsp;a log checkpoint, or a simultaneous burst of I/O on an already busy disk.</p>
<p style="text-align: left;">At this point what you want to look for is the length of this event.&nbsp;&nbsp;We need to determine whether this was a short-lived event that we&nbsp;might possibly tolerate, or was this a sustained event that resulted in poor storage performance for a length of time.&nbsp; In the case above, I was running stress on a disk&nbsp;just to see how many I/O I could build up and you can see&nbsp;the result.&nbsp;&nbsp;At some point you will&nbsp;cross the threshold of poor performance by adding more and more concurrent I/O.&nbsp; This is one of the many great uses of this table view of all the I/O.&nbsp; I can line up the I/O&nbsp;based on response time, and then I can just determine how many of those I/O cross&nbsp;the boundary to poor I/O performance.&nbsp;&nbsp;Here is an example:</p>
<ol>
<li>
<div style="text-align: left;">Start by clicking the column header called 'IO Time (us)".&nbsp; This will sort the I/O by overall&nbsp;I/O completion time.</div>
</li>
<li>
<div style="text-align: left;">Scroll down until you reach the threshold of performance from say "great" to good".&nbsp; This might be where we cross the line from under&nbsp;10 ms to over 10 ms.</div>
</li>
<li>
<div style="text-align: left;">Add up the total number of I/O</div>
</li>
<li>
<div style="text-align: left;">Divide the line number of&nbsp;the threshold into the overall total number of I/O.&nbsp; For example:</div>
</li>
</ol>
<p style="text-align: left; padding-left: 30px;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3000.XperfView13_DiskSumTbl_perfthreshold.png" original-url="https://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3000.XperfView13_5F00_DiskSumTbl_5F00_perfthreshold.png"><img style="border: 0px currentColor;" title="Figure 12" alt="Disk Summary Table with I/O sorted by IO Time" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/76/30/3000.XperfView13_DiskSumTbl_perfthreshold.png" original-url="https://blogs.technet.com/resized-image.ashx/__size/0x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-76-30/3000.XperfView13_5F00_DiskSumTbl_5F00_perfthreshold.png" width="904" height="211" /></a><br />&nbsp;<strong>Figure 12</strong>. Disk Detail&nbsp;Summary Table with I/O sorted by IO Time</p>
<p style="text-align: left;">In Figure 12 the areas to sort on are highlighted.&nbsp; Starting at the top and going counter-clockwise, I/O Time, Line Number, Total number of reads, total number of writes are all circled.&nbsp; Add reads and writes to get 3,840,592.&nbsp; Divide your total IO (3,840,592) by the line number (2,063,791) and the result is 0.537 (and change).&nbsp; From this we could conclude that 53.7% of our I/O in this sample completed in less than 10 ms.&nbsp; Or we could conclude that 46.3% of our I/O took more than 10 ms.</p>
<p style="text-align: left;">We then go back to our storage performance requirements.&nbsp; We might require that 90% of our I/O complete in less than 10 ms.&nbsp; The conclusion from this trace sample would then be that the storage subsystem does not meet our performance requirements based on the workload that the storage subsystem experienced during this trace sample.</p>
<h3 style="text-align: left;">What are We Doing Here?</h3>
<p style="text-align: left;">Probably the first thing people want to know when troubleshooting storage performance is what to blame.&nbsp; Is it the storage?&nbsp; Is it the operating system?&nbsp; Is it the application?&nbsp; What performance measurement tools can help determine is <strong><em>where to start looking</em></strong>.&nbsp; If for example we see a high number of I/O that take more than 10 ms to complete outright, as evidenced by the "Disk Service Time" statistics, we can&nbsp;conclude what side of the Partition Manager (PartMgr) the problem resides.&nbsp; There are still a few Windows components left after PartMgr and before we hand off to the hardware.&nbsp; If we determine that I/O is building up (queuing), overall I/O completion time is high but disk service time is low, then we can look towards the operating system side for our efforts.</p>
<h3 style="text-align: left;">High Disk Service Times</h3>
<p style="text-align: left;">There are numerous reasons why Disk Service Time numbers might be high:</p>
<ul>
<li>
<div style="text-align: left;">Direct-Attached Storage</div>
</li>
<ul>
<li>
<div style="text-align: left;">Storage subsystem is not keeping up with load</div>
</li>
<li>
<div style="text-align: left;">Partition Misalignment for RAID disks</div>
</li>
<li>
<div style="text-align: left;">Failing component in storage subsystem</div>
</li>
</ul>
<li>
<div style="text-align: left;">Storage Area Network (SAN)</div>
</li>
<ul>
<li>
<div style="text-align: left;">Sending too many I/O at one time</div>
</li>
<li>
<div style="text-align: left;">Too many hosts per fabric port</div>
</li>
<li>
<div style="text-align: left;">Too many hosts per storage port</div>
</li>
<li>
<div style="text-align: left;">Failing component(s) in SAN fabric</div>
</li>
</ul>
</ul>
<p style="text-align: left;">Recommendations:</p>
<ul>
<li>
<div style="text-align: left;">Lighten load, or spread out load over time</div>
</li>
<li>
<div style="text-align: left;">Add disk devices</div>
</li>
<li>
<div style="text-align: left;">Ensure partitions are aligned (<a title="Disk performance may be slower than expected" href="https://support.microsoft.com/kb/929491" target="_blank">Microsoft KB 929491</a>)</div>
</li>
<li>
<div style="text-align: left;">Enable Storport tracing to confirm slow I/O below the Storport layer, which is the last layer of Microsoft software in the storage "stack" before passing the I/O to the hardware miniport driver.&nbsp; Storport hands I/O to the storage hardware driver, be that Fibre Channel miniport, Storport miniport (direct-attached), or iSCSI hardware driver.&nbsp; See the section below on Storport tracing.</div>
</li>
<li>
<div style="text-align: left;">If SAN:</div>
</li>
<ul>
<li>
<div style="text-align: left;">Check statistics on fabric ports between this host and storage target.&nbsp; Look for:</div>
</li>
<ul>
<li>
<div style="text-align: left;">BUFFER_0 errors<br />Fibre Channel SAN switch ports use buffers to handle incoming and outgoing frames.&nbsp; There are a limited number of buffers per switch port.&nbsp; If a switch port runs out of buffers it will return a "BUFFER_0" error to sender and refuse I/O.&nbsp; As soon as a buffer is freed the port will return an idle frame indicating a free buffer.&nbsp; These errors are not returned up to OS, though they are visible to the host-bus adapter (HBA).&nbsp; By default, the HBA will probably not report or log an associated error, because these errors are presumed to be ephemeral in nature.&nbsp; There may be logging in the HBA that you can enable that will return BUFFER_0 errors.&nbsp; This extended logging will add overhead somewhere.</div>
</li>
<li>
<div style="text-align: left;">CRC errors<br />Indicated corruption within the frame</div>
</li>
<li>
<div style="text-align: left;">Enc errors<br />Indicates errors at the 8b/10b encoding level</div>
</li>
<li>
<div style="text-align: left;">Link Errors</div>
</li>
<li>
<div style="text-align: left;">Loss of signal</div>
</li>
<li>
<div style="text-align: left;">Loss of sync</div>
</li>
</ul>
<li>
<div style="text-align: left;">NOTE: The person troubleshooting doesn't necessarily have to understand what all the statistics means down to the specification, but just understand what is considered "normal" and what is not.&nbsp; Generally it is not normal to see a lot of CRC or ENC (encode) errors.&nbsp; This could indicate a hardware problem.&nbsp; The problem could be a SFP connector, it could be a bad fiber-optic cable.&nbsp; There have been cases where all the hardware checks out good, and the problem disappeared when changing the fiber-optic cable.&nbsp; In some cases a smudge on the end of the fiber cable was the root cause.&nbsp; There could also be dirt of debris on the inside of the SFP connector.&nbsp; These can be tough to track down, and sometimes require replacing hardware or a hardware analyzer trace to determine root cause.</div>
</li>
</ul>
</ul>
<h4 style="text-align: left;">Storport Tracing (For Storport storage devices)</h4>
<p style="text-align: left;">Storport.sys in the Windows storage port driver designed to handle IO requests for most storage devices <em>on servers</em>.&nbsp; PCs, laptops, and other computers that use SATA drives for example, or even SSD drives, probably are using the ATA port driver (Ataport.sys).</p>
<p style="text-align: left;">If the storage&nbsp;hardware in&nbsp;the server being measures uses a Storport driver, and is&nbsp;in some way suspected of poor performance, additional Storport tracing is available to report "slow" I/O.&nbsp; Storport ETW tracing has been available for a few years now.&nbsp; There is more information available on this topic in the following KB article:</p>
<p style="text-align: left; padding-left: 60px;">A hotfix is available that improves the logging capabilities of the Storport.sys driver to troubleshoot poor performance issues for the disk I/O in Windows Server 2008<br /><a href="https://support.microsoft.com/kb/979764">https://support.microsoft.com/kb/979764</a></p>
<p style="text-align: left;"><strong>NOTE:</strong> Microsoft hotfixes are cumulative.&nbsp; The tracing in hotfix 979764 is available in that fix, plus all subsequent fixes.&nbsp; And, that functionality would be rolled forward to any subsequent operating systems.</p>
<p style="text-align: left;">This additional tracing, which we would only want to enable during a troubleshooting session, will report I/O that took longer than xx ms to complete, as measured from the Storport level within the operating system.&nbsp; Storport.sys is the last layer of software in Windows that an IRP will pass through before being handed off to hardware, such as an HBA miniport driver.&nbsp; These events will be reported in the Windows event log.&nbsp; The ETW traces are great, but this is at a level lower than even the Xperf traces, so removes one or more layers in the storage "stack" as possible causes of I/O slowdown.</p>
<h3 style="text-align: left;">High IO Times</h3>
<p style="text-align: left;">There are numerous reasons why&nbsp;IO Time numbers might be high:</p>
<ul>
<li>
<div style="text-align: left;">Single jobs or applications sending too many I/O in short bursts</div>
</li>
<li>
<div style="text-align: left;">Concurrent jobs or applications&nbsp;sending too many I/O in short bursts</div>
</li>
<li>
<div style="text-align: left;">"Filter" drivers stalling I/O (intentionally or unintentionally)</div>
</li>
<ul>
<li>
<div style="text-align: left;">Anti-virus</div>
</li>
<li>
<div style="text-align: left;">Screening</div>
</li>
<li>
<div style="text-align: left;">Quota</div>
</li>
<li>
<div style="text-align: left;">Firewall</div>
</li>
<li>
<div style="text-align: left;">Multi-Path I/O</div>
</li>
<li>
<div style="text-align: left;">Windows "kernel" thrashing</div>
</li>
<ul>
<li>
<div style="text-align: left;">Trimming operations</div>
</li>
<li>
<div style="text-align: left;">Cache operations</div>
</li>
</ul>
<li>
<div style="text-align: left;">File/Object contention</div>
</li>
</ul>
<li>
<div style="text-align: left;">Volume Shadow Copy operations</div>
</li>
</ul>
<h3 style="text-align: left;">Conclusion</h3>
<p style="text-align: left;">The Windows Performance Analyzer Toolkit is a powerful addition to your tool set for analyzing storage performance.&nbsp; The uses of WPT go far beyond storage, but when it comes to storage, provide an extremely valuable tool to take a very close look at what is going on with I/O on your systems.</p>
<p style="text-align: left;">&nbsp;</p>]]></content:encoded>
    </item>
  </channel>
</rss>