Since the PerfMon plugin has been deprecated, I needed to move my skins to a new source of performance data. Although UsageMonitor has great new features and much of what I need, I decided to try my hand at a plugin of my own. I have called my plugin PerfMonPDH. It has been written from the ground up using the Windows Performance Data Helper interface to retrieve performance data.
PerfMonPDH borrows features from the original PerfMon plugin and from the new UsageMonitor plugin. It is organized using the parent/child model. Parent measures query and process peformance data, while child measures are used to retrieve the data that the parent has generated.
Anything that could be done with the original PerfMon plugin can be done with PerfMonPDH, although changes must be made to your skin to use PerfMonPDH's parent/child structure and different option names. Many of UsageMonitor's features are supported, but not all:
- PerfMonPDH does not support UsageMonitor's Alias, Rollup and Percent options
- PerfMonPDH does not support UsageMonitor's Total and Average indexes
- PerfMonPDH does not support UsageMonitor's PIDToName option
- PerfMonPDH is not multithreaded
I have tested the plugin on US English Windows 7 (64-bit) and US English Windows 10 Home and Pro (64-bit), and with Rainmeter 4.2.0 (32-bit & 64-bit).
PerfMonPDH's performance is somewhere between that of the original PerfMon and UsageMonitor. PerfMonPDH does not have the sophisticated counter aggregation and sharing that UsageMonitor has, nor is PerfMonPDH multithreaded like UsageMonitor. PerfMonPDH has been architected, however, to be multithreaded should the need arise.
In light of UsageMonitor's feature set, I have no idea if PerfMonPDH is of interest to anyone but me. For my purposes, PerfMonPDH is complete, although I continue to tinker around the edges. I am mostly settled on the parent and child types and options, but I might still make changes.
If you choose to give PerfMonPDH a go, I welcome your comments and suggestions. If there is sufficient interest, and after a round or two of bug fixes (there are *always* bugs!), I'll post the source.
Unzip the SystemMonitor skin into your skins directory.
Copy the appropriate version (32-bit or 64-bit) of PerfMonPDH.dll to your Rainmeter Plugins directory.
There is a "readme.txt" in the zip file's Plugins directory.
I've written a set of example skins, called SystemMonitor, to exercise the plugin. The "System.ini" variant demonstrates use of the plugin's PerfMon-style measures, while the other variants demonstrate the plugin's UsageMonitor-style measures. The skins share a common control interface:
- Click on a column heading to sort by that column
- Click on "Rollup: On/Off" to enable or disable rollup
- Click on "Filter: On/Off" to enable or disable Blacklist and Whitelist filtering
- Click on "Sort: up/down:" to switch between SortOrder=Ascending and SortOrder=Descending
- Hover over the label "Filter:" to see the Blacklist and Whitelist
- Position the mouse cursor anywhere in the statistics display area and use the mouse wheel to scroll the list
- Position the mouse cursor anywhere in the statistics display area and click the middle mouse button to reset the list to the beginning
- Click on the skin's title to cycle to the next variant
PerfMonPDH uses English, non-localized Object and Counter names. Skins used on non-English installations of Windows should work correctly, but they must still use the English Object and Counter names. This functionality HAS NOT BEEN VERIFIED, but is based on my reading of the Microsoft documentation for the PDH interface. Given the grief localization caused UsageMonitor's developer(s), I'm a bit dubious of Microsoft's claims regarding the PDH interface.
188.8.131.52 Initial release
184.108.40.206 Suppressed unneeded debugging log entries & fixed up/down arrow character encoding
220.127.116.11 Added support for rollup, changes to option names require skin updates
18.104.22.168 Included source code with release (VisualStudio 2015)
22.214.171.124 Added LogicalDisk rollup, new child measures, changed option "DisplayName"