Windows Counters
Page Description
This page shows the main Windows counters for the selected server so operating system behavior can be correlated with overall SQL Server health. It brings together CPU, memory, disk, network, and process data in a view that mixes point-in-time indicators with time series, making it easier to see whether a slowdown comes from processor saturation, memory pressure, storage latency, network activity, or abnormal process consumption.
It also helps validate the host operational context, for example by checking the Telegraf version, the time since the last restart, and the real free capacity on the disks. This is a useful page for fast diagnosis, for comparing current load with recent server behavior, and for deciding whether the next troubleshooting step should focus on Windows, SQL Server, or both together.
Variables
| Variable | Description |
|---|---|
$hostname | Windows server whose counters are loaded across the page. It changes the full view so the dashboard focuses on a single host. |
Time range | Period analyzed by the historical panels. It affects time series and calculated averages for CPU, memory, disk, network, and process activity. |
Overview
Operational summary of the selected host. This section combines basic monitoring-agent identification, server availability, free disk capacity, current CPU usage, available memory, and the general activity level of the system.
Telegraf Version
- Description: Shows the installed version of the Telegraf agent that collects system counters. It is useful to confirm that the host is reporting with an expected version and to spot differences between servers in the same environment.
- Panel type: stat
Practical recommendation: If the version does not match the environment standard, review the agent rollout and confirm that the required plugins and counters are still enabled.
Uptime
- Description: Indicates the time elapsed since the last server startup. It helps identify recent restarts that can explain performance changes, cache loss, or service interruptions.
- Panel type: stat
- Units: Days
Thresholds
| Value | Color | Description |
|---|---|---|
| Up to 2 days | Recent restart or low uptime. | |
| > 2 days | Stable uptime. |
Practical recommendation: If the server restarted recently, read cache, memory, and CPU counters carefully until normal workload stabilizes again.
Disk Free Space
- Description: Shows the percentage of free space on each server disk. It helps quickly locate drives at risk of filling up and prioritize action before databases, backups, or maintenance jobs are affected.
- Panel type: bargauge
- Units: Percentage
Thresholds
| Value | Color | Description |
|---|---|---|
| Up to 10 % | Critical free-space level. | |
| Between 10 % and 20 % | Low margin, needs review. | |
| > 20 % | Recommended margin. |
Practical recommendation: Keep at least 20% free on data, log, and backup drives to avoid failed growth events and storage degradation.
Disk Free Space
- Description: Displays the numeric free-space value for each disk. It complements the percentage view and helps estimate how much real room remains for growth, temporary load, or maintenance work.
- Panel type: stat
- Units: MB
Practical recommendation: Read this panel together with free-space percentage so you can prioritize drives that have very little absolute margin even if their percentage is not yet the worst.
CPU Count
- Description: Indicates the number of CPU cores on the server. It is a useful reference for interpreting host capacity and putting processor queue length, context switches, and total load into perspective.
- Panel type: stat
- Units: Count
Practical recommendation: Use this value as the baseline when judging whether processor queue length or context-switch activity is reasonable for the host size.
CPU Usage
- Description: Reflects the CPU percentage being used right now. It is the fastest indicator for spotting processor saturation or abnormal burst activity on the host.
- Panel type: gauge
- Units: Percentage
Thresholds
| Value | Color | Description |
|---|---|---|
| Up to 70 % | Usage within a normal range. | |
| Between 70 % and 90 % | Elevated load, review the trend. | |
| > 90 % | High CPU saturation. |
Practical recommendation: If the value stays above 80% to 90%, review consumer processes, expensive queries, and operating system activity to confirm a CPU bottleneck.
Processes
- Description: Shows the total number of active processes on the server. It helps detect unusual growth in activity or extra software running on a host that should stay dedicated.
- Panel type: stat
- Units: Count
Practical recommendation: If the process count grows unexpectedly, review nonessential services, extra agents, or hung processes that may still be consuming resources.
Free Memory
- Description: Shows the remaining free memory on the server. It is a key indicator for detecting Windows memory pressure and the risk of paging to disk.
- Panel type: stat
- Units: Memory
Thresholds
| Value | Color | Description |
|---|---|---|
| Up to 1 GB | Critical free-memory level. | |
| Between 1 GB and 2 GB | Tight memory, should be watched. | |
| > 2 GB | Healthy memory margin. |
Practical recommendation: If free memory drops steadily, confirm that SQL Server is not consuming all RAM and review whether Windows has started paging.
Total Server Memory
- Description: Indicates the total memory assigned to the server. It gives context for whether free memory and total consumption are reasonable for the host size.
- Panel type: stat
- Units: Memory
Practical recommendation: Use this figure to validate how much memory should be reserved for the operating system when configuring SQL Server max server memory.
Threads
- Description: Shows the number of active threads on the server. Sustained growth can indicate higher concurrency, more system work, or processes that do not scale well.
- Panel type: stat
- Units: Count
Practical recommendation: If threads increase sharply together with high CPU and high context-switch activity, review services, multithreaded processes, and concurrency spikes.
CPU
Detailed analysis of processor activity and related system load. This section helps distinguish useful application work from kernel time, interrupt activity, queue pressure, and week-over-week behavior changes.
$hostname % Processor Time
- Description: Breaks down CPU time evolution into privileged mode, user mode, and interrupts. It helps show whether the load comes from user processes, the operating system, or hardware and driver activity.
- Panel type: timeseries
- Units: Percentage
Colors by value
| Value | Color | Description |
|---|---|---|
| % Priviledged Time | CPU time spent in the kernel and system operations. | |
| % User Time | CPU time spent by user processes. | |
| % Interrupt Time | CPU time spent handling interrupts. |
Practical recommendation: If % Priviledged Time rises sharply, review storage and network behavior; if % User Time dominates, look for processes or queries consuming CPU for too long.
$hostname % CPU Benchmark
- Description: Compares aggregated CPU load for the current week against the previous week. It is useful for spotting workload drift, pattern changes, and growing load on the host.
- Panel type: timeseries
- Units: Percentage
Colors by value
| Value | Color | Description |
|---|---|---|
| Current Week | Load observed during the current week. | |
| Last Week | Baseline from the previous week. |
Practical recommendation: If the current week stays clearly above the previous one, review recent deployments, jobs, or a genuine increase in business workload.
$hostname Context Switches
- Description: Measures the rate of context switches between system threads. High values usually point to heavy concurrency, intensive scheduling activity, or CPU pressure.
- Panel type: timeseries
- Units: Changes per second
Practical recommendation: If the average rises sharply together with high CPU, compare the value with the number of processors in the host and review processes with too many threads or scheduler saturation.
$hostname System Calls
- Description: Reflects the number of kernel-mode system calls per second. It helps identify heavy operating system activity caused by applications, services, or drivers.
- Panel type: timeseries
- Units: Calls per second
Practical recommendation: If the counter remains very high, validate nonessential services, antivirus, agents, and processes that may be forcing excessive system activity.
$hostname Processor Queue Length
- Description: Shows the length of the queue of threads waiting to run on CPU. If it stays high together with high CPU usage, the processor is usually not keeping up with demand.
- Panel type: timeseries
- Units: Queue length
Practical recommendation: If queue length stays above normal while CPU is also high, review parallelism, expensive queries, and real host capacity before scaling resources.
Memory
Historical view of the server memory subsystem. This section helps confirm how much memory remains available, how system pools evolve, and whether fault or paging rates are starting to affect SQL Server.
$hostname Memory Usage
- Description: Shows the evolution of available memory and of the paged and nonpaged pools. It helps explain whether system memory is being consumed in a stable way or whether some component is holding too many resources.
- Panel type: timeseries
- Units: Memory
Colors by value
| Value | Color | Description |
|---|---|---|
| Available Bytes | Memory available to processes. | |
| Pool Nonpaged Bytes | Kernel memory that cannot be paged out. | |
| Pool Paged Bytes | Kernel memory that can be paged out. |
Practical recommendation: If Available Bytes drops while the system pools grow, review SQL Server memory settings, drivers, and services that may be holding kernel memory.
$hostname Memory Usage Rates
- Description: Shows memory-fault and memory-activity rates per second, including cache faults, page faults, pages per second, and transition faults. It is a useful indicator for memory pressure and paging symptoms.
- Panel type: timeseries
- Units: Events per second
Colors by value
| Value | Color | Description |
|---|---|---|
| Cache_Faults_persec | Cache faults per second. | |
| Demand_Zero_Faults_persec | Newly allocated pages on demand. | |
| Pages_persec | Pages read or written per second. | |
| Page_Faults_persec | Total page faults. | |
| Transition_Faults_persec | Transition faults per second. |
Practical recommendation: If Pages_persec and Page_Faults_persec grow steadily together with low free memory, confirm whether Windows is paging and relieve memory pressure on the server.
Disk
Storage latency and capacity analysis. This section helps identify read and write bottlenecks, continuous free-space decline, and accumulation of outstanding requests in the storage subsystem.
$hostname Average Disk sec/Read
- Description: Measures average disk read latency over time. It helps confirm whether host reads are being served at the expected speed or whether storage performance is degrading.
- Panel type: timeseries
- Units: Seconds
Practical recommendation: If latency stays above recommended millisecond ranges for long periods, review disk queueing, read pressure, and underlying storage performance.
$hostname Average Disk sec/Write
- Description: Measures average disk write latency. It is a key metric for identifying whether storage is coping correctly with checkpoints, file growth, log writes, or temporary workload.
- Panel type: timeseries
- Units: Seconds
Colors by value
| Value | Color | Description |
|---|---|---|
| Disk C: | Write latency for drive C:. | |
| Disk T: | Write latency for drive T:. | |
| Disk W: | Write latency for drive W:. |
Practical recommendation: If read and write latency are both high at the same time, treat it as a likely storage bottleneck and prioritize checking data, log, or tempdb volumes.
$hostname % Free Space
- Description: Shows the time-based evolution of free-space percentage across the server disks. It helps detect growth trends and anticipate problems before the situation becomes critical.
- Panel type: timeseries
- Units: Percentage
Practical recommendation: If a drive keeps trending down, plan expansion or cleanup before free space drops into a risky range for growth and maintenance.
$hostname Disk Queue Length
- Description: Reflects the length of the queue of outstanding disk requests. A high and sustained value usually means storage cannot absorb the workload fast enough.
- Panel type: timeseries
- Units: Queue length
Practical recommendation: If disk queue length rises together with high latency, review bus saturation, too much concurrent I/O, and file distribution across drives.
Network Interface $network
Monitoring of the selected network interface. This section shows both data-transfer volume and packet activity on the adapter so spikes, pattern changes, or unexpected network behavior can be identified.
$hostname $network Throughput
- Description: Measures the amount of data sent and received by the selected network interface. It helps spot heavy transfer windows and correlate them with backups, replicas, ETL activity, or application traffic.
- Panel type: timeseries
- Units: Bytes per second
Colors by value
| Value | Color | Description |
|---|---|---|
| Bytes Received | Traffic received by the interface. | |
| Bytes Sent | Traffic sent by the interface. |
Practical recommendation: If there is a strong traffic spike, relate it to replicas, backups, ETL movement, or external processes to confirm whether it is expected.
$hostname $network Packets
- Description: Shows the number of packets sent and received by the selected interface. It complements throughput so you can distinguish heavy traffic from very fragmented traffic.
- Panel type: timeseries
- Units: Packets per second
Colors by value
| Value | Color | Description |
|---|---|---|
| Packets Received | Packets received by the interface. | |
| Packets Sent | Packets sent by the interface. |
Practical recommendation: If packet count rises sharply without similar growth in bytes, review fragmentation, chatty traffic, or frequent small-message activity.
Process
Per-process view of CPU, handles, and memory. This section helps identify which specific host processes are concentrating resource usage and whether expected sqlservr behavior is being overshadowed by other services.
$hostname: % Processor Time
- Description: Shows the CPU percentage consumed by the selected processes. It helps reveal whether host load is dominated by SQL Server, system processes, or extra software.
- Panel type: timeseries
- Units: Percentage
Colors by value
| Value | Color | Description |
|---|---|---|
| Idle | CPU time not being actively used. | |
| sqlservr | CPU consumed by the SQL Server process. |
Practical recommendation: If sqlservr dominates CPU for a long time, continue the analysis in the SQL panels to locate expensive queries, jobs, or excessive parallelism.
$hostname: Handle Count
- Description: Reflects the number of open handles used by the monitored processes. It helps detect growing consumption of system resources such as files, sockets, synchronization objects, or registry keys.
- Panel type: timeseries
- Units: Count
Colors by value
| Value | Color | Description |
|---|---|---|
| lsass | Open handles used by lsass. | |
| BASupSrvc | Open handles used by BASupSrvc. | |
| System | Open handles used by the System process. |
Practical recommendation: If one process keeps increasing its handle count without returning to normal, investigate possible resource leaks or services holding too many open objects.
$hostname: Private Bytes
- Description: Shows the private memory allocated exclusively to each process. It is useful for detecting processes that keep accumulating their own memory consumption outside broader aggregate views.
- Panel type: timeseries
- Units: Memory
Colors by value
| Value | Color | Description |
|---|---|---|
| sqlservr | Private memory used by the SQL Server process. | |
| smss | Private memory used by the smss process. |
Practical recommendation: If sqlservr or any other process keeps increasing Private Bytes, compare it with host free memory to detect early pressure.
$hostname: Virtual Bytes
- Description: Represents the total virtual memory space used by the selected processes. It helps identify processes reserving large address ranges even when all of that memory is not resident in RAM.
- Panel type: timeseries
- Units: Memory
Practical recommendation: If virtual space grows much faster than physical memory in use, review abnormal reservations, extensions, or components expanding their address space too aggressively.
$hostname: Working Set
- Description: Shows the active physical memory each process keeps resident in RAM. It is a direct reference for which processes are actually occupying the server memory at a given moment.
- Panel type: timeseries
- Units: Memory
Colors by value
| Value | Color | Description |
|---|---|---|
| sqlservr | Active physical memory used by the SQL Server process. | |
| Ssms | Active physical memory used by the Ssms process. |
Practical recommendation: If several processes hold a large Working Set at the same time, review whether the server is still dedicated enough for the SQL Server workload.
