What is SharePoint Perfwiz and why do we need a replacement?
SharePoint Perfwiz was a tool used by Product Support to create performance log counters on SharePoint servers to troubleshoot performance issues. This tool has been deprecated but there is still a need to collect performance data for those pesky performance issues.
The Perfwiz tool simply used LOGMAN.exe to create a custom counter set with several selected counters specifically for SharePoint servers.
This blog will detail how to use LOGMAN.exe to mimic the baseline counter set that was created by the Perfwiz tool.
The command Line
Here is the command used to create the Baseline counter set:
Logman.exe create counter Baseline_Counters -o "c:\perflogs\Baseline_Counters.blg" -f bin -v mmddhhmm -max 250 -c "\.NET CLR Exceptions(*)\*" "\.NET CLR Loading(*)\*" "\.NET CLR Memory(*)\*" "\.NET CLR Networking(*)\*" "\.NET Data Provider for SqlServer(*)\*" "\AppFabric Caching:Host(*)\*" "\ASP.NET Apps v2.0.50727(*)\*" "\ASP.NET Apps v4.0.30319(*)\*" "\ASP.NET v2.0.50727\*" "\ASP.NET v4.0.30319\*" "\ASP.NET(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\NBT Connection(*)\*" "\NetLogon(*)\*" "\Network Interface(*)\*" "\Office Web Apps - Online Viewing\*" "\PhysicalDisk(*)\*" "\Process(*)\*" "\Processor Information(*)\*" "\Processor(*)\*" "\Sandboxed Code Process Pool(*)\*" "\Search Flow Statistics(*)\*" "\Search Host Controller(*)\*" "\Search Linguistics(*)\*" "\Search Platform Services(*)\*" "\Search Query Processing(*)\*" "\Search Query Processor - SharePointServerSearch(*)\*" "\Search SPLookupService(*)\*" "\Server Work Queues(*)\*" "\Server\*" "\Shared Service Provider(*)\*" "\SharePoint Disk-Based Cache(*)\*" "\Sharepoint Distributed Cache Counters(*)\*" "\SharePoint Foundation (*)\*" "\SharePoint Foundation Authentication (*)\*" "\SharePoint Foundation BDC Metadata\*" "\SharePoint Foundation BDC Online(*)\*" "\SharePoint Foundation Request Management(*)\*" "\SharePoint Foundation Security Token Service\*" "\SharePoint Publishing Cache(*)\*" "\SharePoint Server Cache instances(*)\*" "\SharePoint Server Cache\*" "\SiteComponents\*" "\System\*" "\TCPv4\*" "\TCPV6\*" "\Thread(w3wp_*)\*" "\Thread(OWSTIMER_*)\*" "\W3SVC_W3WP(*)\*" "\WAS_W3WP(*)\*" "\Web Service Cache\*" "\Web Service(*)\*" "\Windows Workflow Foundation(*)\*" -si 00:00:30 -cnf 12:00:00
Switches used:
-o: The output file
-f: Sets the file to binary
-v: Adds a date / time stamp in the file name
-max: The max file size
-c: The counter list
-si: The sample interval
-cnf: 12:00:00 tells the counter to create a new file and continue when the max size has been reached or after 12 hours.
What is looks like
To run the LOGMAN.exe command, you will need an elevated command prompt to run this command.
Here is what it looks like after the counters are created:
Here is an example of the output file:
After the counters are created, they can be started with the following command:
logman start Baseline_Counters
After the problem is reproduced, stop the counters with the following command:
logman stop Baseline_Counters
However, they can be started and stopped manually as well.
Important notes and takeaways
- If you have multiple servers, you can use the -s switch and feed in a server list, for example:
$servers = Get-Content c:\temp\servers.txt foreach ($server in $servers) { Logman.exe create counter -s $server 'Baseline_Counters' -o 'c:\perflogs\Baseline_Counters.blg' -f bin -v mmddhhmm -max 250 -c '"\.NET CLR Exceptions(*)\*" "\.NET CLR Loading(*)\*" "\.NET CLR Memory(*)\*" "\.NET CLR Networking(*)\*" "\.NET Data Provider for SqlServer(*)\*" "\AppFabric Caching:Host(*)\*" "\ASP.NET Apps v2.0.50727(*)\*" "\ASP.NET Apps v4.0.30319(*)\*" "\ASP.NET v2.0.50727\*" "\ASP.NET v4.0.30319\*" "\ASP.NET(*)\*" "\LogicalDisk(*)\*" "\Memory\*" "\NBT Connection(*)\*" "\NetLogon(*)\*" "\Network Interface(*)\*" "\Office Web Apps - Online Viewing\*" "\PhysicalDisk(*)\*" "\Process(*)\*" "\Processor Information(*)\*" "\Processor(*)\*" "\Sandboxed Code Process Pool(*)\*" "\Search Flow Statistics(*)\*" "\Search Host Controller(*)\*" "\Search Linguistics(*)\*" "\Search Platform Services(*)\*" "\Search Query Processing(*)\*" "\Search Query Processor - SharePointServerSearch(*)\*" "\Search SPLookupService(*)\*" "\Server Work Queues(*)\*" "\Server\*" "\Shared Service Provider(*)\*" "\SharePoint Disk-Based Cache(*)\*" "\Sharepoint Distributed Cache Counters(*)\*" "\SharePoint Foundation (*)\*" "\SharePoint Foundation Authentication (*)\*" "\SharePoint Foundation BDC Metadata\*" "\SharePoint Foundation BDC Online(*)\*" "\SharePoint Foundation Request Management(*)\*" "\SharePoint Foundation Security Token Service\*" "\SharePoint Publishing Cache(*)\*" "\SharePoint Server Cache instances(*)\*" "\SharePoint Server Cache\*" "\SiteComponents\*" "\System\*" "\TCPv4\*" "\TCPV6\*" "\Thread(w3wp_*)\*" "\Thread(OWSTIMER_*)\*" "\W3SVC_W3WP(*)\*" "\WAS_W3WP(*)\*" "\Web Service Cache\*" "\Web Service(*)\*" "\Windows Workflow Foundation(*)\*"' -si 00:00:30 -cnf 12:00:00 }
- The default action of this counter set is to run forever, you will need to stop them manually once this data is no longer needed.
Welcome to the SharePoint Blog! Learn best practices, news, and trends directly from the SharePoint team.