A question for the devs: I've noticed an oddity with the new UsageMonitor plugin... if you monitor the Rainmeter process, it appears that Rainmeter does use GPU, but the memory used is 0 bytes. Is this really true? (PerfMon shows the same thing, by the way...)

I have finally had a chance to experiment with the UsageMonitor plugin. Some testing led me to the following note in the Rainmeter documentation:

Note: Any Index which returns a current value of 0 will return an empty string as the string value. An instance without a value can't be sorted, and can't exist in this indexed list, as it is indistinguishable from all other instances that are 0.

If I understand correctly, the indexed list of counter instances maintained by the plugin does not include any counter instance whose current value is zero. So there is no way to distinguish between a non-existant instance of a counter, and a counter whose current value is zero? For example, using UsageMonitor alone, I cannot tell if a given program is running but currently using zero percent processor, versus not running at all?

If I am missing something, a *light* tap to the head would be appreciated.

buckb wrote:I have finally had a chance to experiment with the UsageMonitor plugin. Some testing led me to the following note in the Rainmeter documentation:

If I understand correctly, the indexed list of counter instances maintained by the plugin does not include any counter instance whose current value is zero. So there is no way to distinguish between a non-existant instance of a counter, and a counter whose current value is zero? For example, using UsageMonitor alone, I cannot tell if a given program is running but currently using zero percent processor, versus not running at all?

If I am missing something, a *light* tap to the head would be appreciated.

--buckb

You can tell if a program is running by using the name of the program in Name, and getting the PID for it. If the PID is "0", it's not running.

You can using the program name in Name, and get the amount of CPU it is using, but as you say, that doesn't tell if it is just "parked" or "not running".

jsmorley wrote:You can using the program name in Name, and get the amount of CPU it is using, but as you say, that doesn't tell if it is just "parked" or "not running".

Thanks for figuring out what I was getting at, despite my poor example. Allow me to try again with a real-world example.

I have a skin that uses PhysicalDisk counters. I find it useful to distinguish between removable drives that are "offline" (instance does not exist) versus "online" but with no data transfers occurring (counter values of zero). I had hoped to be able to do this using UsageMonitor alone.

If UsageMonitor could return all instances of a given counter, even for counters whose values are zero, then a skin could more easily build a list of online LogicalDisks or PhysicalDisks. Or obtain a list of all running processes. Or do something else useful based upon retrieving a list of all valid Instances for a given Category.

Without "PerfMonDifference=0" perfmon gives me current value and with it — total since boot.

I can't find anything like it in the new UsageMonitor plugin. There is no "total read since boot" counter, there is no option in UsageMonitor plugin similar to "PerfMonDifference".
If I use "RawValue=1" with this counter then number value of measure is 0.

NomFerp plugin also had the ability to retrieve total value using "Mode=Normal".

Good solution, however there is a missing option. You have to add a DynamicVariables=1 option to the [MeterTotalProcesses] meter, because it uses a section variable and due to this, it requires to set the dynamic variables.