The Windows agent gathers data by using Windows performance counters. When the Monitoring Station polls the Uptime Infrastructure Monitor agent, the agent requests the required data from the performance counters, parses the appropriate information and returns the requested information to the Monitoring Station.

Because the Uptime Infrastructure Monitor agent uses the performance counters to collect statistics, the memory consumed by the Windows counters is associated with the Uptime Infrastructure Monitor agent binary. However, the memory is actually being consumed by the Windows operating system, which maintains the built-in performance counters.

Memory usage is generally only noticeable in large systems that are running hundreds of processes at any given time. The Uptime Infrastructure Monitor agent registers the process performance counter that stores historical data for each process. Storing this information causes the RSS and memory size to increase so as the number of processes running on the system grows, the memory size and RSS will follow accordingly.

This scenario can be demonstrated by using standard Windows performance tools. Running perfmon.exe and loading all the appropriate process counters will recreate the same memory variant that you see with the Uptime Infrastructure Monitor agent because the agent uses the same counters. The permon.exe utility will spawn a child process (mmc.exe) that will show the memory being consumed by the performance counters.

Any tool that uses Windows performance counters will experience the same issue.

Recreating the scenario using perfmon.exe

Load perfmon.exe and add the counters listed below. After the counters have been successfully added, you can use Uptime Infrastructure Monitor to monitor the memory usage growth.

Performance Counters

CPU

  1. Processor(_Total)% User Time
  2. Processor(_Total)% Privileged Time
  3. Processor(_Total)% Interrupt Time
  4. MemoryAvailable KBytes
  5. Paging File(_Total)% Usage
  6. SystemProcessor Queue Length
  7. MemoryCache Faults/sec
  8. MemoryPages Output/sec
  9. MemoryPage Writes/sec
  10. MemoryPages/sec
  11. MemoryPages Input/sec
  12. MemoryPage Faults/sec
  13. MemoryTransition Faults/sec
  14. SystemProcesses
  15. SystemSystem Calls/sec

Disk

  1. PhysicalDisk(<diskname>)% Disk Time
  2. PhysicalDisk(<diskname>)Current Disk Queue Length
  3. PhysicalDisk(<diskname>)Disk Transfers/sec
  4. PhysicalDisk(<diskname>)Avg. Transfers/sec
  5. PhysicalDisk(<diskname>)Disk bytes/sec
  6. PhysicalDisk(<diskname>)Avg. Disk sec/Transfer

Network

  1. NetworkInterface(<interface>)Bytes Received/sec
  2. NetworkInterface(<interface>)Bytes Sent/sec
  3. NetworkInterface(<interface>)Packets Received Errors
  4. NetworkInterface(<interface>)Packets Outbound Errors
  5. TCPSegments Retransmitted/sec

Process

  1. Process(<processname>)ID Process
  2. Process(<processname>)Creating Process IF
  3. Process(<processname>)Virtual Bytes
  4. Process(<processname>)Working Set
  5. Process(<processname>)% Processor Time
  6. Process(<processname>)Elapsed Time

Exchange Counters

  1. MSExchange Web MailMessages send per sec
  2. MSExchange Web MailAuthentications per sec
  3. MSExchangeIMAP4Connections Current
  4. MSExchangePOP3Connections Current
  5. SMTP RoutingConnectionCount
  6. SMTP ServerBytes Sent/sec
  7. SMTP ServerBytes Received/sec
  8. SMTP ServerBytes Total/sec
  9. SMTP ServerLocal Queue Length
  10. SMTP ServerMessages Sent/sec
  11. SMTP ServerInbound Connections Current
  12. SMTP ServerOutbound Connections Current
  13. SMTP Connection Errors/sec

SQL Server Counters

  1. SQLServer:General StatisticsUser Connections
  2. SQLServer:LocksLock Waits/sec
  3. SQLServer:LocksLock Requests/sec
  4. SQLServer:LocksAverage Wait Time(ms)
  5. SQLServer:DatabasesTransactions/sec
  6. SQLServer:DatabasesData File(s) Size(KB)
  7. SQLServer:LatchesTotal Latch Wait Time(ms)
  8. SQLServer:LatchesLatch Waits/sec
  9. SQLServer:Average Latch Wait Time(ms)
  10. SQLServer:Memory ManagerMaximum Workspace Memory(KB)
  11. SQLServer:Memory ManagerGranted Workspace Memory(KB)
  12. SQLServer:Memory ManagerSQL Cache Memory(KB)
  13. SQLServer:Memory ManagerTotal Server Memory(KB)