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 than 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:\WorkTemp\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 days. For more information see the attached pxman.htm file, or visit http://www.indigostar.com Converting 'c:/WorkTemp/genVpLoadPALTemplate.pl -o= c:\WorkTemp\genVpLoadPALTemp 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, . #### print OUTPUTSCRIPT <
Use this analysis in correlation with the Available Memory analysis, and total process (i.e. Process(*)) private bytes allocation analysis. If you suspect a ...omitted blocks... SCRIPTHEADER

Here's the script, bit messy but works...

################################################################################ # genVpLoadPALTemplate.pl # Written by: David Luu # Last updated: 03/18/10 # # Script to generate a PAL analysis report template for x # of VP clients # 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 [OutputScriptFile]\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 file.\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: Could not create output script file: $^E"); print OUTPUTSCRIPT < How many processors (physical and virtual) does the server have? Was the /3GB switch being used on the server? Was the computer 64-bit? How much memory did the server have in gigabytes? 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. 100MB and the process is increasing at a rate greater than 10MB's per hour, then an aggressive memory leak is suspected. ]]> 100000000 AND TrendPrivateBytes > 10000000 Then IsTrendThresholdBroken = True End If End If]]>
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.

Use this analysis in correlation with the Available Memory analysis, and total process (i.e. Process(*)) private bytes allocation analysis. If you suspect a memory leak condition, then install and use the Debug Diag tool. For more information on the Debug Diag Tool, see the references section.

References:

Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>
2000 and if the trend is greater than 100 handles per hour. If so, check the chart to determine if the counter is on an increasing trend potentially indicating a handle leak.]]> 2000 AND TrendHandleCount > 100 Then IsTrendThresholdBroken = True End If End If]]> 7Then IsTrendThresholdBroken = True IsAvgThresholdBroken = True End If If AvgProcess_PercentProcessorTime > 10 Or MaxProcess_PercentProcessorTime > 10 Then IsMaxThresholdBroken = True End If]]> 32000000 AND TrendNETCLRMemory_#BytesinallHeaps > pMRate000000 Then IsTrendThresholdBroken = True End If End If]]>
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 which case, a memory leak may be occuring, or at least the process is consuming a significant amount of memory resources on the .NET side.

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.

Use this analysis in correlation with the Available Memory analysis, and total process (i.e. Process(*)) private bytes allocation analysis. If you suspect a memory leak condition, then install and use the Debug Diag tool. For more information on the Debug Diag Tool, see the references section.

References:

Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>
SCRIPTHEADER ### End Step 1 ### ### Functions ################################################################## for($i=1;$i<=$numVpClients-1;$i++){ print OUTPUTSCRIPT < 100MB and the process is increasing at a rate greater than 10MB's per hour, then an aggressive memory leak is suspected. ]]> 100000000 AND TrendPrivateBytes > 10000000 Then IsTrendThresholdBroken = True End If End If]]>
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.

Use this analysis in correlation with the Available Memory analysis, and total process (i.e. Process(*)) private bytes allocation analysis. If you suspect a memory leak condition, then install and use the Debug Diag tool. For more information on the Debug Diag Tool, see the references section.

References:

Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>
2000 and if the trend is greater than 100 handles per hour. If so, check the chart to determine if the counter is on an increasing trend potentially indicating a handle leak.]]> 2000 AND TrendHandleCount > 100 Then IsTrendThresholdBroken = True End If End If]]> 7Then IsTrendThresholdBroken = True IsAvgThresholdBroken = True End If If AvgProcess_PercentProcessorTime > 10 Or MaxProcess_PercentProcessorTime > 10 Then IsMaxThresholdBroken = True End If]]> 32000000 AND TrendNETCLRMemory_#BytesinallHeaps > pMRate000000 Then IsTrendThresholdBroken = True End If End If]]>
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 which case, a memory leak may be occuring, or at least the process is consuming a significant amount of memory resources on the .NET side.

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.

Use this analysis in correlation with the Available Memory analysis, and total process (i.e. Process(*)) private bytes allocation analysis. If you suspect a memory leak condition, then install and use the Debug Diag tool. For more information on the Debug Diag Tool, see the references section.

References:

Debug Diagnostic Tool v1.1 http://www.microsoft.com/downloads/details.aspx?FamilyID=28bd5941-c458-46f1-b24d-f60151d875a3&displaylang=en]]>
CLIENTBLOCK } print OUTPUTSCRIPT "
\n"; close (OUTPUTSCRIPT); print "\nPAL template generated.\n";