想要使用好这个听上去很厉害的插件,你需要先知道什么是Windows 性能监视器。这是很重要的事情,只有先了解了Windows 性能监视器的工作方式才能了解UsageMonitor的工作方式,而不了解的话你甚至连这个插件的使用教程都看不懂,哪怕翻译成中文版!本教程不会介绍性能监视器里的每个计数器都是测量什么的,只会介绍其文件结构方便使用插件。想知道自己需要测量的系统信息怎么寻找请自行百度。
那么言归正传,Windows 性能监视器是Windows系统用于监视各种不同类别的系统指标,并跟踪指示其使用情况的一个系统内置应用。你肯定知道任务管理器是什么东西,有些细心的同学还见过资源监视器(注意两个字的差别,资源监视器和性能监视器不是一个东西。)是什么,如下图。不过,这两个程序被红色框圈起来的部分,全部来自Windows性能监视器。
任务管理器
资源监视器
那Windows性能监视器在哪里?按键盘上的Win+R调出运行对话框,直接输入Perfmon.exe就能打开性能监视器了。如图展示。
性能监视器
上图展示的是性能监视器刚打开的样子,其下边展示了一些系统摘要,不同计算机显示的可能不同。图中展示的是这台计算机的内存,网络,磁盘和CPU各线程的使用情况。现在我想看其他的信息怎么办呢?点击左边控制台里边的监视工具里边的性能监视器模块,可以得到下边的结果:
性能监视器
你可以使用更改图形类型来切换显示模式。一共有线条,直方图条和报告三种显示模式。为方便后边讲解,接下来均使用报告模式。
性能监视器报告模式
重点来了:点击工具条上的添加模块,就能打开添加计数器页面,内部囊括了Windows性能监视器的所有计数器及其类别。下面这张图的文字部分务必仔细体会:
点击确定后,就能看到其中的内容添加到主界面上了:
当然,我们也可以在之前添加计数器那里选择<全部实例>,就能看到每个程序占用资源的情况了,需要注意的是:虽然上图展示的实例全是进程名,但是这是在特定的一些计数器中是这样的。实例不等于进程名!不同的计数器中实例种类是不一样的!例如如果计数器是测量磁盘的使用量的,实例可能就是磁盘序号,类似C:,D:;如果计数器是测量每个CPU核心的使用量,实例又变成了0,1,2,3......;如果计数器测量的是每张网卡的流量,实例就是你的网卡型号名称。这么说能明白吗?
看完看了上面的内容,你应该知道了下面这三个概念:计数器,计数器的类别,计数器的实例。都清楚了,你就能开始学习使用UsageMonitor这个插件了。下面正式介绍UsageMonitor使用方法:
===========================分割线===========================
选项
Category 默认值:无所需计数器的类别名称。需要区分大小写且必须是性能监视器里含有的名称。
注意:如果定义了Category,则还必须同时定义Counter。
例: Category=Process,Category=PhysicalDisk
Counter 默认值:无计数器名称。需要区分大小写且必须是性能监视器里含有的名称。
注意:如果定义了Counter,则还必须同时定义Category。
例: Counter=%Processor Time,Counter=Bytes Read/sec
Alias 默认值:无本选项提供一些可能最常用的计数器别名,其本质上就是内置在插件里的一些Category和Counter选项的组合。
注意:如果定义了Alias就无需定义Category和Counter了;而如果定义了Category和Counter,本选项就会被忽略。当然,为简化皮肤文件,建议优先使用本选项。
Alias = CPU
等同于:Category = Process | Counter = % Processor Time
表示进程的CPU使用百分率。
Alias = RAM
等同于:Category = Process | Counter = Working Set - Private
表示进程的专用内存占用大小,单位字节。
Alias = RAMSHARED
等同于:Category = Process | Counter = Working Set
表示进程的共享内存占用大小,单位字节。(译者注:共享内存不是虚拟内存哈!)
Alias = IO
等同于:Category = Process | Counter = IO Data Bytes/sec
表示进程在磁盘上的总读写速度,单位字节/秒。
Alias = IOREAD
等同于:Category = Process | Counter = IO Read Bytes/sec
表示进程在磁盘上的读取速度,单位字节/秒。
Alias = IOWRITE
等同于:Category = Process | Counter = IO Write Bytes/sec
表示进程在磁盘上的写入速度,单位字节/秒。
Alias = GPU
等同于:Category = GPU Engine | Counter = Utilization Percentage
表示进程的GPU使用百分率。
注意:需要Windows 10 1709或更高版本。
Alias = VRAM
等同于:Category = GPU Process Memory | Counter = Dedicated Usage
表示进程的GPU专属内存,即显存的占用大小,单位字节。
注意:需要Windows 10 1709或更高版本。
Alias = VRAMSHARED
等同于:Category = GPU Process Memory | Counter = Shared Usage
表示进程的GPU共享内存,即用作显存的内存的占用大小,单位字节。
注意:需要Windows 10 1709或更高版本。
Index 默认值: 0计数器包含的所有实例将会从最高值到最低值进行汇总和排序。Index会根据此排序返回每个实例的单个数值、总和或者平均值。
Index=0
返回所有实例的数值总和,以及字符串“Total”。这是Index的默认值。
Index=-1
返回所有实例的数值平均值,以及字符串“Average”。
Index=1,Index=2等等。
返回排序中相应的实例的数值,以及该实例名称的字符串值。
注意:实例的排序是动态的,实例顺序会发生变化。无论Index定义为何值,如果返回的当前数值结果是 0 的话,字符串会变为空字符串。没有数值的实例不参加排序,也不会存在于此排序列表中,因为插件无法区分开它和其他数值为0的实例的区别。另外,黑名单中的实例也会参加排序。
Name 默认值:无指定特定实例名称。需要区分大小写且必须是性能监视器里含有的名称。
注意:如果定义了Name,则忽略任何Index选项。
例: Name=Rainmeter,Name=chrome,Name=C:
Blacklist 默认值: _Total|Idle实例黑名单列表。使插件不获取该表中的实例数值。实例名称用 | 字符分隔。需要区分大小写且必须是性能监视器里含有的名称。
注意:在默认情况下黑名单中包含实例名称_Total,和Idle。如果要定义其他名称,请别忘了将这两个名字添加上,因为设置黑名单是替换默认值的行为,不是补充。
例: Blacklist=_Total|Idle|dwm|csrss|svchost|lsass|system|spoolsv
Whitelist 默认值:无实例白名单列表。使插件只获取该表中的实例数值而忽略其他的实例。实例名称用 | 字符分隔。需要区分大小写且必须是性能监视器里含有的名称。
注意:如果定义了白名单,则忽略任何黑名单选项。
例: Whitelist=Rainmeter|firefox|hexchat
Rollup 默认值: 1有些程序的进程会有多个副本。这个现象对于浏览器类应用程序打开多个网页以及一些Windows内部进程(如explorer,RunTimeBroker或svchost)来说是很常见的。当Rollup设置为默认值1时,会将这些副本汇总到单个进程中一起统计。如果设置为0,则插件对此程序的每个单独的进程分别进行统计:processName#1,processName#2
Percent 默认值: 0如果你想要获取一个百分数形式的_Total实例但计数器返回的不是百分比数值,就可以将Percent设置为 1。如果计数器没有_Total实例,或者返回值已经是百分数形式了,则它将失效且不应该设置为 1。
注意:当Alias=CPU被使用时,Percent的默认值会自动变为 1。不过如果需要的话你也可以强制手动设置为 0。
RawValue 默认值: 0设置1为时,这将从性能监视器的数据库中返回原始值,而不是性能监视器中显示的我们能看懂的格式。
PIDToName 默认值: 0设置1为时,将查找并返回与实例PID字符串值关联的进程名称。
注意:当Alias=GPU,Alias=VRAM或Alias=VRAMSHARED被使用时,PIDToName的默认值会自动变为 1,返回的是进程的GPU相关使用情况。不过如果需要的话你也可以强制手动设置为0,返回的是每个GPU引擎的使用情况。不过其字符串值因为与内存地址有关,可能每次开机都会变更。
关于数值与字符串值的注释
UsageMonitor插件返回的是实例的当前数值以及实例名称的字符串值。这意味着你使用String meter时需要注意了,其MeasureName选项默认获取的是字符串值。
如果你想要展示的是数值,可以在Text选项中使用[MyMeasure:]以显示数字值,且务必同时设置DynamicVariables=1。而且使用此方法,NumOfDecimals或AutoScale这类设置数值的选项无效。如果想要使用NumOfDecimals的功能限制小数点位数,可以直接定义:[MyMeasure:2]将显示带有两位小数的数值。
另一种方案是建立一个Calc Measure来获取UsageMonitor插件的数值。这样NumOfDecimals或AutoScale这类设置数值的选项就都能使用了。