I was wondering if anyone has input on the following weird issue I observe. I have a script (posted below) that makes use of Perl's block or multiline print. What's interesting is the script runs fine as a Perl script under Windows (didn't test under *nix), but the script doesn't compile into a binary very well. I would assume that if a script can run fine, then generally it can compile and run as a binary fine assuming all dependencies are met or compiled into the binary. I haven't had such issues with my other scripts compilations, generally via PAR. Using the Perl Archiving Toolkit (PAR) module with ActivePerl v5.8.7, the script compiles but fails to run, with this error:
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

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.