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";