惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
云风的 BLOG
云风的 BLOG
G
Google Developers Blog
S
SegmentFault 最新的问题
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
美团技术团队
爱范儿
爱范儿
博客园 - 三生石上(FineUI控件)
H
Hackread – Cybersecurity News, Data Breaches, AI and More
D
DataBreaches.Net
F
Fortinet All Blogs
TaoSecurity Blog
TaoSecurity Blog
D
Docker
C
Cybersecurity and Infrastructure Security Agency CISA
K
Kaspersky official blog
宝玉的分享
宝玉的分享
腾讯CDC
Google Online Security Blog
Google Online Security Blog
Recorded Future
Recorded Future
T
The Exploit Database - CXSecurity.com
T
The Blog of Author Tim Ferriss
V
V2EX
S
Securelist
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
Y
Y Combinator Blog
P
Proofpoint News Feed
T
Tor Project blog
AWS News Blog
AWS News Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The Last Watchdog
The Last Watchdog
博客园 - 聂微东
T
Threat Research - Cisco Blogs
B
Blog
Attack and Defense Labs
Attack and Defense Labs
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
阮一峰的网络日志
阮一峰的网络日志
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 司徒正美
H
Help Net Security
C
Cisco Blogs
C
Check Point Blog
S
Secure Thoughts

博客园 - 不可以

Framework 各版本比较对 在无IIS下用SharpDevelop进行Asp.net 开发 从程序集中读取流信息 fiddler 学习笔记 .net 拷贝方法 IPhone 应用程序管理 Subversion配置安装 使用Windows Live Writer写博客 xml操作学习 Oracle学习 windbg学习 在博客园添加Web Live Messenger对话框 java调用C#写的com组件 配置文件加入智能提示(Intellisense)功能 让相同的winform程序只启动一个 用户中心 - 博客园 用户中心 - 博客园 可以自由控制fileupload文本框与命令按钮之间的距离 去除左边数字行号工具
用xperf查看系统启动过程
不可以 · 2011-08-02 · via 博客园 - 不可以

背景

一直想了解windows启动时,执行了哪些操作,调用了哪些函数,好对系统启动进行优化工作。有什么好的方法或者工具可以帮助了解。这就是今天故事所要介绍的主角-Xperf。

Xperf是一个先进的故障调试工具,可深入调试各种性能问题,其高度是Perfmon无法企及的。它是产品套件Windows性能工具包(Windows Performance Toolkit ,WPT)的一部分,而WPT则属于微软软件开发包(Microsoft Software Development Kit ,SDK)。Xperf是Windows事件跟踪系统(Event Tracing for Windows,ETW)的补充。ETW则是服务器操作系统的一个内置组件,提供详细的系统性能和系统数据。

问题

了解操作系统启动慢的原因,加快系统启动速度。

Xperf工具还能够处理诸多问题,如系统响应问题、启动缓慢、高CPU和磁盘利用率、应用程序延迟及响应缓慢等。它支持在x86、x64和IA-64等平台上的跨平台使用时CPU占用低于2.5%,同时每秒能收集超过20000个系统事件。

依赖

  1. Microsoft .NET Framework 4
  2. Windows软件开发包

安装时选择Windows性能套件(Windows Performance Toolkit)和Windows调试工具(Debugging Tools for Windows)这两个选项,如图1所示。

微软,Xperf,监控,Windows,性能

                             图1:Windows SDK的安装选项

默认安装目录:C:\Program Files\Microsoft Windows Performance Toolkit

步骤

应用场景

关注系统启动速度,收集Boot阶段数据

启动程序,数集数据

用管理员模式启动 cmd.exe,然后进入 Microsoft Windows Performance Toolkit 安装目录,输入下面的命令:
xbootmgr.exe -trace boot

输入这个命令以后,xbootmgr 会自动重启系统,然后开始收集相关的启动信息数据。重启完成以后,xbootmgr 会等待 explorer 全部启动完成以后,生成一个日志文件(扩展名是:etl)到 Microsoft Windows Performance Toolkit 安装目录下面。

默认文件名为:boot_BASE+CSWITCH_1.etl

数据分析

1. 打开etl文件,输入命令:xperfview boot_BASE+CSWITCH_1.etl ,生成下方图片:

image

2. 找到 process lifetimes 分类(如上图),

3. 会发现到50多秒的时候,系统里面的第一个用户态进程smss.exe才启动(进程ID:748),之前的时间都花费在 system 上。换句话说,运行在内核态的各种驱动程序,包括 Windows 内核和执行体用了 50 多秒才完成启动子系统之前的初始化动作,这个时间花费的也太长了

由于初始化 Windows 内核和执行体等动作用了 50 多秒,这个非常的不正常,因为我们需要看看在这50秒内的详情。
在 Disk Utilization by process 里面,选择 0-50 秒这个时间段:

4. 然后点击鼠标右键,选择 Detail Graph,会出现下面的图:

点击查看原大图片

5.在 Disk Utilization by process 里面,还是选择 0-50 秒这个时间段:点击鼠标右键,选择 Summary Table,xprefview 会显示如下图所示的报告,这个报告对于分析性能分析来说,会显得会更为直观一点。

这张图标给了我们一个非常详细的性能分析和解释数据。在 0-50 秒时间内,system 进程花费了 42445587.434 us 的时间,其中,花费最多的时间是在处理 MFT 表的时候,尽然用了近10秒的时间。

系统优化

根据上面的数据,我们已经找到了在启动最开始的50秒时间内,有10秒钟的时间花费在了出来MFT表上面,另外,读取一些字体文件的时间也非常的慢。 知道数值以后,后面就是优化过程了。根据 xperf 给出的数据初步判断:开机慢的原因和文件IO速度变慢是相关的。有人会问,而影响文件IO速度慢的原因有很多,但是请注意一点,在前50秒内,由于没有任何的用户态进程介入,因此IO速度慢的原因就很简单了,大部分原因是因为磁盘碎片导致的,也有可能是由于硬盘坏道导致的。根据 xperf 的数据,处理MFT表用了10秒钟时间,如果能够把MFT的处理时间加快,同时减小碎片数量,系统的启动速度就能加快不少了

引用:玩转微软官方性能分析工具xperf,追查Vista开机慢之根源