The Microsoft PFE Performance Guide (PerfGuide): Table of Contents
This is the table of contents (TOC) for the Microsoft Premier Field Engineer (PFE) Performance Guide (PerfGuide). Use this TOC to help you navigate to a specific article or to view the hieretical view of the perfguide. We will link articles to this TOC as they are written.
Performance Monitor
Basic Usage
- Starting Performance Monitor
- Adding/Removing counters
- Network considerations of remote counters
- Graph types
- Highlighting counters
- Show/hide console tree
Performance counters
- Counter paths
- Counter descriptions
- Overhead of viewing counters
- Special counter instances
- PID in process instances
- Understanding the fields
- Scaling counters
- Changing the scale of the chart
- Pattern matching
Creating a data collector
- Using the wizard
- From a template
- Using the command line
- Remotely
- Using PowerShell
Modifying data collector sets
- Starting and stopping data collector sets
- Data Collector Set properties
- Data Collector properties
- Saving a template
- Creating a data collector set from a template
- Contents of a template
- SQL Server named instances
- Using the PAL tool to create data collector templates.
- Sample counter log templates provided at [HTTP address] for various products.
- Viewing a counter log
Performance Monitor related tools
Logman
- Security considerations
- Common parameters
- Querying data collectors
- Creating a data collector on another computer
- Creating a data collector using a counter list file
- Creating a binary circular data collector
- Deleting a data collector
- Managing data collectors on remote computers
- Starting and stopping data collectors
- PowerShell
LODCTR
- Detecting corrupt counters
- Performance counters are in a linked list.
- Repairing operating system counters.
- Rebuilding application counters
Relog
- Log merging
- Filtering
- Converting log format
PowerShell
- Get-Counter
- Import-Counter
- Export-Counter
- Get-OdbcPerfCounter
- Enable-OdbcPerfCounter
- Disable-OdbcPerfCounter
Storage Media
- Initial indicators of storage media conditions
- Disk in Depth
- What's new in Windows 8 and Windows Server 2012
- Storage concepts
- Terminology
- I/O operations per second (IOPS)
- Dedicated spindles compared to shared spindles
- Physical disks compared to logical disks
- Choosing a RAID type
- Software RAID compared to hardware RAID
- Partition alignment
- Strip size
- I/O request packes (IRPs) and disk queues
- I/O priorities
- Processor conditions that can lead to poor storage performance
- How storage counter data is gathered
- PhysicalDisk and LogicalDisk counter objects
- How free space conditions can lead to poor storage performance
- The disk queue and idle time
- Disk transfers
- Measuring I/O sizes and split I/O
- How I/O size effects response times
- How to measure storage response times
- Storage related process counters
- Hyper-V storage counters and considerations
- Identifying storage performance conditions
- Analyzing storage performance
- Disk fragmentation and storage performance
- Identifying storage media failures
- Balancing power and storage performance
- Storport tracing
- How to look at Storport ETW Trace logs?
Virtual Memory
- Initial indicators of virtual memory conditions
- What’s new in Windows 8 and Windows Server 8
- Supplementary counters and thresholds
- The 32-bit x86 Virtual address space
- The 64-bit IA64 virtual address space
- The 64-bit x64 virtual address space
- Why is x64 at 16 TB instead of 16 EB?
- Many processes. One kernel
- The advantages of virtual memory
- Virtual memory and paging files
- Understanding the "Virtual memory minimum too low" error message
- Understanding process virtual address space
- How to determine the maximum virtual address space of a process
- Identifying application out of memory conditions
- Troubleshooting application out of memory conditions
- Working around application out of memory conditions
- Understanding reserved, committed, and free process memory
- Dynamic and static kernel virtual memory
- How to determine the maximum size of kernel virtual memory pools using LiveKD or WinDBG
- How to determine the maximum size of kernel virtual memory pools Using Process Explorer
- Troubleshooting Pool Paged and Pool NonPaged kernel memory
- Understanding the PFN database, RAM, and virtual memory
- Troubleshooting lack of System Page Table Entry (PTE) conditions
- Altering the 32-bit virtual address space
- Setting IncreaseUserVa with BCDEdit
- How to identify if an executable is large address aware
- Adjusting UserVA
- Understanding Address Width Extensions (AWE)
- How RAM impacts virtual address space
- Balancing power and performance
- Case studies
Physical Memory, Paging Files, and System Committed Memory
- Initial indicators
- What’s new in Windows 8 and Windows Server 8
- Physical memory limits in Windows 8 and Windows Server 8
- Monitoring the system commit limit
- Monitoring the system commit charge
- When the system commit limit is reached
- Hot-plug memory
- Free space and paging file considerations
- Page file sizing and monitoring
- The maximum number of page files
- Paging files and Crash dumps
- Dedicated dump files
- Accommodating the system commit charge peak
- What is written to a paging file?
- Monitoring modified memory
- Working Set trimming
- Pages/sec can be misleading
- The maximum size of a paging file
- Page file fragmentation
- Does having more than one page file help with performance?
- How physical memory is managed
- Page Frame Number (PFN) database
- The page file writer and the lazy writer
- Identifying a low physical memory condition
- Using Process Monitor to monitor reads and writes to a paging file
- Where did all of the physical memory go?
- Monitoring the kernel memory usage
- Pages locked in memory
- Hard page faults and hard drive performance
- Hard page faults and paging files
- Sizing RAM for new or used systems
- Available versus free memory
- Monioring Ready Boost performance
- Prefetch and Superfetch performance
- How process memory allocations effect physical resources
- What is a process working set?
- Monitoring process working sets
- Soft page faults and hard page faults
- Sharable and shared memory
- When working sets trim and a paging file increases
- When working sets trim, but no paging file has increased
- Identifying a process working set leak
- The effects of setting a minimum or maximum process working set size
- Managing large working sets
- Pages locked in memory
- Memory profiling an application
- Do EXE and DLL sizes affect the working set?
- Comparing process committed memory and process working sets
- How much process memory is on the page file?
- Monioring the performance of the .NET Garbage Collector
- Identifying a memory leak using Performance Monitor
- Identifying a memory leak using Process Explorer
- Troubleshooting a memory leak using VMMap
- Troubleshooting a memory leak using DebugDiag
- Troubleshooting a memory leak using Server Performance Advisor 3.0
- Troubleshooting a memory leak using UMDH
- Troubleshooting a memory leak using WinDBG
- Troubleshooting physical memory conditions on a Hyper-V host
- Balancing power and performance
- Case studies
Network
- Initial indicators
- What’s new in Windows 8 and Windows Server 8
- Monitoring bandwidth and utilization
- Queuing and other considerations
- Identifying high network usage
- Analyzing high network usage using Resource Monitor
- Analyzing high network usage using Process Monitor
- Analyzing high network usage using Microsoft xperf
- Identifying network conditions on Hyper-V
- Case studies
Startup and Shutdown
- Initial indicators
- What’s new in Windows 8 and Windows Server 8
- ReadyBoot
- Capturing boot performance using bootmgr.exe.
- Analyzing the ETL trace.
- Capturing boot performance using Process Monitor
- Capturing shutdown performance
- Example: Disk drive set to “quiet” mode.
- Hyper-V considerations
- Balancing power and performance
- Case studies
Processor
- Initial indicators
- What’s new in Windows 8 and Windows Server 8
- Terminology
- The Idle processIdentifying high processor usage using Task Manager
- Identifying high processor usage using Performance Monitor
- Identifying high processor usage using Resource Monitor
- Identifying high processor usage using Process Explorer
- Identifying high processor usage on Hyper-V
- Identifying user mode or privileged mode processor usage
- Identifying high DPC or interrupt processor usage
- Identifying high processor usage by process
- Identifying low processor usage
- Analyzing high privileged mode processor usage using Microsoft xperf
- Analyzing high privileged mode processor usage using the Microsoft Visual Studio Profiler
- Analyzing high privileged mode processor usage using the Debugging Tools for Windows
- Processor affinity and thread priority
- Context switching and transitions
- NUMA computer systems
- Balancing power and performance
- Case studies
Startup and Shutdown
- Initial indicators
- What’s new in Windows 8 and Windows Server 8
- ReadyBoot
- Capturing boot performance using bootmgr.exe.
- Analyzing the ETL trace.
- Capturing boot performance using Process Monitor
- Capturing shutdown performance
- Example: Disk drive set to “quiet” mode.
- Hyper-V considerations
- Balancing power and performance
- Case studies
Hyper-V
- Initial indicators
- What’s new in Windows 8 and Windows Server 8
- Terminology
- Hyper-V Architecture
- Hardware selection
- Analyzing physical memory and paging file performance
- Analyzing storage performance
- Virtual hard drive considerations
- Analyzing network performance
- Balancing power and performance
Case studies
Performance Analysis of Logs (PAL) Tool
- Choosing a threshold file
- Collecting counter log data
- Analyzing the counter log
- Interpreting the report
Microsoft xperf
- What is ETW?
- ETW versus performance counters
- Collecting an Event Tracing for Windows log (ETL)
- Analyzing the ETL file
- An end-to-end tracing with ETW example
Microsoft Semantic Logging Application Block
- EventSource tutorial
- Overview of Semantic Logging
- Video walkthrough
- Get it via NuGet
Microsoft Server Performance Advisor (SPA) 3.0
- Collecting data
- Analyzing the report
Process dumps
- Using operating system tools
- Using ProcDump
- Using the Debugging Tools for Windows
- Checking the dump file
Debug symbols
- What are debug symbols?
- The symbol path
- Using the Microsoft symbol server
- Creating and maintaining a symbol server
- When internet access is not available