It is currently August 18th, 2019, 6:17 pm

New UsageMonitor plugin

Changes made during the Rainmeter 4.2 beta cycle.
User avatar
jsmorley
Developer
Posts: 19374
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: New UsageMonitor plugin

jsmorley » December 17th, 2018, 12:07 am

Yincognito wrote:
December 17th, 2018, 12:04 am
Well, in the dictionary of my language, it is https://en.wiktionary.org/wiki/Aalenian#Adjective - so I have an excuse :D

Thinking about it, the plugin should not sort those hundreds of 0% CPU processses (as it could impact its performance), but you're right that it should include at least the 0.0[1-9]% processes. The plugin developer will decide on that though.
We have achieved agreement...
Yincognito
Posts: 652
Joined: February 27th, 2015, 2:38 pm

Re: New UsageMonitor plugin

Yincognito » December 17th, 2018, 12:37 am

jsmorley wrote:
December 17th, 2018, 12:07 am
We have achieved agreement...
Indeed. In the meantime, massive regex search and replace takes place in my RainLexer powered Notepad++ in order to 'convert' the NomFerp skin to a brand new UsageMonitor one. It will be soon the time to celebrate both the conversion and our agreement. ;-)
User avatar
jsmorley
Developer
Posts: 19374
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: New UsageMonitor plugin

jsmorley » December 17th, 2018, 12:38 am

Yincognito wrote:
December 17th, 2018, 12:37 am
Indeed. In the meantime, massive regex search and replace takes place in my RainLexer powered Notepad++ in order to 'convert' the NomFerp skin to a brand new UsageMonitor one. It will be soon the time to celebrate both the conversion and our agreement. ;-)


I think you will be happy with the improved performance of your skin using UsageMonitor. It uses far less CPU than PerfMon or AdvancedCPU.
User avatar
SilverAzide
Posts: 571
Joined: March 23rd, 2015, 5:26 pm

Re: New UsageMonitor plugin

SilverAzide » December 17th, 2018, 11:52 am

jsmorley wrote:
December 16th, 2018, 11:27 pm
BTW, I can't put my finger on it exactly, and we will have to have tjhrulz weigh in, but it seems to treat anything less than 0.1% as "zero" for this purpose. So if a process is using 0.09%, it appears to be ignored. We might want to tweak that, I'm not sure.
It would be nice if UsageMonitor returned processes down to the 0.01% level, like Windows Resource Monitor and plugins like NomFerp and some of the other UsageMonitor clones do. I was never quite clear why AdvancedCPU and UsageMonitor stopped at 0.1% other than it just being an arbitrary stopping point.
DeviantArt Gadgets More...
Yincognito
Posts: 652
Joined: February 27th, 2015, 2:38 pm

Re: New UsageMonitor plugin

Yincognito » December 17th, 2018, 5:41 pm

So, I've successfully completed the NomFerp to UsageMonitor transition in my Processes skin, and I'm almost done in doing the same for PerfMon to UsageMonitor transition in my Battery skin. I'm having UsageMonitor displaying the Charge/Discharge rates for my laptop battery, using the Name option instead of the Index one (as I already had in place some Registry query to identify the correct Perfmon.msc battery instance(s) by name). I have two questions though:

1. Is UsageMonitor always sorting the instances from high values to low values, or just for the Perfmon.msc Process object?
2. Is there any chance of implementing Charge/Discharge rate measures in the Power plugin, or should folks use UsageMonitor for getting them? You know, since logically such measures should belong to the Power plugin...
jminternelia
Posts: 56
Joined: March 21st, 2017, 3:46 am

Re: New UsageMonitor plugin

jminternelia » December 18th, 2018, 3:02 pm

Trying to wrap my head around how to Measure the Ram usage from the process using the most cpu.
User avatar
jsmorley
Developer
Posts: 19374
Joined: April 19th, 2009, 11:02 pm
Location: Fort Hunt, Virginia, USA

Re: New UsageMonitor plugin

jsmorley » December 18th, 2018, 3:30 pm

jminternelia wrote:
December 18th, 2018, 3:02 pm
Trying to wrap my head around how to Measure the Ram usage from the process using the most cpu.

Code: Select all

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1

[Variables]

[MeasureHighestUsedCPU]
Measure=Plugin
Plugin=UsageMonitor
Alias=CPU
Blacklist=_Total|Idle|dwm|wmpnetwk|csrss|svchost|lsass|System|system
Index=1

[MeasureThatProcessRAM]
Measure=Plugin
Plugin=UsageMonitor
Alias=RAM
Name=[MeasureHighestUsedCPU]
DynamicVariables=1

[MeasureRAMNumberValue]
Measure=Calc
Formula=MeasureThatProcessRAM

[MeterResult]
Meter=String
MeasureName=MeasureRAMNumberValue
FontSize=12
FontWeight=400
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AutoScale=1
NumOfDecimals=1
AntiAlias=1
DynamicVariables=1
Text=Top CPU: [MeasureHighestUsedCPU] at [MeasureHighestUsedCPU:1]%#CRLF#RAM: %1B

1.png

Getting the values is trivial. Displaying them in a String meter takes a little thought. This is because all UsageMonitor measures return two distinct values. A string value that is the "name" of the process, and a number value that is the numeric value returned for the counter.

Since String meter always use the string value when MeasureName is used, to get the number values the way we want them we dynamically use [SectionVariables:] for the number values. This is pretty straightforward with the CPU percentage in [MeasureHighestUsedCPU:1], we just tell it that we want the number with one decimal place.

It is a bit harder with [MeasureThatProcessRAM], since we want to display it not only with only one decimal place, but also AutoScaled. We add AutoScale=1 to the meter, but the rub is, that only works with things defined in MeasureName. Again, MeasureName will only use string values from measures, so we create another measure, [MeasureRAMNumberValue], that results in the same string and number value from [MeasureThatProcessRAM], using just the numeric value. Then we can use that new measure in MeasureName, it uses AutoScale and NumOfDecimals, and all is well.
You do not have the required permissions to view the files attached to this post.
jminternelia
Posts: 56
Joined: March 21st, 2017, 3:46 am

Re: New UsageMonitor plugin

jminternelia » December 18th, 2018, 4:10 pm

jsmorley wrote:
December 18th, 2018, 3:30 pm

Code: Select all

[Rainmeter]
Update=1000
DynamicWindowSize=1
AccurateText=1

[Variables]

[MeasureHighestUsedCPU]
Measure=Plugin
Plugin=UsageMonitor
Alias=CPU
Blacklist=_Total|Idle|dwm|wmpnetwk|csrss|svchost|lsass|System|system
Index=1

[MeasureThatProcessRAM]
Measure=Plugin
Plugin=UsageMonitor
Alias=RAM
Name=[MeasureHighestUsedCPU]
DynamicVariables=1

[MeasureRAMNumberValue]
Measure=Calc
Formula=MeasureThatProcessRAM

[MeterResult]
Meter=String
MeasureName=MeasureRAMNumberValue
FontSize=12
FontWeight=400
FontColor=255,255,255,255
SolidColor=47,47,47,255
Padding=5,5,5,5
AutoScale=1
NumOfDecimals=1
AntiAlias=1
DynamicVariables=1
Text=Top CPU: [MeasureHighestUsedCPU] at [MeasureHighestUsedCPU:1]%#CRLF#RAM: %1B


1.png


Getting the values is trivial. Displaying them in a String meter takes a little thought. This is because all UsageMonitor measures return two distinct values. A string value that is the "name" of the process, and a number value that is the numeric value returned for the counter.

Since String meter always use the string value when MeasureName is used, to get the number values the way we want them we dynamically use [SectionVariables:] for the number values. This is pretty straightforward with the CPU percentage in [MeasureHighestUsedCPU:1], we just tell it that we want the number with one decimal place.

It is a bit harder with [MeasureThatProcessRAM], since we want to display it not only with only one decimal place, but also AutoScaled. We add AutoScale=1 to the meter, but the rub is, that only works with things defined in MeasureName. Again, MeasureName will only use string values from measures, so we create another measure, [MeasureRAMNumberValue], that results in the same string and number value from [MeasureThatProcessRAM], using just the numeric value. Then we can use that new measure in MeasureName, it uses AutoScale and NumOfDecimals, and all is well.
Perfect.
jminternelia
Posts: 56
Joined: March 21st, 2017, 3:46 am

Re: New UsageMonitor plugin

jminternelia » December 21st, 2018, 2:25 pm

I'm seeing some not insignificant variations between what Task Manager reports and what Usage Monitor shows.

Image

RAM is just about spot on and can be attributed to different update cycles, but 0.9% vs 2.1% on CPU usage? Is that also just difference reported due to variations in update times as well? Stays pretty consistent in that Task Manager is always reporting higher.

Code: Select all

[MeasureHighestUsedCPU1]
Measure=Plugin
Plugin=UsageMonitor
Alias=CPU
Blacklist=_Total|Idle|dwm|wmpnetwk|csrss|svchost|lsass|System|system|Memory Compression|wininit|RemindersServer|spoolsv|IpOverUsbSvc
Index=1
Rollup=1

[MeasureThatProcessRAM1]
Measure=Plugin
Plugin=UsageMonitor
Alias=RAM
Name=[MeasureHighestUsedCPU1]
DynamicVariables=1

[MeasureRAMNumberValue1]
Measure=Calc
Formula=MeasureThatProcessRAM1

[MeterHighestUsedCPU1]
Meter=String
MeasureName=MeasureHighestUsedCPU1
MeasureName2=MeasureCPUforScaling1
AutoScale=1
NumOfDecimals=1
DynamicVariables=1
FontColor=#Color0#
FontFace=Denton
FontSize=7
AntiAlias=1
StringCase=UPPER
Text=%1
InlinePattern=\:
InlineSetting=Color | 251,134,80
InlinePattern2=\.
InlineSetting2=Color | 251,134,80
InlinePattern3=\%
InlineSetting3=Color | 251,134,80
X=0
Y=59

[MeterResult]
Meter=String
MeasureName=MeasureRAMNumberValue1
DynamicVariables=1
FontColor=#Color0#
FontFace=Denton
FontSize=7
AutoScale=1
NumOfDecimals=1
AntiAlias=1
StringCase=UPPER
Text=%1B
InlinePattern=B
InlineSetting=Color | 251,134,80
InlinePattern2=MB
InlineSetting2=Color | 251,134,80
InlinePattern3=GB
InlineSetting3=Color | 251,134,80
X=200
Y=59

[MeterHighestUsedCPU%1]
Meter=String
MeasureName=MeasureHighestUsedCPU1
MeasureName2=MeasureCPUforScaling1
AutoScale=1
NumOfDecimals=1
DynamicVariables=1
FontColor=#Color0#
FontFace=Denton
FontSize=7
AntiAlias=1
Text=[MeasureHighestUsedCPU1:1]
InlinePattern=\:
InlineSetting=Color | 251,134,80
InlinePattern2=\.
InlineSetting2=Color | 251,134,80
InlinePattern3=\%
InlineSetting3=Color | 251,134,80
StringAlign=Right
Y=59
X=372