I'm doing some performance analysis using the built-in Windows Performance Monitor, both on general hardware and SQL Server. I've been reading a lot about which performance counters to use; in particular this document on the waits and queues method is great.
However, it's recommending an awful lot of counters and I'm concerned that if I have too many then either my production server will fall over, or the results will be too skewed to get an accurate reading.
I don't know enough about what's actually going on to generate or gather these statistics - what kind of load do they add to a system generally? I know, the answer is "it depends", on the hardware and the current load, but in general terms I'm wondering if there's a consensus on how many is definitely too many - 20, 50, 100 or more at once?
EDIT: In case it's of relevance, I have 41 counters currently configured:
\Memory\Page Faults/sec
\Memory\Pages/sec
\PhysicalDisk(_Total)\% Disk Time
\PhysicalDisk(_Total)\Avg. Disk Queue Length
\PhysicalDisk(_Total)\Disk Reads/sec
\PhysicalDisk(_Total)\Disk Writes/sec
\Process(sqlservr)\% Privileged Time
\Process(sqlservr)\% Processor Time
\Process(sqlservr)\% User Time
\Process(sqlservr)\Page Faults/sec
\Processor(_Total)\% Processor Time
\Processor(_Total)\Interrupts/sec
\System\Processor Queue Length
\SQLServer:Access Methods\Full Scans/sec
\SQLServer:Access Methods\Index Searches/sec
\SQLServer:Access Methods\Page Splits/sec
\SQLServer:Buffer Manager\Buffer cache hit ratio
\SQLServer:Buffer Manager\Checkpoint pages/sec
\SQLServer:Buffer Manager\Lazy writes/sec
\SQLServer:Buffer Manager\Page life expectancy
\SQLServer:Buffer Manager\Page reads/sec
\SQLServer:Buffer Manager\Page writes/sec
\SQLServer:Databases(_Total)\Log Flush Wait Time
\SQLServer:Databases(_Total)\Log Flush Waits/sec
\SQLServer:Databases(_Total)\Transactions/sec
\SQLServer:General Statistics\User Connections
\SQLServer:Latches\Average Latch Wait Time (ms)
\SQLServer:Latches\Latch Waits/sec
\SQLServer:Locks\Average Wait Time (ms)
\SQLServer:Locks(_Total)\Lock Wait Time (ms)
\SQLServer:Locks(_Total)\Lock Waits/sec
\SQLServer:Memory Manager\Memory Grants Pending
\SQLServer:Memory Manager\Memory Grants Outstanding
\SQLServer:Memory Manager\Target Server Memory (KB)
\SQLServer:Memory Manager\Total Server Memory (KB)
\SQLServer:Plan Cache\Cache Hit Ratio
\SQLServer:SQL Statistics\SQL Compilations/sec
\SQLServer:SQL Statistics\SQL Re-Compilations/sec
\SQLServer:SQL Statistics\Batch Requests/sec
\SQLServer:SQL Statistics\Auto-Param Attempts/sec
\SQLServer:SQL Statistics\Failed Auto-Params/sec