It is currently September 29th, 2024, 11:31 am

Top Memory Processes Alternative

General topics related to Rainmeter.
User avatar
eclectic-tech
Rainmeter Sage
Posts: 5534
Joined: April 12th, 2012, 9:40 pm
Location: Cedar Point, Ohio, USA

Top Memory Processes Alternative

Post by eclectic-tech »

Top Processes by Memory
EDIT: I changed direction, and did this using Windows built-in Tasklist.exe... find a working example here
This is a possible solution for displaying the top memory processes in Rainmeter skins for anyone having issues with the external TopProcesses plugin.

I have not tried this on other systems, but the cmd.exe utility program I use, should work on XP through all current Windows versions.

Speaking of the utility program, it is part of a suite of tools from Miscrosoft's SysInternals.
In order to use this example, you have to download and install the PSTools package from http://www.sysinternals.com.
The program is free, but may be restricted outside the U.S.A.

The license agreement does not allow distribution, so you have unrestricted use, but cannot include the program in any skins you create and post.

So, what madness drove me here... :?

I 'blame' Brian for creating the RunCommand plugin that makes using command line utilities child's play to use with Rainmeter. :D
(I modified his example skin for this...you may notice some resemblance) :sly:

How it Works

The RunCommand runs PSList.exe, which must be in 'TopMemoryProcesses\@Resources' folder for my skin. PSList generates an output of the running processes (in no particular order) and the RunCommand save the file as 'Command1.txt'. The output of this program is displayed on the left side of my sample skin.



Now the issues is to sort this list, using Working Set (WS) values (that is the value Task Manager displays), from the highest memory use to lowest. To do this, the RunCommand is used again, this time a 'Sort' command is used to sort the items in 'Command1.txt' by WS memory and write the results to 'command2.txt'.

That file is then parsed to extract the details of the top 5 memory processes.

There's a reason I have almost no hair... :p

You can examine my Sort command & RegExp in the code below. I added some comments in the code, to explain what is happening. If you don't understand something, you can ask.

Creating a working version requires:
* Download & Install PSTools from http://www.sysinternals.com
* Create a new 'root' folder for this skin; '{Documents}\Rainmeter\Skins\TopMemoryProcesses'
* Create a sub-folder '@Resources'
* Copy 'pslist.exe' from your PSTools install to the '@Resources' folder you just created
* Copy this code, paste into you text editor, save it as 'TopMemoryProcesses.ini' in the root folder you created above; 'TopMemoryProcesses'
* Refresh All or re=start Rainmeter

When you open the skin the first time, it will be pretty much 'blank', within 5 seconds, the RunCommands will execute and the skin will be populated with the information. A counter calc measure 'fires' the RunCommand measures every 5 seconds to refresh the display

This may not work for everyone. If it doesn't, I can try to help, but my intention is to offer the idea and process, and let other customize it for their use.

EDIT: Did I mention you also need to install the external RunCommand Plugin by Brian. The easiest way is to install his demo skin from there.

Also corrected scaling to show correct Megabits value (not Kilo-bits).

TopMemoryProcesses.ini:

Code: Select all

[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,192
OnCloseAction=[!CommandMeasure Command_1 "Kill"]

[Variables]
Item="(.*)\s{2,}(\d{1,4})\s.*(\d{1,8})\s.*(\d{1,8})\s.*\n"
UpdateSeconds=5

;===========================================================================================
; Measures - Timing
;===========================================================================================
[mCounter]
Measure=Calc
Formula=(mCounter+1)%#UpdateSeconds#
IfEqualValue=0
IfEqualAction=[!CommandMeasure Command_1 Run][!UpdateMeasure Command_1][!UpdateMeter Status_1][!CommandMeasure Command_2 Run][!UpdateMeasure Command_2][!Redraw]
; Controls the time in seconds (with Update=1000 in [Rainmeter]) between creating/parsing files

;===========================================================================================
; Measures - RunCommand
;===========================================================================================
[Command_1]
Measure=Plugin
Plugin=RunCommand
Program=""#@#pslist.exe""
Parameter=""-m""
StartInFolder=#CurrentPath#
OutPutType=Ansi
OutputFile=Command1.txt
FinishAction=[!UpdateMeasure #CURRENTSECTION#][!SetOption Output MeasureName Command_1][!UpdateMeter Output][!Redraw]
IfBelowValue=1
IfBelowAction=[!SetOption Status_1 SolidColor "0,0,0"][!UpdateMeter Status_1]
IfEqualValue=1
IfEqualAction=[!SetOption Status_1 SolidColor "0,102,0"][!UpdateMeter Status_1]
IfAboveValue=1
IfAboveAction=[!SetOption Status_1 SolidColor "255,0,0"][!UpdateMeter Status_1][!About]
; Runs the SysInternal pslist program in DOS and saves it as 'command1.txt' in current folder
 
[Command_2]
Measure=Plugin
Plugin=RunCommand
Parameter=""sort /+32 /R command1.txt /o command2.txt""
StartInFolder=#CurrentPath#
FinishAction=[!CommandMeasure mWebParser "Update"]
; Takes 'command1.txt', sorts by Woking Set memory (highest to lowest) and saves as 'command2.txt'

;===========================================================================================
; Measures - Parsing
;===========================================================================================
[mWebParser]
Measure=Plugin
Plugin=WebParser
URL=file://#CurrentPath#command2.txt
RegExp="(?siU).* for (.*):.*- (.*)\n#Item##Item##Item##Item##Item#"
ForceReload=1
StringIndex=1
; Parses 'command2.txt' and pulls PC name, top 5 process names, PID, virtual mem, working set mem

[mSysInternalLink]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=2

[mProcess1]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=3

[mProcess1ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=4

[mProcess1VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=5

[mProcess1WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=6

[mProcess1VMNum]
Measure=Calc
Formula=mProcess1VM*1000
Substitute=" ":""
; Needed to convert parsed value to a number (in Megabits)...  otherwise 'AutoScale' does not work in related string meters. Removes space before multiplier (M, G, T)

[mProcess1WSNum]
Measure=Calc
Formula=mProcess1WS*1000
Substitute=" ":""

[mProcess2]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=7

[mProcess2ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=8

[mProcess2VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=9

[mProcess2WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=10

[mProcess2VMNum]
Measure=Calc
Formula=mProcess2VM*1000
Substitute=" ":""

[mProcess2WSNum]
Measure=Calc
Formula=mProcess2WS*1000
Substitute=" ":""

[mProcess3]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=11

[mProcess3ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=12

[mProcess3VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=13

[mProcess3WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=14

[mProcess3VMNum]
Measure=Calc
Formula=mProcess3VM*1000
Substitute=" ":""

[mProcess3WSNum]
Measure=Calc
Formula=mProcess3WS*1000
Substitute=" ":""

[mProcess4]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=15

[mProcess4ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=16

[mProcess4VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=17

[mProcess4WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=18

[mProcess4VMNum]
Measure=Calc
Formula=mProcess4VM*1000
Substitute=" ":""

[mProcess4WSNum]
Measure=Calc
Formula=mProcess4WS*1000
Substitute=" ":""

[mProcess5]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=19

[mProcess5ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=20

[mProcess5VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=21

[mProcess5WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=22

[mProcess5VMNum]
Measure=Calc
Formula=mProcess5VM*1000
Substitute=" ":""

[mProcess5WSNum]
Measure=Calc
Formula=mProcess5WS*1000
Substitute=" ":""

;===========================================================================================
; Example of getting the Process name to use in PerfMon plugin 
; I find this unreliable and don't use in this skin, but it may be needed by someone
;===========================================================================================
[mWorkingSet5]
Measure=Plugin
Plugin=Perfmon
PerfMonObject=Process
PerfMonCounter=Working Set
PerfMonInstance=[mProcess5]
PerfMonDifference=0
DynamicVariables=1

;===========================================================================================
; Meter Styles
;===========================================================================================
[sTP]
H=12
FontFace=Lucida Console
FontSize=9
FontColor=255,255,255
AntiAlias=1

[sLabel]
Y=2R
W=300
H=12
FontFace=Lucida Console
FontSize=9
FontColor=255,255,255
;StringCase=UPPER
AntiAlias=1

[sStatus]
X=10R
Y=r
W=265
FontColor=255,255,255
Prefix="Status: "
DynamicVariables=1

;===========================================================================================
; Meters - Information String
;===========================================================================================
[Label_1]
Meter=String
MeterStyle=sLabel
Text=Command: Processes
LeftMouseUpAction=[!CommandMeasure Command_1 Run][!UpdateMeasure Command_1][!UpdateMeter Status_1][!Redraw]

[Status_1]
Meter=String
MeterStyle=sLabel | sStatus
Text=[Command_1:]

[Output]
Meter=String
MeasureName=Command_1
MeterStyle=sLabel
Y=5R
W=575
H=500
FontColor=255,255,255
ClipString=1
SolidColor=50,50,50,100
Padding=0,2,0,0
MouseOverAction=""
MouseLeaveAction=""

;===========================================================================================
; Meters - Top Processes
;===========================================================================================
[BGProcess]
Meter=Image
X=R
Y=0
W=320
H=160
SolidColor=50,50,50,100

[TopProcessTitle]
Meter=String
MeterStyle=sTP
X=5r
Y=2r
FontSize=12
Text="Top 5 Memory Processes"

[PCName]
Meter=String
MeterStyle=sTP
MeasureName=mWebParser
X=([TopProcessTitle:X])
Y=25r
PreFix="Host: "

[SysinternalLink]
Meter=String
MeterStyle=sTP
MeasureName=mSysInternalLink
PreFix="Provided by: http://"
X=([TopProcessTitle:X])
Y=20r
LeftMouseUpAction="http://[mSysInternalLink]"
DynamicVariables=1

[TopProcessName]
Meter=String
MeterStyle=sTP
X=([TopProcessTitle:X])
Y=40r
StringStyle=Bold
Text="Process : PID"

[TopProcessMem]
Meter=String
MeterStyle=sTP
X=([BGProcess:W]-20)r
Y=r
StringAlign=Right
StringStyle=Bold
Text="V Mem | WS Mem"

[Rule1]
Meter=Image
X=([TopProcessTitle:X])
Y=2R
H=1
SolidColor=210,210,210,210
W=([BGProcess:W]-15)

[TopProcess1]
Meter=String
MeterStyle=sTP
MeasureName=mProcess1
MeasureName2=mProcess1ID
X=([TopProcessTitle:X])
Y=10r
Text=%1 : %2
DynamicVariables=1

[TopProcess1Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess1WSNum
MeasureName2=mProcess1VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess2]
Meter=String
MeterStyle=sTP
MeasureName=mProcess2
MeasureName2=mProcess2ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess2Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess2WSNum
MeasureName2=mProcess2VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess3]
Meter=String
MeterStyle=sTP
MeasureName=mProcess3
MeasureName2=mProcess3ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess3Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess3WSNum
MeasureName2=mProcess3VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess4]
Meter=String
MeterStyle=sTP
MeasureName=mProcess4
MeasureName2=mProcess4ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess4Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess4WSNum
MeasureName2=mProcess4VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess5]
Meter=String
MeterStyle=sTP
MeasureName=mProcess5
MeasureName2=mProcess5ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess5Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess5WSNum
MeasureName2=mProcess5VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1
EDIT 2: Extra example skin with just the Top 5 displayed! Just save this in the same 'TopMemoryProcesses' folder (as Top5Memory.ini, or any {uniquename}.ini) and !Refresh All.


Top5Memory.ini

Code: Select all

[Rainmeter]
Update=1000
BackgroundMode=2
SolidColor=0,0,0,192
OnCloseAction=[!CommandMeasure Command_1 "Kill"]

[Variables]
Item="(.*)\s{2,}(\d{1,4})\s.*(\d{1,8})\s.*(\d{1,8})\s.*\n"
UpdateSeconds=5

;===========================================================================================
; Measures - Timing
;===========================================================================================
[mCounter]
Measure=Calc
Formula=(mCounter+1)%#UpdateSeconds#
IfEqualValue=0
IfEqualAction=[!CommandMeasure Command_1 Run][!UpdateMeasure Command_1][!CommandMeasure Command_2 Run][!UpdateMeasure Command_2][!SetOption Activity SolidColor "0,255,0,150"][!Redraw]
IfAboveValue=1
IfAboveAction=[!SetOption Activity SolidColor "50,50,50,100"][!Redraw]
; Controls the time in seconds (with Update=1000 in [Rainmeter]) between creating/parsing files

;===========================================================================================
; Measures - RunCommand
;===========================================================================================
[Command_1]
Measure=Plugin
Plugin=RunCommand
Program=""#@#pslist.exe""
Parameter=""-m""
StartInFolder=#CurrentPath#
OutPutType=Ansi
OutputFile=Command1.txt
; Runs the SysInternal pslist program in DOS and saves it as 'command1.txt' in current folder
 
[Command_2]
Measure=Plugin
Plugin=RunCommand
Parameter=""sort /+32 /R command1.txt /o command2.txt""
StartInFolder=#CurrentPath#
FinishAction=[!CommandMeasure mWebParser "Update"]
; Takes 'command1.txt', sorts by Woking Set memory (highest to lowest) and saves as 'command2.txt'

;===========================================================================================
; Measures - Parsing
;===========================================================================================
[mWebParser]
Measure=Plugin
Plugin=WebParser
URL=file://#CurrentPath#command2.txt
RegExp="(?siU).* for (.*):.*- (.*)\n#Item##Item##Item##Item##Item#"
ForceReload=1
StringIndex=1
FinishAction=[!UpdateMeter *][!Redraw]
; Parses 'command2.txt' and pulls PC name, top 5 process names, PID, virtual mem, working set mem

[mSysInternalLink]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=2

[mProcess1]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=3

[mProcess1ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=4

[mProcess1VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=5

[mProcess1WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=6

[mProcess1VMNum]
Measure=Calc
Formula=mProcess1VM*1000
Substitute=" ":""
; Needed to convert parsed value to a number... otherwise 'AutoScale' does not work in related string meters

[mProcess1WSNum]
Measure=Calc
Formula=mProcess1WS*1000
Substitute=" ":""
; Needed to convert parsed value to a number... otherwise 'AutoScale' does not work in related string meters

[mProcess2]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=7

[mProcess2ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=8

[mProcess2VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=9

[mProcess2WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=10

[mProcess2VMNum]
Measure=Calc
Formula=mProcess2VM*1000
Substitute=" ":""

[mProcess2WSNum]
Measure=Calc
Formula=mProcess2WS*1000
Substitute=" ":""

[mProcess3]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=11

[mProcess3ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=12

[mProcess3VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=13

[mProcess3WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=14

[mProcess3VMNum]
Measure=Calc
Formula=mProcess3VM*1000
Substitute=" ":""

[mProcess3WSNum]
Measure=Calc
Formula=mProcess3WS*1000
Substitute=" ":""

[mProcess4]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=15

[mProcess4ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=16

[mProcess4VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=17

[mProcess4WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=18

[mProcess4VMNum]
Measure=Calc
Formula=mProcess4VM*1000
Substitute=" ":""

[mProcess4WSNum]
Measure=Calc
Formula=mProcess4WS*1000
Substitute=" ":""

[mProcess5]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=19

[mProcess5ID]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=20

[mProcess5VM]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=21

[mProcess5WS]
Measure=Plugin
Plugin=WebParser
URL=[mWebParser]
StringIndex=22

[mProcess5VMNum]
Measure=Calc
Formula=mProcess5VM*1000
Substitute=" ":""

[mProcess5WSNum]
Measure=Calc
Formula=mProcess5WS*1000
Substitute=" ":""

;===========================================================================================
; Meter Styles
;===========================================================================================
[sTP]
H=12
FontFace=Lucida Console
FontSize=9
FontColor=255,255,255
AntiAlias=1
Padding=0,0,0,6

;===========================================================================================
; Meters - Top Processes
;===========================================================================================
[BGProcess]
Meter=Image
X=0
Y=0
W=320
H=180
SolidColor=50,50,50,100

[Activity]
Meter=Image
X=315
Y=0
W=5
H=5
SolidColor=50,50,50,100

[TopProcessTitle]
Meter=String
MeterStyle=sTP
X=-310r
Y=6r
FontSize=12
Text="Top 5 Memory Processes"

[PCName]
Meter=String
MeterStyle=sTP
MeasureName=mWebParser
X=([TopProcessTitle:X])
Y=25r
PreFix="Host: "

[SysinternalLink]
Meter=String
MeterStyle=sTP
MeasureName=mSysInternalLink
PreFix="Provided by: http://"
X=([TopProcessTitle:X])
Y=20r
LeftMouseUpAction="http://[mSysInternalLink]"
DynamicVariables=1

[TopProcessName]
Meter=String
MeterStyle=sTP
X=([TopProcessTitle:X])
Y=30r
StringStyle=Bold
Text="Process : PID"

[TopProcessMem]
Meter=String
MeterStyle=sTP
X=([BGProcess:W]-20)r
Y=r
StringAlign=Right
StringStyle=Bold
Text="V Mem | WS Mem"

[Rule1]
Meter=Image
X=([TopProcessTitle:X])
Y=2R
H=1
SolidColor=210,210,210,210
W=([BGProcess:W]-15)

[TopProcess1]
Meter=String
MeterStyle=sTP
MeasureName=mProcess1
MeasureName2=mProcess1ID
X=([TopProcessTitle:X])
Y=10r
Text=%1 : %2
DynamicVariables=1

[TopProcess1Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess1WSNum
MeasureName2=mProcess1VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess2]
Meter=String
MeterStyle=sTP
MeasureName=mProcess2
MeasureName2=mProcess2ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess2Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess2WSNum
MeasureName2=mProcess2VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess3]
Meter=String
MeterStyle=sTP
MeasureName=mProcess3
MeasureName2=mProcess3ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess3Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess3WSNum
MeasureName2=mProcess3VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess4]
Meter=String
MeterStyle=sTP
MeasureName=mProcess4
MeasureName2=mProcess4ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess4Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess4WSNum
MeasureName2=mProcess4VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1

[TopProcess5]
Meter=String
MeterStyle=sTP
MeasureName=mProcess5
MeasureName2=mProcess5ID
X=([TopProcessTitle:X])
Y=20r
Text=%1 : %2
DynamicVariables=1

[TopProcess5Mem]
Meter=String
MeterStyle=sTP
MeasureName=mProcess5WSNum
MeasureName2=mProcess5VMNum
Text=%2 | %1
X=([BGProcess:W]-15)r
Y=r
StringAlign=Right
NumofDecimals=1
AutoScale=2
DynamicVariables=1