热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PowerShell2.0之桌面计算机维护(七)性能计数器

Windows系统性能计数器是操作系统支持用于应用和组件发布性能数据的特殊对象,并且支持其他应用获取和分析这些已发布的数据。Windows中的性能计数器很多,包括针对磁盘、网络和TCP等计数器,用户能

Windows系统性能计数器是操作系统支持用于应用和组件发布性能数据的特殊对象,并且支持其他应用获取和分析这些已发布的数据。Windows中的性能计数器很多,包括针对磁盘、网络和TCP等计数器,用户能够使用这些性能计数器提供的数据确定程序瓶颈和系统性能。通过运行perfmon.msc启动性能计数器数据,如图1所示。用户可以通过右击计数器清单添加其他计数器,在添加的过程中显示如图2所示的“添加计数器”对话框。

image

图1 系统性能计数器

image

图2 “添加计数器”对话框

其中包括性能计数器名,如%Processor Time和Handle Count等,以及计数器对应的范例。当需要获取处理器相关的性能计数器数据时,默认以处理器命名。如果有多个处理器,则为计数器分别添加类似于#1、#2和#3这样的后缀。如果需要处理多个实例,则在添加计数器的过程中制定相应的实例。

5.1 Consuming Counter Data

PowerShell没有内置的cmdlet用于获取性能计数器的值,所以必须使用.NET的类。为此创建System.Diagnostics.PerformanceCounter的实例,配置其中的属性并不断调用NextValue()方法来获取相应的值。在开始操作性能计数器之前,需要首先配置用户权限为管理员权限。然后创建脚本用于监视CPU的使用率,将脚本命名为“Monitor-CpuUsage.ps1”。将会用性能计数器获取并显示当前CPU每秒的占用率,这个脚本会一直循环执行下去;除非用户按Ctrl-C终止。其代码如下:

$counter = New-Object Diagnostics.PerformanceCounter

$counter.CategoryName = "Processor"

$counter.CounterName = "% Processor Time"

$counter.InstanceName = "_Total"

while ($true)

{

$value = $counter.NextValue()

Write-Host "CPU: $value"

sleep 1

}

其中涉及的计数器名和实例名都可以很容易地从“添加计数器”对话框中找到,Monitor-CpuUsage.ps1脚本的执行结果如图20所示。

clip_image002[4]

图3 执行结果

从图中可以看到此时的CPU负载并不重,只达到10%左右,用户可以用类似的方法获取其他性能计数器的数据。

5.2 监视程序

当使用程序时发生不正常的情况时,通常都会造成占用大量的系统资源而导致系统重启。这时使用性能计数器可以监控程序的运行情况,即在运行程序的同时启动监视脚本。该脚本会实时获取和分析性能数据,当发生异常时会向用户发出警告。

针对意外终止的应用程序创建一个监视脚本Monitor-Crashes.ps1,脚本将会启动外部进程。当程序意外退出时,脚本会将重启5次应用程序之后停止尝试,其代码如下:

function Start-Process

{

Write-Host "Starting process..."

.\UnpredictableCrash.exe

}

for ($i = 0; $i -lt 5; $i++)

{

Start-Process

Write-Host "Process exited $($i + 1) times."

}

Write-Host "Program restart limit exceeded."

该脚本的执行结果如图21所示。

clip_image002[6]

图4 执行结果

在脚本执行过程中使用了一个名为“UnpredictableCrash.exe”的程序,这个程序执行一秒钟等待操作后并退出。通过这个方法来模拟执行一定的操作,但在特定条件下意外退出的程序。在脚本中只是重启程序5次。如果需要,则可以让程序一直执行,使其作为一个驻留程序来执行。

 

作者: 付海军
出处:http://fuhj02.cnblogs.com
版权:本文版权归作者和博客园共有
转载:欢迎转载,为了保存作者的创作热情,请按要求【转载】,谢谢
要求:未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
个人网站: http://txj.lzuer.com/


推荐阅读
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 本文讨论了一个数列求和问题,该数列按照一定规律生成。通过观察数列的规律,我们可以得出求解该问题的算法。具体算法为计算前n项i*f[i]的和,其中f[i]表示数列中有i个数字。根据参考的思路,我们可以将算法的时间复杂度控制在O(n),即计算到5e5即可满足1e9的要求。 ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
  • 用Vue实现的Demo商品管理效果图及实现代码
    本文介绍了一个使用Vue实现的Demo商品管理的效果图及实现代码。 ... [详细]
  • 解决Sharepoint 2013运行状况分析出现的“一个或多个服务器未响应”问题的方法
    本文介绍了解决Sharepoint 2013运行状况分析中出现的“一个或多个服务器未响应”问题的方法。对于有高要求的客户来说,系统检测问题的存在是不可接受的。文章详细描述了解决该问题的步骤,包括删除服务器、处理分布式缓存留下的记录以及使用代码等方法。同时还提供了相关关键词和错误提示信息,以帮助读者更好地理解和解决该问题。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • http:oj.leetcode.comproblemsminimum-depth-of-binary-tree贡献了一次runtimeerror,因为如果输入为{}即空的时候,出 ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有