C:\WorkTemp>pp -o genVpLoadPALTemplate.exe genVpLoadPALTemplate.pl C:\WorkTemp>genVpLoadPALTemplate.exe Unrecognized character \xEF at script/genVpLoadPALTemplate.pl line 1. Using freeware/shareware version of Perl2Exe (though a newer version t +han what my Perl version is) to do the compilation, the tool fails to + compile with these errors: C:\Perl2Exe>Perl2Exe c:\WorkTemp\genVpLoadPALTemplate.pl -o= c:\WorkTe +mp\genVpLo adPALTemplateb.exe Perl2Exe V8.82 Copyright (c) 1997-2007 IndigoSTAR Software This is an evaluation version of Perl2Exe, which may be used for 30 da +ys. For more information see the attached pxman.htm file, or visit http://www.indigostar.com Converting 'c:/WorkTemp/genVpLoadPALTemplate.pl -o= c:\WorkTemp\genVpL +oadPALTemp lateb.exe' to genVpLoadPALTemplate.exe Warning: Can't locate this.pm at c:\WorkTemp\genVpLoadPALTemplate.pl line 67 @INC = C:\Perl\lib, C:\Perl\site\lib, . Warning: Can't locate this.pm at c:\WorkTemp\genVpLoadPALTemplate.pl line 123 @INC = C:\Perl\lib, C:\Perl\site\lib, . Warning: Can't locate this.pm at c:\WorkTemp\genVpLoadPALTemplate.pl line 154 @INC = C:\Perl\lib, C:\Perl\site\lib, . Warning: Can't locate this.pm at c:\WorkTemp\genVpLoadPALTemplate.pl line 210 @INC = C:\Perl\lib, C:\Perl\site\lib, .
Looking through the script, the failures are from lines in the script that are inside a multiline print block, particularly the lines that begin with "Use".
print OUTPUTSCRIPT <<SCRIPTHEADER; ...omitted blocks... of time.<BR> <BR> Use this analysis in correlation with the Available Memory analysis, a +nd total process (i.e. Process(*)) private bytes allocation analysis. + If you suspect a ...omitted blocks... SCRIPTHEADER </p><p> Here's the script, bit messy but works... </p><c> ###################################################################### +########## # genVpLoadPALTemplate.pl # Written by: David Luu # Last updated: 03/18/10 # # Script to generate a PAL analysis report template for x # of VP clie +nts # running on a single machine # # Revision History # 03/18/10 - v1.0 - initial release # ###################################################################### +########## ### No input display ### if (@ARGV[0] eq "?" || @ARGV < 1 || @ARGV > 2) { print "\n"; print " Usage: genVpLoadPALTemplate.pl numClients [OutputScriptFi +le]\n"; print " Arg0 Arg1\n"; print "\n"; print " Notes: 1st ARG => number of VP clients running on single +machine.\n"; print " 2nd ARG => Optional name & path of output script f +ile.\n"; print " Default is VpLoadPALTemplate.xml\n\n"; print " Example: genVpLoadPALTemplate.pl 16\n"; print "\n"; exit; } ### Initialization ### # Save command line arguments/parameters to variables my $numVpClients = @ARGV[0]; my $CmdLine_OutputFile = ""; if(@ARGV > 1){ $CmdLine_OutputFile = @ARGV[1]; }else{ $CmdLine_OutputFile = "VpLoadPALTemplate.xml"; } # Open input & output files for parsing & processing open (OUTPUTSCRIPT, ">$CmdLine_OutputFile") || die ("FATAL ERROR: Coul +d not create output script file: $^E"); print OUTPUTSCRIPT <<SCRIPTHEADER; <?xml version="1.0"?> <PAL NAME="ViewPoint Client Analysis for $numVpClients VP clients on s +ame PC" DESCRIPTION="System performance analysis customized for analy +zing $numVpClients VP clients running on same PC." CONTENTOWNERS="Dav +id Luu" FEEDBACKEMAILADDRESS="dluu\@vertical.com" VERSION="1.0"> <QUESTION DATATYPE="string" DEFAULTVALUE="1" QUESTIONVARNAME="Number +OfProcessors">How many processors (physical and virtual) does the ser +ver have?</QUESTION> <QUESTION DATATYPE="boolean" DEFAULTVALUE="False" QUESTIONVARNAME="T +hreeGBSwitch">Was the /3GB switch being used on the server?</QUESTION +> <QUESTION DATATYPE="boolean" DEFAULTVALUE="False" QUESTIONVARNAME="S +ixtyFourBit">Was the computer 64-bit?</QUESTION> <QUESTION DATATYPE="string" DEFAULTVALUE="1" QUESTIONVARNAME="TotalM +emory">How much memory did the server have in gigabytes?</QUESTION> <QUESTION QUESTIONVARNAME="KernelDumpOnCDrive" DATATYPE="boolean" DE +FAULTVALUE="True">Is the System set to create a MEMORY.DMP file on C: + drive in the event of a server crash (blue screen). By default this +is set to C: drive.</QUESTION> <ANALYSIS NAME="Memory Leak Detection for Vertical.Wave.ViewPoint" E +NABLED="True" ANALYZECOUNTER="\\Process(Vertical.Wave.ViewPoint)\\Pri +vate Bytes" CATEGORY="Process"> <COUNTER NAME="\\Process(Vertical.Wave.ViewPoint)\\Private Bytes" +MINVARNAME="MinPrivateBytes" AVGVARNAME="AvgPrivateBytes" MAXVARNAME= +"MaxPrivateBytes" TRENDVARNAME="TrendPrivateBytes" DATATYPE="Integer" +> </COUNTER> <THRESHOLD NAME="Memory: an increasing trend of 10MB's per hour de +tected for Vertical.Wave.ViewPoint" CONDITION="Warning" COLOR="Yellow +" PRIORITY="50"> <DESCRIPTION><![CDATA[If the private bytes size is greater than +<B>100MB</B> and the process is increasing at a rate greater than <B> +10MB's</B> per hour, then an aggressive memory leak is suspected. ]]></DESCRIPTION> <CODE><![CDATA[' If the private bytes is over 100MBs and if the +trend shows a 10MB increase at each hour. If IsNull(AvgPrivateBytes) = False AND IsNull(TrendPrivateBytes) = Fal +se Then If AvgPrivateBytes > 100000000 AND TrendPrivateBytes > 10000000 Then IsTrendThresholdBroken = True End If End If]]></CODE> </THRESHOLD> <CHART CHARTTYPE="Line" CATEGORIES="AUTO" MAXCATEGORYLABELS="0" LE +GEND="ON" VALUES="AUTO" GROUPSIZE="640x480" OTSFORMAT="MM/dd hh:mm" C +HARTTITLE="\\Process(Vertical.Wave.ViewPoint)\\Private Bytes" DATASOU +RCE="\\Process(Vertical.Wave.ViewPoint)\\Private Bytes" DATATYPE="Int +eger"> </CHART> <DESCRIPTION><![CDATA[This analysis determines if the process is c +onsuming a large chunk of the system's memory and if the process is i +ncreasing in memory consumption over time. A process consuming large +portions of memory is okay as long as the process returns the memory +back to the system. Look for increasing trends in the chart. An incre +asing trend over a long period of time could indicate a memory leak. +Private Bytes is the current size, in bytes, of memory that this proc +ess has allocated that cannot be shared with other processes. This an +alysis checks for a 10MB’s per hour increasing trends. Use this analy +sis in correlation with the Available Memory analysis, and total proc +ess (i.e. Process(*)) private bytes allocation analysis.<BR> <BR> Also, keep in mind that newly started processes will initially appear +as a memory leak when it is simply normal start up behavior. A memory + leak is when a process continues to consume memory and not releasing + memory over a long period of time.<BR> <BR> Use this analysis in correlation with the Available Memory analysis, a +nd total process (i.e. Process(*)) private bytes allocation analysis. + If you suspect a memory leak condition, then install and use the Deb +ug Diag tool. For more information on the Debug Diag Tool, see the re +ferences section.<BR> <BR> <B>References:</B><BR> <BR> Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details. +aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>< +/DESCRIPTION> </ANALYSIS> <ANALYSIS NAME="Handle Leak Detection for Vertical.Wave.ViewPoint" E +NABLED="True" ANALYZECOUNTER="\\Process(Vertical.Wave.ViewPoint)\\Han +dle Count" CATEGORY="Process"> <COUNTER NAME="\\Process(Vertical.Wave.ViewPoint)\\Handle Count" M +INVARNAME="MinHandleCount" AVGVARNAME="AvgHandleCount" MAXVARNAME="Ma +xHandleCount" TRENDVARNAME="TrendHandleCount" DATATYPE="Integer"> </COUNTER> <THRESHOLD NAME="Handle Leak Suspected - more than 2000 handles an +d a trend of more than 100 handles per hour" CONDITION="Warning" COLO +R="Yellow" PRIORITY="50"> <DESCRIPTION><![CDATA[Checks for any process with a handle count + greater than <B>2000</B> and if the trend is greater than <B>100</B> + handles per hour. If so, check the chart to determine if the counter + is on an increasing trend potentially indicating a handle leak.]]></ +DESCRIPTION> <CODE><![CDATA[If IsNull(AvgHandleCount) = False AND IsNull(Tren +dHandleCount) = False Then If AvgHandleCount > 2000 AND TrendHandleCount > 100 Then IsTrendThresholdBroken = True End If End If]]></CODE> </THRESHOLD> <CHART CHARTTYPE="Line" CATEGORIES="AUTO" MAXCATEGORYLABELS="0" LE +GEND="ON" VALUES="AUTO" GROUPSIZE="640x480" OTSFORMAT="MM/dd hh:mm" C +HARTTITLE="\\Process(Vertical.Wave.ViewPoint)\\Handle Count" DATASOUR +CE="\\Process(Vertical.Wave.ViewPoint)\\Handle Count" DATATYPE="Integ +er"> </CHART> <DESCRIPTION><![CDATA[This analysis checks the process to determin +e how many handles it has open and determines if a handle leak is sus +pected. A process with a large number of handles and/or an aggresive +upward trend could indicate a handle leak which typically results in +a memory leak. The total number of handles currently open by this pro +cess. This number is equal to the sum of the handles currently open b +y each thread in this process.]]></DESCRIPTION> </ANALYSIS> <ANALYSIS NAME="Vertical.Wave.ViewPoint Processor Utilization" ENABL +ED="True" ANALYZECOUNTER="\\Process(Vertical.Wave.ViewPoint)\\% Proce +ssor Time" CATEGORY="Process"> <COUNTER NAME="\\Process(Vertical.Wave.ViewPoint)\\% Processor Tim +e" MINVARNAME="MinProcess_PercentProcessorTime" AVGVARNAME="AvgProces +s_PercentProcessorTime" MAXVARNAME="MaxProcess_PercentProcessorTime" +TRENDVARNAME="TrendProcess_PercentProcessorTime" DATATYPE="integer" / +> <CHART CHARTTITLE="\\Process(Vertical.Wave.ViewPoint)\\% Processor + Time" OTSFORMAT="MM/dd hh:mm" GROUPSIZE="640x480" CATEGORIES="AUTO" +DATATYPE="integer" LEGEND="ON" MAXCATEGORYLABELS="0" CHARTTYPE="Line" + VALUES="AUTO" DATASOURCE="\\Process(Vertical.Wave.ViewPoint)\\% Proc +essor Time" /> <THRESHOLD NAME="Significant Processor Use Suspected for Vertical. +Wave.ViewPoint - more than 10% CPU utilization" CONDITION="Warning" C +OLOR="Yellow" PRIORITY="50"> <DESCRIPTION><![CDATA[This analysis checks if the process is con +suming a significant amount of processor time, as specified by the cu +rrent average/maximum threshold of 10% CPU utilization.]]></DESCRIPTI +ON> <CODE><![CDATA[ If AvgProcess_PercentProcessorTime > 7Then IsTrendThresholdBroken = True IsAvgThresholdBroken = True End If If AvgProcess_PercentProcessorTime > 10 Or MaxProcess_PercentProcessor +Time > 10 Then IsMaxThresholdBroken = True End If]]></CODE> </THRESHOLD> <DESCRIPTION><![CDATA[% Processor Time is the percentage of elapse +d time that all of process threads used the processor to execution in +structions. An instruction is the basic unit of execution in a comput +er, a thread is the object that executes instructions, and a process +is the object created when a program is run. Code executed to handle +some hardware interrupts and trap conditions are included in this cou +nt.]]></DESCRIPTION> </ANALYSIS> <ANALYSIS NAME=".NET CLR Memory # Bytes in all Heaps for Vertical.Wa +ve.ViewPoint" ENABLED="True" ANALYZECOUNTER="\\.NET CLR Memory(Vertic +al.Wave.ViewPoint)\\# Bytes in all Heaps" CATEGORY="Process"> <COUNTER NAME="\\.NET CLR Memory(Vertical.Wave.ViewPoint)\\# Bytes + in all Heaps" MINVARNAME="MinNETCLRMemory_#BytesinallHeaps" AVGVARNA +ME="AvgNETCLRMemory_#BytesinallHeaps" MAXVARNAME="MaxNETCLRMemory_#By +tesinallHeaps" TRENDVARNAME="TrendNETCLRMemory_#BytesinallHeaps" DATA +TYPE="integer" /> <CHART CHARTTITLE="\\.NET CLR Memory(Vertical.Wave.ViewPoint)\\# B +ytes in all Heaps" OTSFORMAT="MM/dd hh:mm" GROUPSIZE="640x480" CATEGO +RIES="AUTO" DATATYPE="integer" LEGEND="ON" MAXCATEGORYLABELS="0" CHAR +TTYPE="Line" VALUES="AUTO" DATASOURCE="\\.NET CLR Memory(Vertical.Wav +e.ViewPoint)\\# Bytes in all Heaps" /> <THRESHOLD NAME="Significant .NET Heap usage for Vertical.Wave.Vie +wPoint, possible memory leak." CONDITION="Warning" COLOR="#FFFF00" PR +IORITY="50"> <DESCRIPTION><![CDATA[This analysis checks if the process's .NET + heap has exceeded 32 MBytes and if the trend shows a rate increase o +f 10 MBytes per hour, in which case, a memory leak may be occuring, o +r at least the process is consuming a significant amount of memory re +sources on the .NET side.]]></DESCRIPTION> <CODE><![CDATA[' If the heap usage is over 32MBs and if the tren +d shows a 10MB increase at each hour. If IsNull(AvgNETCLRMemory_#BytesinallHeaps) = False AND IsNull(TrendNE +TCLRMemory_#BytesinallHeaps) = False Then If AvgNETCLRMemory_#BytesinallHeaps > 32000000 AND TrendNETCLRMemory +_#BytesinallHeaps > pMRate000000 Then IsTrendThresholdBroken = True End If End If]]></CODE> </THRESHOLD> <DESCRIPTION><![CDATA[This counter is the sum of four other counte +rs; Gen 0 Heap Size; Gen 1 Heap Size; Gen 2 Heap Size and the Large O +bject Heap Size. This counter indicates the current memory allocated +in bytes on the GC Heaps. <BR> <BR> This analysis checks if the process's .NET heap has exceeded 32 MBytes + and if the trend shows a rate increase of 10 MBytes per hour, in whi +ch case, a memory leak may be occuring, or at least the process is co +nsuming a significant amount of memory resources on the .NET side.<BR +> <BR> Also, keep in mind that newly started processes will initially appear +as a memory leak when it is simply normal start up behavior. A memory + leak is when a process continues to consume memory and not releasing + memory over a long period of time.<BR> <BR> Use this analysis in correlation with the Available Memory analysis, a +nd total process (i.e. Process(*)) private bytes allocation analysis. + If you suspect a memory leak condition, then install and use the Deb +ug Diag tool. For more information on the Debug Diag Tool, see the re +ferences section.<BR> <BR> <B>References:</B><BR> <BR> Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details. +aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>< +/DESCRIPTION> </ANALYSIS> SCRIPTHEADER ### End Step 1 ### ### Functions ######################################################## +########## for($i=1;$i<=$numVpClients-1;$i++){ print OUTPUTSCRIPT <<CLIENTBLOCK; <ANALYSIS NAME="Memory Leak Detection for Vertical.Wave.ViewPoint#$i" +ENABLED="True" ANALYZECOUNTER="\\Process(Vertical.Wave.ViewPoint#$i)\ +\Private Bytes" CATEGORY="Process"> <COUNTER NAME="\\Process(Vertical.Wave.ViewPoint#$i)\\Private Byte +s" MINVARNAME="MinPrivateBytes" AVGVARNAME="AvgPrivateBytes" MAXVARNA +ME="MaxPrivateBytes" TRENDVARNAME="TrendPrivateBytes" DATATYPE="Integ +er"> </COUNTER> <THRESHOLD NAME="Memory: an increasing trend of 10MB's per hour de +tected for Vertical.Wave.ViewPoint#$i" CONDITION="Warning" COLOR="Yel +low" PRIORITY="50"> <DESCRIPTION><![CDATA[If the private bytes size is greater than +<B>100MB</B> and the process is increasing at a rate greater than <B> +10MB's</B> per hour, then an aggressive memory leak is suspected. ]]></DESCRIPTION> <CODE><![CDATA[' If the private bytes is over 100MBs and if the +trend shows a 10MB increase at each hour. If IsNull(AvgPrivateBytes) = False AND IsNull(TrendPrivateBytes) = Fal +se Then If AvgPrivateBytes > 100000000 AND TrendPrivateBytes > 10000000 Then IsTrendThresholdBroken = True End If End If]]></CODE> </THRESHOLD> <CHART CHARTTYPE="Line" CATEGORIES="AUTO" MAXCATEGORYLABELS="0" LE +GEND="ON" VALUES="AUTO" GROUPSIZE="640x480" OTSFORMAT="MM/dd hh:mm" C +HARTTITLE="\\Process(Vertical.Wave.ViewPoint#$i)\\Private Bytes" DATA +SOURCE="\\Process(Vertical.Wave.ViewPoint#$i)\\Private Bytes" DATATYP +E="Integer"> </CHART> <DESCRIPTION><![CDATA[This analysis determines if the process is c +onsuming a large chunk of the system's memory and if the process is i +ncreasing in memory consumption over time. A process consuming large +portions of memory is okay as long as the process returns the memory +back to the system. Look for increasing trends in the chart. An incre +asing trend over a long period of time could indicate a memory leak. +Private Bytes is the current size, in bytes, of memory that this proc +ess has allocated that cannot be shared with other processes. This an +alysis checks for a 10MB’s per hour increasing trends. Use this analy +sis in correlation with the Available Memory analysis, and total proc +ess (i.e. Process(*)) private bytes allocation analysis.<BR> <BR> Also, keep in mind that newly started processes will initially appear +as a memory leak when it is simply normal start up behavior. A memory + leak is when a process continues to consume memory and not releasing + memory over a long period of time.<BR> <BR> Use this analysis in correlation with the Available Memory analysis, a +nd total process (i.e. Process(*)) private bytes allocation analysis. + If you suspect a memory leak condition, then install and use the Deb +ug Diag tool. For more information on the Debug Diag Tool, see the re +ferences section.<BR> <BR> <B>References:</B><BR> <BR> Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details. +aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>< +/DESCRIPTION> </ANALYSIS> <ANALYSIS NAME="Handle Leak Detection for Vertical.Wave.ViewPoint#$i +" ENABLED="True" ANALYZECOUNTER="\\Process(Vertical.Wave.ViewPoint#$i +)\\Handle Count" CATEGORY="Process"> <COUNTER NAME="\\Process(Vertical.Wave.ViewPoint#$i)\\Handle Count +" MINVARNAME="MinHandleCount" AVGVARNAME="AvgHandleCount" MAXVARNAME= +"MaxHandleCount" TRENDVARNAME="TrendHandleCount" DATATYPE="Integer"> </COUNTER> <THRESHOLD NAME="Handle Leak Suspected - more than 2000 handles an +d a trend of more than 100 handles per hour" CONDITION="Warning" COLO +R="Yellow" PRIORITY="50"> <DESCRIPTION><![CDATA[Checks for any process with a handle count + greater than <B>2000</B> and if the trend is greater than <B>100</B> + handles per hour. If so, check the chart to determine if the counter + is on an increasing trend potentially indicating a handle leak.]]></ +DESCRIPTION> <CODE><![CDATA[If IsNull(AvgHandleCount) = False AND IsNull(Tren +dHandleCount) = False Then If AvgHandleCount > 2000 AND TrendHandleCount > 100 Then IsTrendThresholdBroken = True End If End If]]></CODE> </THRESHOLD> <CHART CHARTTYPE="Line" CATEGORIES="AUTO" MAXCATEGORYLABELS="0" LE +GEND="ON" VALUES="AUTO" GROUPSIZE="640x480" OTSFORMAT="MM/dd hh:mm" C +HARTTITLE="\\Process(Vertical.Wave.ViewPoint#$i)\\Handle Count" DATAS +OURCE="\\Process(Vertical.Wave.ViewPoint#$i)\\Handle Count" DATATYPE= +"Integer"> </CHART> <DESCRIPTION><![CDATA[This analysis checks the process to determin +e how many handles it has open and determines if a handle leak is sus +pected. A process with a large number of handles and/or an aggresive +upward trend could indicate a handle leak which typically results in +a memory leak. The total number of handles currently open by this pro +cess. This number is equal to the sum of the handles currently open b +y each thread in this process.]]></DESCRIPTION> </ANALYSIS> <ANALYSIS NAME="Vertical.Wave.ViewPoint#$i Processor Utilization" EN +ABLED="True" ANALYZECOUNTER="\\Process(Vertical.Wave.ViewPoint#$i)\\% + Processor Time" CATEGORY="Process"> <COUNTER NAME="\\Process(Vertical.Wave.ViewPoint#$i)\\% Processor +Time" MINVARNAME="MinProcess_PercentProcessorTime" AVGVARNAME="AvgPro +cess_PercentProcessorTime" MAXVARNAME="MaxProcess_PercentProcessorTim +e" TRENDVARNAME="TrendProcess_PercentProcessorTime" DATATYPE="integer +" /> <CHART CHARTTITLE="\\Process(Vertical.Wave.ViewPoint#$i)\\% Proces +sor Time" OTSFORMAT="MM/dd hh:mm" GROUPSIZE="640x480" CATEGORIES="AUT +O" DATATYPE="integer" LEGEND="ON" MAXCATEGORYLABELS="0" CHARTTYPE="Li +ne" VALUES="AUTO" DATASOURCE="\\Process(Vertical.Wave.ViewPoint#$i)\\ +% Processor Time" /> <THRESHOLD NAME="Significant Processor Use Suspected for Vertical. +Wave.ViewPoint#$i - more than 10% CPU utilization" CONDITION="Warning +" COLOR="Yellow" PRIORITY="50"> <DESCRIPTION><![CDATA[This analysis checks if the process is con +suming a significant amount of processor time, as specified by the cu +rrent average/maximum threshold of 10% CPU utilization.]]></DESCRIPTI +ON> <CODE><![CDATA[ If AvgProcess_PercentProcessorTime > 7Then IsTrendThresholdBroken = True IsAvgThresholdBroken = True End If If AvgProcess_PercentProcessorTime > 10 Or MaxProcess_PercentProcessor +Time > 10 Then IsMaxThresholdBroken = True End If]]></CODE> </THRESHOLD> <DESCRIPTION><![CDATA[% Processor Time is the percentage of elapse +d time that all of process threads used the processor to execution in +structions. An instruction is the basic unit of execution in a comput +er, a thread is the object that executes instructions, and a process +is the object created when a program is run. Code executed to handle +some hardware interrupts and trap conditions are included in this cou +nt.]]></DESCRIPTION> </ANALYSIS> <ANALYSIS NAME=".NET CLR Memory # Bytes in all Heaps for Vertical.Wa +ve.ViewPoint#$i" ENABLED="True" ANALYZECOUNTER="\\.NET CLR Memory(Ver +tical.Wave.ViewPoint#$i)\\# Bytes in all Heaps" CATEGORY="Process"> <COUNTER NAME="\\.NET CLR Memory(Vertical.Wave.ViewPoint#$i)\\# By +tes in all Heaps" MINVARNAME="MinNETCLRMemory_#BytesinallHeaps" AVGVA +RNAME="AvgNETCLRMemory_#BytesinallHeaps" MAXVARNAME="MaxNETCLRMemory_ +#BytesinallHeaps" TRENDVARNAME="TrendNETCLRMemory_#BytesinallHeaps" D +ATATYPE="integer" /> <CHART CHARTTITLE="\\.NET CLR Memory(Vertical.Wave.ViewPoint#$i)\\ +# Bytes in all Heaps" OTSFORMAT="MM/dd hh:mm" GROUPSIZE="640x480" CAT +EGORIES="AUTO" DATATYPE="integer" LEGEND="ON" MAXCATEGORYLABELS="0" C +HARTTYPE="Line" VALUES="AUTO" DATASOURCE="\\.NET CLR Memory(Vertical. +Wave.ViewPoint#$i)\\# Bytes in all Heaps" /> <THRESHOLD NAME="Significant .NET Heap usage for Vertical.Wave.Vie +wPoint#$i, possible memory leak." CONDITION="Warning" COLOR="#FFFF00" + PRIORITY="50"> <DESCRIPTION><![CDATA[This analysis checks if the process's .NET + heap has exceeded 32 MBytes and if the trend shows a rate increase o +f 10 MBytes per hour, in which case, a memory leak may be occuring, o +r at least the process is consuming a significant amount of memory re +sources on the .NET side.]]></DESCRIPTION> <CODE><![CDATA[' If the heap usage is over 32MBs and if the tren +d shows a 10MB increase at each hour. If IsNull(AvgNETCLRMemory_#BytesinallHeaps) = False AND IsNull(TrendNE +TCLRMemory_#BytesinallHeaps) = False Then If AvgNETCLRMemory_#BytesinallHeaps > 32000000 AND TrendNETCLRMemory +_#BytesinallHeaps > pMRate000000 Then IsTrendThresholdBroken = True End If End If]]></CODE> </THRESHOLD> <DESCRIPTION><![CDATA[This counter is the sum of four other counte +rs; Gen 0 Heap Size; Gen 1 Heap Size; Gen 2 Heap Size and the Large O +bject Heap Size. This counter indicates the current memory allocated +in bytes on the GC Heaps. <BR> <BR> This analysis checks if the process's .NET heap has exceeded 32 MBytes + and if the trend shows a rate increase of 10 MBytes per hour, in whi +ch case, a memory leak may be occuring, or at least the process is co +nsuming a significant amount of memory resources on the .NET side.<BR +> <BR> Also, keep in mind that newly started processes will initially appear +as a memory leak when it is simply normal start up behavior. A memory + leak is when a process continues to consume memory and not releasing + memory over a long period of time.<BR> <BR> Use this analysis in correlation with the Available Memory analysis, a +nd total process (i.e. Process(*)) private bytes allocation analysis. + If you suspect a memory leak condition, then install and use the Deb +ug Diag tool. For more information on the Debug Diag Tool, see the re +ferences section.<BR> <BR> <B>References:</B><BR> <BR> Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details. +aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>< +/DESCRIPTION> </ANALYSIS> CLIENTBLOCK } print OUTPUTSCRIPT "</PAL>\n"; close (OUTPUTSCRIPT); print "\nPAL template generated.\n";
In reply to Perl script works but fails Windows binary compilation by daluu
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |