Windows性能计数器配置应用

2.4 CategoryName:流程

每个过程都需要提供执行程序所需的资源。进程具有虚拟地址空间,可执行代码,系统对象的打开句柄,安全上下文,唯一的进程标识符,环境变量,优先级类别,最小和最大工作集大小以及至少一个执行线程。每个进程都从单个线程(通常称为主线程)开始,但是可以从其任何线程中创建其他线程。

线程是流程中可以安排执行的实体。进程的所有线程共享其虚拟地址空间和系统资源。另外,每个线程维护异常处理程序,调度优先级,线程本地存储,唯一的线程标识符以及系统将用于保存线程上下文直到被调度的一组结构。线程上下文包括线程进程的地址空间中的线程的计算机寄存器集,内核堆栈,线程环境块和用户堆栈。线程也可以具有自己的安全上下文,可用于模拟客户端。(有关更多信息,请参见“关于进程和线程” http://msdn.microsoft.com/zh-cn/library/windows/desktop/ms681917%28v=vs.85%29.aspx

PerformanceCounter(“ Process”,“ Thread Count”,“ _Total”);

进程创建的线程数。此计数器不指示哪些线程繁忙和哪些线程空闲。它显示最后观察到的值,而不是平均值。

PerformanceCounter(“ Process”,“ Handle Count”,“ _Total”);

该值报告进程为它们创建的对象打开的句柄数。程序使用句柄来标识它们必须访问的资源。在发生内存泄漏时,此计数器的值趋于增加。

PerformanceCounter(“ Process”,“ Thread Count”,“ _Total”);

该值随时间报告进程创建多少线程。

2.5 CategoryName:System

PerformanceCounter(“ System”,“ Context Switches / sec”,null);

当内核将处理器从一个线程切换到另一个线程时,就会发生上下文切换。当具有比正在运行的线程高的优先级的线程准备就绪或正在运行的线程必须出于某种原因(例如I / O操作)而等待时,也可能发生上下文切换。当线程获得或失去处理器时间时,“线程\上下文切换/秒”计数器值将增加。

PerformanceCounter(“ System”,“ System Calls / sec”,null);

这是CPU每秒处理的系统调用数。通过将处理器的中断/秒与系统调用/秒进行比较,我们可以了解系统对连接的硬件做出响应需要付出多少努力。在健康的系统上,与每秒的系统调用数相比,每秒的中断数应该可以忽略不计。当系统不得不反复调用中断进行服务时,则表明存在硬件故障。

PerformanceCounter(“ System”,“ Processor Queue Length”,null);

系统\处理器队列长度计数器是每个处理器正在服务的线程数的粗略指示器。

3跟踪性能计数器的应用程序的结构

跟踪一组PerfomanceCounter()的应用程序的基本结构如图所示:

clip_image001[11]

图1:应用程序的主要结构

应用程序的主要目的是捕获特定的采样间隔和性能计数器列表。

当主程序启动时,第一个操作是读取两个XML文件:SysField.XML文件和app.config文件。应用程序的行为取决于这两个文件中存储的参数值。

SysField.XML的结构如下所示:

C:\SysParamsLog2\

   Log.txt

   true

   30

   1

Windows性能计数器应用(PART1)

Windows性能计数器应用(PART2)

猜你喜欢

转载自www.cnblogs.com/Aldj/p/12411992.html