Enterprise Just Builder

Solution for Enterprise Software Architecture

trace

Xperf 高手训练营 (1): NetTCPPortSharing 和 NLA Services 导致系统启动缓慢

本系列文章将通过一些现实生活中的例子来展示如何用 Xperf 工具来诊断一些常见的性能问题,并如何实现系统优化的。1

我们的第一个案例是某台笔记本花了2分钟才能显示出正常的桌面。要加速启动速度,我们必须先了解问题出在哪里。所以首先需要抓取系统痕迹(trace),xbootmgr 工具适用于系统开关机的场景,其命令如下:

xbootmgr -trace boot -traceFlags Latency+DISPATCHER -postBootDelay 120 -stackWalk Profile+ProcessCreate+CSwitch+ReadyThread+Mark+SyscallEnter+ThreadCreate

注意这里的 -stackwalk 开关。 stackwalking 使得我们可以在痕迹中查看模块以及函数调用。对于 64位机器,在收集痕迹文件之前,须先禁止执行换页以防部分内核被换出。你可以执行以下命令来达到这一目的。

Reg.exe add “HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management” -v DisablePagingExecutive -d 0x1 -t REG_DWORD -f

收集好痕迹文件,接着打开 Performance Analyzer。Performance Analyzer (又称 xperfview) 是用来分析 XPERF 痕迹的工具。它是 Windows 性能工具箱(Windows Performance Toolkit) 中的利器,该工具箱是 Windows SDK 的一部分。

 

, ,

使用 ETW 改善调试和性能优化

当下的软件系统正变得日益庞大复杂,随之对软件的开发和管理就成为了一项艰巨挑战。此外,不同的硬件组合和工作负载特征也增加了各种软件故障诊断的难度。因此,可靠性和可管理性本身成为重要功能也就不足为奇了。而正是这些功能催生了对软件检测的需求。

在软件执行过程中,针对某些关键错误状态添加智能检测手段可以极大地缩短故障调试时间。在其他某些方面,检测也是非常有用。如在企业环境中,需要对大量计算机的软硬件故障和资源冲突等不良情况进行监视并采取措施。此外,检测还非常有助于解决性能问题,因为性能问题对于外部的工作负载、配置参数以及底层硬件和软件状态都十分敏感,所以诊断起来比较困难。当性能下降时,有关人员可以根据实际工作环境的追踪文件(trace) 来确定性能不佳的组件或服务,或者发现开发阶段未预见到的性能瓶颈。最后,IT 专家可以使用各种管理工具从事务追踪中得出资源使用率的统计数据用于容量规划和趋势分析。

Windows® 事件追踪 (ETW) 是操作系统提供的一个追踪工具,具有高速通用的特点。它使用内核中的缓冲和日志记录机制,追踪用户模式应用程序和内核模式设备驱动程序所引发的事件。此外,你可以动态地启用和禁用 ETW 日志记录,从而轻松地在生产环境下进行详细追踪,而无需重新启动系统或重新启动应用程序。日志记录机制使用每处理器独立的缓冲区,通过异步写线程将这些缓冲区写入磁盘,从而将写入事件对大规模服务器应用程序的干扰降至最小。

最初引入 ETW 的操作系统是 Windows 2000。自此开始,各版本操作系统和服务器组件开始纷纷采用 ETW 对其活动进行检测。现在,ETW 已成为 Windows 平台中的主要检测技术之一。越来越多的第三方应用程序也开始采用 ETW 进行检测。ETW 还被提取到 Windows 预处理器 (WPP) 软件追踪技术中,为追踪类似“printf”样式的消息提供了一组简单易用的宏,以便用于开发过程中的调试。

在 Windows Vista™ 上,ETW 发生了改头换面的变化,其中最重大的变化之一就是引入了统一的事件提供者模型和 API。简而言之,新的统一 API 对追踪结果进行日志记录并将结果写至事件查看器,为事件提供程序提供了一种一致的、简单易用的机制。同时,还添加了一些用于改善开发人员和用户体验的新功能。在本文中,我们将介绍新的 ETW 提供程序模型,并为大家讲解开发人员应如何在基于 Windows Vista 的应用程序中采用这一新模型。

>>> 阅读全文

 

, ,