Windows & Citrix Performance Monitoring – CPU, Memory, Disk I/O, Network Throughput, Load Index, Logon Duration

book

Article ID: CTX696280

calendar_today

Updated On:

Description

Users report one or more of the following symptoms in a Citrix environment:

  • Slow application performance
  • Session freezing or lag
  • Session Launch failure
  • High CPU utilization
  • Memory exhaustion
  • High disk latency
  • Network slowness
  • High ICA RTT
  • Long  duration

 

Performance degradation may be caused by:

  • CPU saturation
  • Memory pressure
  • Disk I/O bottlenecks
  • Network congestion
  • Excess session density
  • Background processes (AV, updates, indexing etc)
  • Storage latency issues

 

 Leverage the following tools to monitor the resource usage:

Tool Best For Use Case
Task Manager Quick live check Basic troubleshooting
Resource Monitor Per-process breakdown Disk/network deep dive
Process Explorer Advanced process view CPU/memory leak
Procmon Advanced Process View Disk I/O
Perfmon Long-term logging Performance analysis
Citrix Director and Citrix Studio Citrix session issues VDI troubleshooting
PowerShell Automation & scripting Remote monitoring

 

Workflow Summary:

  1. Identify impact scope
  2. Review the Event Logs
  3. Check real-time usage using Task Manager, Resource Monitor, Process Explorer, Process Monitor
  4. Capture performance logs for Long Term Monitoring using Perfromance Monitor and Powershell Cmdlets/Script
  5. Validate Citrix session metrics using Citrix Director/Cloud Monitor
  6. Identify the bottleneck layer and isolate if the performance hit is due to a third party or Citrix process.

 

STEP 1 – Identify Scope of Issue

Determine whether the issue is limited to certain machines or endpoint users, occurs at a particular time, is triggered by a scheduled task (Updates, Indexing, Backups etc), or happens during periods of high user activity.

 

STEP 2 – Review the System and Application Event logs 

Review the System and Application Event logs on the affected machine to check if any relevant events are logged related to CPU, Memory or Disk latency. Below are a few examples:

Resource Event ID Source What It Indicates
Memory 2004 Resource-Exhaustion-Detector Low virtual memory
Memory 26 Kernel-General Memory allocation failure
CPU 37 Kernel-Processor-Power CPU throttling
CPU 55 Kernel-Processor-Power Performance state change
Disk 7 Disk Bad block
Disk 55 NTFS File system corruption
Disk 153 Disk I/O retry / latency
 

STEP 3 – Check Real-Time Resource Usage

A. Task Manager : For quick live check

  1. Open Task Manager
  2. Go to Performance tab

image.png

     3. Review the following by clicking on each tab.

    • CPU % utilization
    • Memory usage
    • Disk active time
    • Network throughput (Ethernet/ Wifi)
  1.     Go to Processes tab to review the resource consumption of individual processes.

 image.png

  1.     Go to the Details Tab to get more details for individual user sessions. Select the appropriate columns to identify the processes causing the resource bottleneck:

image.png

 

B. Resource Monitor : For Per-process breakdown

Launch resmon.exe from start menu , cmd line or Win+R

Check:

  • CPU tab → Per-process utilization
  • Disk tab → Disk queue & response time
  • Network tab → Throughput per process
  • Memory tab → Hard faults/sec, Working set, Private

image.png

 

C. Process Explorer :  For Process-Level Deep Dive

Download Link: https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer

  1. Launch as Administrator
  2. Sort by CPU or Private Bytes
  3. Review:
    • High CPU processes
    • Private Bytes, Working set
    • I/O read/write Bytes

image.png

 

D. Process Monitor: To Trace Disk I/O Activity

1: Download and Launch
Download Process Monitor https://learn.microsoft.com/en-us/sysinternals/downloads/procmon

2. Run Procmon.exe as administrator.

3. When it opens, it logs all system activity. Without filters, Procmon logs millions of events.

4. Pause Procmon capture (Ctrl + E)

5. Clear Display (Ctrl + E)

6. Click Filter (Ctrl + L).

Add  below filters to display only Disk Read/Write Activity.
Operation → is → ReadFile and WriteFile

image.png

7. You can also filter by specific processes or paths.

8 Pause Procmon capture (Ctrl +E)  after the issue is reproduced for 2-3 minutes. Do not keep Procmon running for more than a few minutes as it can fill up disk space very quickly.

9. Identify File Paths
Watch for Path column — this shows full file/folder location.

10. Use Built-in Summaries 

Procmon provides aggregation views.

Go to:

Tools → File Summary

image.png

OR

Tools → Process Activity Summary

image.png

These views show:

  • Total read/write bytes
  • Most active process
  • Files generating the most disk I/O

This helps quickly identify top disk consumers.

 

 STEP 4 – Capture Performance Logs (Recommended for Long term monitoring in case of intermittent Resource spike)

A. Use Performance Monitor

Create Data Collector Set using GUI

  1. Launch perfmon.exe from start menu , cmd line or Win+R
  2. Data Collector Sets → User Defined
  3. Right Click → New Data collector Set
  4. Create from a template (Recommended) →Next
  5. Select “System Performance”→Finish
  6. New Data Collector Set Right click
  7. Set the Maximum Size to 250 or 500 MB

image.png

     8. Performance Counter Right click. Set the sample interval to 5 seconds and log Mode to Circular.

image.png

image.png

     9. Start the Data collector Set to begin monitoring and Stop it once the issue occurs.

    10. The log file is saved with .blg extension. Review the System Performance Report saved in C:\PerfLogs\Admin\New Data Collector Set\MachineName :

image.png

Here is an example of sample System Performance Report: 

image.png 

OR

         Create Data collector set using cmd line:

         https://learn.microsoft.com/en-us/troubleshoot/windows-server/support-tools/troubleshoot-issues-performance-monitor

 

B. Use PowerShell for Automated  Real Time or Periodic Capture

 

Local Capture Script

Get-Counter '\Processor(_Total)\% Processor Time'

Get-Counter '\Memory\Available MBytes'

Get-Counter '\LogicalDisk(_Total)\% Free Space'

Get-Counter '\PhysicalDisk(_Total)\Avg. Disk Queue Length'

Get-Counter '\Network Interface(*)\Bytes Total/sec'

 

Remote Multi-Server Capture Script

Invoke-Command -ComputerName Server1,Server2 -ScriptBlock {

Get-Counter '\Processor(_Total)\% Processor Time'

Get-Counter '\Memory\Available MBytes'

Get-Counter '\LogicalDisk(_Total)\% Free Space'

Get-Counter '\PhysicalDisk(_Total)\Avg. Disk Queue Length'

Get-Counter '\Network Interface(*)\Bytes Total/sec'

}

 

Note: For Invoke-Command to work using the default Windows Remote Management (WinRM) protocol, PowerShell Remoting must be enabled on the remote computer(s)

https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/enable-psremoting?view=powershell-7.5

 

STEP 5 – Citrix-Specific Validation

 

A. Use Citrix Director/Cloud Monitor/ Citrix Studio

Check:

    • Load Evaluator Index
    • Machine CPU Usage
    • Memory Usage
    • Average IOPS and Disk Latency
    • ICA RTT
    • Network Latency
    • Logon Duration Breakdown
    • Alerts and Notifications

Please refer to the sections highlighted in Red in Citrix Director/Cloud Monitor to review the above metrics.

 

1. Machine-based resource utilization and Load Evaluator Index monitoring:

https://support.citrix.com/external/article/CTX202150/how-to-calculate-the-load-evaluator-inde.html

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/director/troubleshoot-deployments/machines

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/director/troubleshoot-deployments/machines#machine-based-historical-resource-utilization

 

Citrix Studio:  To review VDA’s Load Index

 image.png

 

Citrix Director:

 

Historical Data for Logon Performance, Load Evaluator Index, Resource Utilization

image.png

 

Live data for Machine and Session Details

image.png

 

 

 

Live Data for Machine Utilization

image.png

 

Historical Data for Machine Utilization

image.png

 

2. Diagnose Session Performance issues: 

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/director/troubleshoot-deployments/user-issues/session-performance.html

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/policies/reference/virtual-delivery-agent-policy-settings/monitoring-policy-settings#policies-for-process-and-resource-monitoring

 

Live Data For Process Activity per session

image.png

 

Live Data for Session Performance

image.png

 

3. Diagnose user logon issues :

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/director/troubleshoot-deployments/user-issues/user-logon

 

Historical Data for Logon Performance

image.png

 

Live Data For Logon Duration

image.png

 

4. Configure Alert Policies:

https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/director/site-analytics/alerts-notifications.html#alerts-policies-conditions

image.png

 

STEP 6 – Identify the bottleneck layer and isolate if the performance hit is due to a third party or Citrix process.

After isolating the issue using the above tools, determine whether it is specific to Citrix or a third-party process, and then engage the appropriate vendor accordingly for advanced debugging if needed.

 

 

 

 







Environment

"Citrix is not responsible for and does not endorse or accept any responsibility for the contents or your use of these third party Web sites. Citrix is providing these links to you only as a convenience, and the inclusion of any link does not imply endorsement by Citrix of the linked Web site. It is your responsibility to take precautions to ensure that whatever Web site you use is free of viruses or other harmful items." 

Issue/Introduction

This article guides you through the initial troubleshooting steps for analyzing performance issues. It also includes a checklist of key performance metrics to review, helping you determine whether the root cause is related to Citrix or a third-party component so you can involve the appropriate vendor for further investigation.

 

Additional Information

For further deep dive into the cause of memory leak, CPU spike or System performance issues, refer to the below articles:

Find a memory leak
https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/finding-a-memory-leak

High CPU usage troubleshooting guidance
https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/troubleshoot-high-cpu-usage-guidance

Scenario guide: Troubleshoot performance problems in Windows
https://learn.microsoft.com/en-us/troubleshoot/windows-server/performance/troubleshoot-performance-problems-in-windows