租号玩代理申请
A-A+

Win7启动速度研究,同样的PC配置,机械盘、固态盘、无盘网络启动速度为何不同? By 死性不改

2020年11月21日 问题教程 暂无评论 阅读 171 次

一、环境:

一台台式机(映泰B85、i5-4590、16G内存、三星、Intel固态盘、Realtek网卡);

一台笔记本(T440P、8G内存、三星、Intel固态盘、Intel I217-LM网卡);

一个8口TP-LINK塑料外壳千兆交换机;

网维大师无盘2250版本;

二、起因:

1、系统问题反馈群里的凌风同学纠结本站提供的14Q4和15Q3启动速度有差别,14Q4的花瓣界面比15Q3的时间短大概2秒,我们很好奇为什么;

2、同样一台PC机,配置固定,BIOS版本及设置固定,为什么机械盘、固态盘、无盘启动的速度不同呢?

3、以上2个问题的延伸段,到底慢在哪里呢?

三、工具:

带着这些疑问,我在Windows ADK中找到了微软自家性能分析工具Windows性能分析器(Windows Performance Toolkit,简称WPT),之所以能知道这个工具,是因为做Win2012、Win10 GHOST系统时,需要使用Windows ADK……
Windows ADK下载器下载地址:http://www.microsoft.com/zh-cn/download/details.aspx?id=30652
该ADK支持:Windows 7, Windows 8, Windows Server 2008 R2, Windows Server 2008 R2 SP1, Windows Server 2012, Windows Vista

由于微软没提供adk的ISO,所以只能用下载器下载,你安装时,可以只选择下图的工具下载安装,这样速度会快一点;

win7启动速度研究

四、原理(知识有限,可能有误,欢迎大家指正):

以下中文内容主要来自以下2个网站,然后根据自己的理解又修改了一些,感谢分享这些内容的同学们;

http://blogs.technet.com/b/thoughts_on_platform/archive/2012/08/06/die-windows-startphasen.aspx

http://coregear.lofter.com/post/118e1a_2f1ecf

http://www.techsupportalert.com/content/windows-7-startup.htm(非常完整详细)

0、BIOS 阶段

按下开机按钮,BIOS进行自检并加载BIOS设置,这个引导过程结束时,会检测到一个有效的系统盘才能继续启动。

如果BIOS设置为有盘启动:BIOS嵌入式启动程序读取MBR主引导记录,DPT分区表,PBR分区引导记录,然后找到并启动Bootmgr启动管理器,Bootmgr读取BCD启动配置数据,然后根据BCD启动配置数据找到Winload.exe并启动它,然后由Winload.exe开始初始化并启动整个操作系统;

如果BIOS设置为无盘启动:PXE程序开始工作,初始化网卡,检测线路通断,DHCP获取客户机IP信息,TFTP传输无盘引导程序,然后由无盘引导程序加载Bootmgr.exe读取BCD启动配置数据,然后根据BCD启动配置数据找到 Winload.exe并启动它,然后由Winload.exe开始初始化并启动整个操作系统;

注1:不同的无盘实现原理略有差异,例如网维无盘是从服务器读取bootmgr,而其他无盘是读取img包里的bootmgr,这就是为什么其他无盘能换开机启动画面,但是网维无盘不能的原因,因为修改启动画面需要修改bootmgr……同时网维无盘的bootmgr是被修改过的,粗暴的替换可能导致无法启动……

注2:BIOS阶段的耗时WPT是捕获不到的;

微软把BIOS之后的系统启动过程分为以下5个阶段,使用Windows性能分析工具可以采集到这些信息,其实360之类的软件采集系统开机时间,也是通过这种方式实现的,根据一些资料,整理了一份启动阶段图标,从下面这张图,大概能看到启动时间消耗在什么地方;

win7启动速度研究

五、WPT工具的使用:

结合以上原理,我们可以初步通过WPT性能分析工具来对比下系统启动耗时,大概慢在什么地方;

第一步:将Superfetch和计划任务服务设置为自动,cmd内运行以下代码,然后重启计算机:

Reg Add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\SysMain /v Start /t REG_DWORD /d 2 /F
Reg Add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Schedule /v Start /t REG_DWORD /d 2 /F

第二部:捕获系统性能日志,cmd逐行执行以下代码,代码执行完成后,系统会自动重启;

cd\
cd "C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit"
xbootmgr.exe -trace boot

第三步:获得etl性能日志;

系统重启开机后,会弹出一个提示,直接点Finished即可,然后按alt+f4关闭程序;

到C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit目录可以拿到捕获日志:boot_BASE+CSWITCH_1.etl文件,可以直接双击打开;

我把这个文件拷贝到桌面打开了,下图为打开后的效果:

win7启动速度研究

System Activity:系统活动信息,各个启动阶段的性能信息等,非常丰富,我也只了解了一小部分;

Computation:cpu使用消耗;

Storage:磁盘使用消耗情况;

Memory:内存使用消耗情况;

六、案例分析:

当你大概会使用工具,初步了解原理后,你可以找一个快的和一个慢的系统对比原理部分将的5个环节耗时;

下面是我的笔记本作为客户机测试所得数据,左侧是SSD启动,右侧是无盘启动;

win7启动速度研究

从启动的过程分解步骤来看,时间主要是消耗在了Pre Session Init和Session Init阶段,然后根据io吞吐数据来看,无盘的主要瓶颈还是在数据读取上;

ssd读取数据的峰值可以达到450M/BS以上,而千兆无盘只能在理论的125MB/S以内,同时根据无盘的网络读取性能差异,实际上也只有50MB/S左右的峰值;

win7启动速度研究

当慢慢深入接触Windows之后,发现系统真的是极为复杂的一个东西,要想深入研究还是要花很多时间才行,所以这篇文章暂时就放在这里,作为一个“研究过”的记录吧!

本文作者:死性不改

京东空调大促销