转自 iteam的共享空间 的日志

xperf 是Windows Performance Tools Kit中的一个工具,这一系列强大的工具包主要针对操作系统启动阶段和关闭阶段进行底层的日志捕捉和性能分析.可以比较容易的发现启动和关闭过程中的主要瓶颈(比如加载特定驱动程序缓慢,访问特定文件出现问题等等)

最近有不少朋友用了这个工具进行了优化,但是也需要注意一些问题:

1)??在进行任何优化操作之前,充分评估风险,避免数据遗失。

2) 有些优化涉及到主分区表的碎片整理,这一步需要非常的谨慎,有一些碎片整理工具根Vista存在兼容性问题,可能会导致MFT损坏。建议上网查找一些兼容Vista的磁盘碎片整理工具。

xperf工具集的介绍

Windows Performance Tools (WPT) Kit 包含若干性能分析工具,这些工具对于 Windows SDK for Windows Server 2008 和 .NET Framework 3.5 而言是新工具。WPT Kit 对许多人员都很有用,包括系统构建者、硬件制造商、驱动程序开发人员和常规应用程序开发人员。这些工具用于测量和分析 Windows Vista、Windows Server 2008 和更高版本上的系统和应用程序的性能。

这些工具目前包含一个 xperf 跟踪捕获工具、一个 xperfview 虚拟化工具(也称为性能分析器)和一个 xbootmgr 启动跟踪捕获工具。这些工具用于分析大量的性能问题,包括应用程序启动次数、启动问题、延迟的过程调用和中断活动(DPC 和 ISR)、系统响应问题、应用程序资源利用和中断风暴。MSI 包含这些工具,其位于 SDK bin 文件夹中(每个体系结构都有一个此文件夹)。

这些工具是在 Event Tracing for Windows (ETW) 基础结构上生成的。ETW 允许 Windows 和应用程序有效地生成事件。可以在任意时间启用和禁用事件,无需重新启动系统或进程。ETW 收集被请求的内核事件,并将其保存到一个或多个文件名为 "trace files" 或者 "traces" 的文件中。

这些内核事件提供了关于系统操作的大量详细信息。用于捕获和分析的最重要和最有用的内核事件是:上下文切换、中断、DPC、进程和线程的创建和销毁、磁盘 I/O、硬故障、处理器 P 状态转换、寄存器操作,以及许多其他操作。

如果我需要收集的是Boot阶段的数据。??

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

xbootmgr.exe -trace boot??

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

分析的过程有很多方法,最简单的方法就是进入命令行模式,切换到 Microsoft Windows Performance Toolkit 安装目录下,输入 xperf -i boot_BASE+CSWITCH_1.etl -o boot.xml -a boot 命令自动分析,然后输出一个 xml 的报告文件。这个??

下面我要说的是一个更细致的分析过程。??

1、打开 etl 文件:使用 xperfview boot_BASE+CSWITCH_1.etl 命令,会调用 xperfview 工具对 etl 文件进行详细的解析。etl 文件是 Microsoft Windows Performance Toolkit 原始的性能数据文件,里面记录了所有收集到的数据。

2、xperfview 解析完成以后,会看到类似于下方的图片:

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

由于初始化 Windows 内核和执行体等动作用了 50 多秒,这个非常的不正常,因为我们需要看看在这50秒内的详情。??

在 Disk Utilization by process 里面,选择 0-50 秒这个时间段:

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

在这个图片里面,可以看在 0-50 秒内磁盘访问最高的区域是什么,C盘中间部分的访问频度非常的高。更细致的数值分析就需要使用另外一张报表了。??

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

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

Vista之家小贴士:什么是$MFT,什么是MFT?

NTFS是自Windows NT开始引入的文件系统,它具有许多新特性。NTFS中,卷中所有存放的数据均在一个叫$MFT的文件中,叫主文件表(Master File Table)。而$MFT则由文件记录(File Record)数组构成。File Record的大小一般是固定的,通常情况下均为1KB,这个概念相当于Linux中的inode。File Record在$MFT文件中物理上是连续的,且从0开始编号。$MFT仅供File System本身组织、架构文件系统使用,这在NTFS中称为元数据(Metadata)。

6、根据上面的数据,我们已经找到了在启动最开始的50秒时间内,有10秒钟的时间花费在了出来MFT表上面,另外,读取一些字体文件的时间也非常的慢。??

7、知道数值以后,后面就是优化过程了。根据 xperf 给出的数据初步判断:开机慢的原因和文件IO速度变慢是相关的。有人会问,而影响文件IO速度慢的原因有很多,但是请注意一点,在前50秒内,由于没有任何的用户态进程介入,因此IO速度慢的原因就很简单了,大部分原因是因为磁盘碎片导致的,也有可能是由于硬盘坏道导致的。根据 xperf 的数据,处理MFT表用了10秒钟时间,如果能够把MFT的处理时间加快,同时减小碎片数量,系统的启动速度就能加快不少了(Vista之家提示:Vista自带的磁盘碎片整理是不支持MFT整理的,而DiskKeeper这样的软件虽然支持但是很容易造成磁盘分区表损害,慎之慎之)。

xperf工具集的介绍相关推荐

  1. Cz工具集使用介绍 - 规范Git提交说明

    在多人协作的项目中,如果Git的提交说明精准,在后期协作以及Bug处理时会变得有据可查,项目的开发可以根据规范的提交说明快速生成开发日志,从而方便开发者或用户追踪项目的开发信息和功能特性. 本文主要内 ...

  2. Linux下autoTools工具集使用介绍

    Author : iStone E-mail : liul.stone@gmail.com Date : 2015-09-19 15:16:38 一 使用autoTools工具集 1.1 什么是aut ...

  3. 0day工具集(资源)介绍-0day漏洞利用原理(2)

    往期文章: 漏洞概述-0day漏洞利用原理(0)_luozhonghua2000的博客-CSDN博客 二进制概述-0day漏洞利用原理(1)_luozhonghua2000的博客-CSDN博客 上篇已 ...

  4. SAP BW BEx工具集简单介绍【AV+PPT】

    比较长.部门内部交流视频,水平有限,敬请原谅,附送PPT. SAP BW BEx View more presentations from erickdu888. 转载于:https://www.cn ...

  5. [转]《吐血整理》系列-顶级程序员工具集

    你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图.个人联系方式,欢迎Star和指教 前言 这期 ...

  6. linux的系统移植——交叉编译工具集

    1.交叉编译工具集 \qquad 在我们安装交叉工具集时,不仅安装了arm-linux-gnueabi-gcc ,还安装了很多工具,它们共同构成交叉编译工具集. arm-linux-gnueabi-a ...

  7. 《吐血整理》顶级程序员工具集

    前言 这期是被人才群交流里,还有很多之前网友评论强行顶出来的一期,就是让我介绍自己常用的一些工具给他们安利一下,我一听很高兴呀,帅丙我这么乐于奉献的人是吧. 主要是能水一篇文章就很开心,不过写下来发现 ...

  8. jetbrains 产品线,jetbrains 的质量保证工具集 QA Tools

    文章目录 jetbrains 产品线,jetbrains 的质量保证工具集 QA Tools 1.QA Tools 质量保证工具集 jetbrains 产品线,jetbrains 的质量保证工具集 Q ...

  9. sanitizer工具集

    sanitizer工具集的介绍 Sanitizers是谷歌发起的开源工具集,包括了Address Sanitizer, undefined behavior Sanitizer, Thread San ...

最新文章

  1. 平流式初沉池贮砂斗计算_给排水之市政污水处理构筑物:平流式、曝气式、旋流式三大沉砂池...
  2. c python通信protobuf_python 处理protobuf协议
  3. 让Vs2013 完美支持EF6.1 Code First with Oracle 2015年12月24日更新
  4. 数据结构问题集锦 - Find Median from Data Stream
  5. ROS学习笔记1(配置ROS环境和创建工作空间)
  6. JZOJ 5914. 盟主的忧虑
  7. centos 宝塔面版 运行 thinkjs
  8. 「极点日历」小程序插件
  9. python输入路径读取文件-python获取程序执行文件路径的方法(推荐)
  10. 计算机组成与系统结构课设实验报告
  11. Unity2D项目案例及素材
  12. Topaz Sharpen A I人工智能清晰锐化PS插件
  13. ubuntu系统给u盘拷贝文件
  14. 不规则动词过去式和过去分词大表
  15. JAVA设计模式-11-代理模式(动态)(一)
  16. Progress进度条
  17. 【翻译】WhatsApp 加密概述(技术白皮书)
  18. jQuery动画+ajax
  19. 创业可以做什么项目,六个轻资产创业项目推荐
  20. OLED 驱动模块程序代码

热门文章

  1. Uipath实现简单的滑块拖动验证
  2. 微信小程序图片上传以及身份证识别
  3. 自定义字符串复制函数
  4. Python爬虫入门教程【3】:美空网数据爬取
  5. PTA L1-028 判断素数 C语言版
  6. c语言怎么判断素数return1,C语言实验——判断素数(循环结构)
  7. html语言搭建网站,网络编程(1)——使用HTML搭建一个网页
  8. nginx配置转发时,提示no Route matched with those values
  9. 【散文】 一个人的旅行
  10. 什么是A类、B类、C类地址?