<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[gOxiA=苏繁=SuFan Blog]]></title> 
<link>https://sufan.maytide.net/index.php</link> 
<description><![CDATA[gOxiA,苏繁,sufan,Microsoft MVP]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[gOxiA=苏繁=SuFan Blog]]></copyright>
<item>
<link>https://sufan.maytide.net/read.php/1894.htm</link>
<title><![CDATA[Windows 优化分析]]></title> 
<author>gOxiA &lt;sufan_cn@msn.com&gt;</author>
<category><![CDATA[Windows Client]]></category>
<pubDate>Fri, 22 Jun 2018 02:08:44 +0000</pubDate> 
<guid>https://sufan.maytide.net/read.php/1894.htm</guid> 
<description>
<![CDATA[ 
	<p><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/Windows-logo.png"><img width="430" height="98" title="Windows-logo" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="Windows-logo" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/Windows-logo_thumb.png" border="0"></a></p><p><font color="#fd3f0d" size="4"><strong>Windows 优化分析</strong></font></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows 计算机的性能和稳定性总是相互影响的。提升性能又兼顾稳定性，需要科学、反复的实践才能应对持续发展的复杂IT化境。而 Windows PC 性能的直观表现主要归为以下几个方面：</p><p>一、启动速度</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows PC 的启动速度，以秒为测量单位（实际监测和分析中可达到纳秒级），其对于用户的感知和体验尤为重要。排除硬件自身的启动过程（BIOS启动）所消耗的时间，加载操作系统到进入桌面欢迎界面，直到用户登录域能以正常响应速度进行操作，要经历一系列复杂的过程，涉及 PC 资源和模块的方方面面。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无论用户是否能切身感受到它，这一过程始终在一定的时间内持续进行。Windows 系统的启动过程，可参阅下图：<br/></p><p><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/1538.WindowsBootProcess.png"><img width="630" height="260" title="1538.WindowsBootProcess" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="1538.WindowsBootProcess" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/1538.WindowsBootProcess_thumb.png" border="0"></a></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入到AD域的Windows计算机上的操作系统启动和用户登录延迟，通常要耗费几十到上千秒。因为现实情况中存在许多原因，包括硬件性能，网络性能，IT添加的工作负载量，以及应用程序和操作系统组件中的低效率。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在OS初始化阶段，大部分操作系统工作都会发生。此阶段涉及内核初始化，即插即用活动，服务启动，登录和资源管理器初始化。操作系统初始化可以分为四个子阶段，每个子阶段都有独特的特征和性能漏洞。</p><p><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/BootPhases.png"><img width="630" height="163" title="BootPhases" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="BootPhases" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/BootPhases_thumb.png" border="0"></a></p><ul><li>子阶段1 – Pre Session Init（PreSMSS）：内核初始化<br/>PreSMSS子阶段在内核被调用时开始。在这个子阶段，内核初始化数据结构和组件。它还启动PnP管理器，该管理器初始化在OSLoader阶段加载的Boot_START驱动程序。</li><li>子阶段2 – Session Init（SMSSInit）：会话初始化<br/>当内核将控制传递给会话管理器进程（Smss.exe）时，SMSSinit子阶段开始。在此子阶段期间，系统将初始化注册表，加载并启动未标记为Boot_START的设备和驱动程序，并启动子系统进程。当控件传递给Winlogon.exe时，SMSSInit结束。</li><li>子阶段3 – WinLogon Init：Winlogon初始化<br/>当SMSSInit完成并启动Winlogon.exe时，WinlogonInit子阶段开始。在WinlogonInit期间，出现用户登录屏幕，服务控制管理器启动服务，并运行组策略脚本。当Explorer进程启动时，WinlogonInit结束。</li><li>子阶段4 – Explorer Init：资源管理器初始化<br/>ExplorerInit子阶段在Explorer.exe启动时开始。在ExplorerInit期间，系统创建桌面窗口管理器（DWM）进程，该进程初始化桌面并首次显示它。</li><li>Post Boot阶段<br/>PostBoot阶段包括桌面准备就绪后发生的所有后台活动。用户可以与桌面进行交互，但系统仍可能在后台启动服务，托盘图标和应用程序代码，这可能会影响用户对系统响应的感知。</li></ul><p>二、内存占用</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 从系统开机过程可以理解和认识到用户终端的性能取决于计算机的四个主要资源：内存、处理器、磁盘和网络。其中内存部分，微软Windows系统使用多种内存，具体可分为物理内存、提交内存、应用程序虚拟内存和内核虚拟内存。基于微软官方的性能计数器指标，可以指出每个响应资源的潜在问题，并通过Windows性能计数器识别最初的性能问题。</p><ul><li>物理内存，识别物理内存是否出现性能问题的最好办法，是监控“MemoryAvailable MBytes”，当其小于100MB或小于总物理内存的5%~10%，则计算机可能在物理内存上运行严重不足，出现性能问题。因为此时会增加系统对磁盘子系统的依懒性，如果磁盘子系统不堪重负，则可能发生系统范围的延迟。相反，如果它高于10%则可将物理内存用于磁盘缓存。系统具有的磁盘缓存越多，避免磁盘I/O的机会就越大。磁盘比物理内存慢得多，所以需要大磁盘缓存。（注意：较低的内存占用是理想的优化目标，但在可用内存不足的情况下并不好。）<br/><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/AvailableMBytes.png"><img width="630" height="432" title="AvailableMBytes" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="AvailableMBytes" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/AvailableMBytes_thumb.png" border="0"></a></li><li>提交内存，提交的字节数是提交虚拟内存量，以字节为单位。提交的内存是磁盘页面文件上保留了空间的物理内存。换句话说，它是由进程“使用”的内存。提交内存是操作系统可以用来存储数据的所有物理资源的总和，是内存和所有页面文件的总和。一旦所有的内存和所有的页面文件已满并且无法展开，那么系统已达到其提交限制。使用“MemoryCommitted Bytes In Use”大于75%，则计算机可能在物理资源（内存和/或页面文件）上运行不足。<br/><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/CommittedBytesInUse.png"><img width="630" height="440" title="CommittedBytesInUse" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="CommittedBytesInUse" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/CommittedBytesInUse_thumb.png" border="0"></a></li><li>&nbsp;&nbsp;&nbsp; 应用程序虚拟内存，Windows 中的每一个进程都有自己的专用虚拟地址空间。理想情况下，虚拟内存应用是大的难以想象，但事实是它是一个有限的资源。如果应用程序（用户模式）用完了虚拟内存，那么它可能会因内存不足异常而崩溃。要确定应用程序的最大虚拟地址空间，可使用以下命令确定应用程序虚拟内存的最大大小：<br/><div class="code">wmic PATH Win32_OperatingSystem GET MaxProcessMemorySize</div><br/>Windows 7 x64计算机的示例输出如下：<br/><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/MaxProcessMemorySize.png"><img width="630" height="410" title="MaxProcessMemorySize" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="MaxProcessMemorySize" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/MaxProcessMemorySize_thumb.png" border="0"></a><br/><br/><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MaxProcessMemorySize为8589934464，输出以千字节为单位，因此，这台Windows 7 x64计算机每个进程具有8TB的虚拟内存。如果应用程序（用户模式）的虚拟内存耗尽，即它接近MaxProcessMemorySize，那么它可能会因内存不足异常而崩溃。要判断虚拟内存不足，可通过“Process (*)Virtual Memory”，超过MaxProcessMemorySize的80%，那么应用程序很可能会用尽虚拟内存，并且如果无法为其下一次内存分配找到连续内存，可能会很快崩溃。此外，在虚拟内存概念中指出，进程并不知道物理硬件。每个进程都有自己的私有虚拟地址空间，这是有限数量的虚拟内存。这允许Windows操作系统更有效管理物理内存资源（内存和磁盘页面文件）。如果一个进程视图超过它的虚拟地址空间，那么它会因为内存不足出现异常而崩溃。每个进程的虚拟内存量取决于它是否编译为32位或64位。X86是Windows的32位实现；x64是Windows的64位实现。其中，x86进程默认具有2GB的虚拟地址空间；具有大量地址识别功能并在x64操作系统上运行的x86进程具有4GB的虚拟地址空间；x64进程具有8TB的虚拟地址空间。<br/></p></li><li>内核虚拟内存，内核也驻留在虚拟内存中，如果虚拟内存不足，则操作系统可能会挂起。内核有三个重要资源，即虚拟内存中的资源：系统页表条目（PTE），池分页和池非分页内存池。其中系统页面表条目提供了虚拟内存和物理内存之间的映射。使用“MemoryFree System Page Table Entries”进行监测，当小于10000，那么操作系统可能会遭受长时间的性能延迟。池分页和池非分页池用作操作系统和设备驱动程序用来存储其数据结构的内存资源。当它们无法分配内存时，操作系统可能会遭受长时间的性能延迟，通过对“MemoryPool Paged Bytes”或“MemoryPool NonPaged Bytes”的监测，当接近或超过其各自最大值的80%，则操作系统可能会遭受长时间的性能延迟。</li></ul><p>三、处理器占用</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 处理器（CPU）方面，当“Processor (_Total)%Processor Time”平均大于80%，则计算机可能正忙于处理资源调度。此外，处理器中还包含线程，即进程的工蜂，其以两种模式之一执行：用户模式或特权模式，可通过相关指标进行监测：“Process (*)%User Time” 和 “Process (*)%Privileged Time”，二者组成“Processor (_Total)%Processor Time”。其中，特权（内核）模式是在执行系统调用的Windows内核（如驱动程序、IRP（I/O请求数据包）、上下文切换等等）中花费的时间。如果操作系统花费超过特定模式的30%，那么这意味着它可能执行大量的I/O并且一个或多个驱动程序正在执行以管理该I/O。用户模式，是处理器花费在执行应用程序代码上的时间量，因此需要确定哪些进程消耗了大部分时间以及执行最多的函数调用。可通过用户进程的内核时间或“Processor (*)%User Time”进行识别。</p><p><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/UserTime.png"><img width="630" height="456" title="UserTime" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="UserTime" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/UserTime_thumb.png" border="0"></a></p><p>四、磁盘占用</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 终端磁盘不仅用于存储重要的数据，也是影响终端整体性能的关键因素之一。虽然目前磁盘容量已经非常大，但其硬件参数并不一定完全满足现实 IT 环境的性能需求。关键的磁盘性能指标如下：</p><ul><li> “LogicalDisk (*)Avg Disk Sec/Read”，以毫秒表示的值，因此在1秒样本取样中，将在1秒间隔内运行平均读取持续时间，并以毫秒为单位给出平均延迟时间。</li><li>“LogicalDisk (*)Avg Disk Sec/Write”，同上，但仅表示写入时间。</li></ul><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一般而言，这两个值始终应在生产 IT 环境中低于15ms（0.015秒），否则说明计算机可能存在磁盘性能问题。但是，这些阈值只是假定传输大小为64KB或更小的文件。如果要移动较大容量的文件，则需要调整预期值，此时就需要考虑Disk Bytes/sec和Disk Transfers/sec因素。此外，关于磁盘性能的任何讨论都不能通过其容量以及物理性能特征来完成。制造商列出了大部分重要或相关指标，以便进行产品比较。平均搜索时间、平均写入时间或平均读取时间，以及内部控制器上的缓存数量，旋转速度，支持的技术（如本地命令队列）和物理特征（如接口，盘片大小等）。</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如，一块希捷商用台式机驱动器。</p><ul><li> 自转速度为7200转；</li><li>持续的数据传输速率为138Mb/s；</li><li>平均延迟4.16ms；</li><li>随机读取寻道时间8.5ms；</li><li>随机写入寻道时间9.5ms；</li><li>I/O数据传输速率600MB/s。</li></ul><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该磁盘支持6Gb/秒的SATA接口，具有64MB板载高速缓存并具有2TB容量，转速是7200转。虽然其接口速度为6Gb/秒，但持续数据传输速率仅为138Mb/sec。就磁盘可以处理的负载而言，这是我们真正需要关注的数字。而这些参数的等待时间中，平均等待时间为4.16毫秒，随机（最差/典型情况下）读取和写入寻道时间均低于10毫秒。在Windows性能方面的含义，平均等待（延迟）意味着磁头需要这段时间将所需扇区放置在磁盘头下。读取和写入寻道时间是执行器将磁头移动到正确的刺刀进行读取或写入操作所用的时间。所以写入磁盘的平均传输时间应为13.66毫秒，读取为12.66毫秒。</p><p><a href="http://goxia.maytide.net/ftpup/2018/Windows-_7927/PhysicalDiskAveSecCounter.png"><img width="575" height="128" title="PhysicalDiskAveSecCounter" style="border: 0px currentcolor; border-image: none; display: inline; background-image: none;" alt="PhysicalDiskAveSecCounter" src="http://goxia.maytide.net/ftpup/2018/Windows-_7927/PhysicalDiskAveSecCounter_thumb.png" border="0"></a></p><p>五、网络</p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; “Network Interface(*)Output Queue Length”指标如果大于2，则表示网卡无法用足够快的速度将数据包发送到网络。这可能是网络存在延迟或瓶颈。</p>
]]>
</description>
</item>
</channel>
</rss>