Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
How do I diagnose high CPU utilization on my EC2 Windows instance when my CPU doesn't throttle?
My Amazon Elastic Compute Cloud (Amazon EC2) Windows instance experiences high CPU utilization, but my instance's CPU isn't being throttled. I want to diagnose the high CPU utilization.
Resolution
To determine your high CPU utilization, either run the AWSSupport-TroubleshootWindowsPerformance runbook, or manually identify the processes that have high CPU utilization.
After you determine the specific process that causes high CPU utilization, troubleshoot that specific application.
Run the AWSSupport-TroubleshootWindowsPerformance runbook
Prerequisite: Before you start the runbook, make sure that your AWS Identity and Access Management (IAM) user or role has the required permissions. For more information, see Required IAM permissions in AWSSupport-TroubleshootWindowsPerformance.
Complete the following steps:
- Open the AWS Systems Manager console.
- In the Regions list, select your AWS Region.
- In the navigation pane, expand Shared Resources, and then choose Documents.
- In the search bar, enter AWSSupport-TroubleshootWindowsPerformance, and then select the runbook.
- Choose Execute automation.
- Choose Execute. For a list of actions that the runbook performs, see Document Steps in AWSSupport-TroubleshootWindowsPerformance.
- Review the Output for detailed results of the execution.
Manually troubleshoot
Use Task Manager to identify the source of high CPU utilization
Complete the following steps:
- Use Remote Desktop Protocol (RDP) to connect to your instance.
- To sort by CPU, open Task Manager, and then select the CPU column.
- Identify processes with high CPU utilization to determine whether processes use the expected amount of CPU.
- Troubleshoot applications that use more CPU than expected.
If the applications use the expected amount of CPU, then change your instance type. For more information, see How do I resize my EC2 Windows instance or change the EC2 Windows instance type?
Use Process Explorer to identify the source of high CPU utilization
Process Explorer is a Sysinternals Microsoft utility. For more information see Sysinternals on the Microsoft Learn website.
Complete the following steps:
- Download Process Explorer to your instance. To download, see Process Explorer on the Microsoft Ignite website.
- Launch the application as an administrator.
- Select the CPU column to sort processes by usage.
- Choose View, Show Process Tree to view the parent-child relationship between processes.
Note: Select the Threads tab for a more detailed view of what the process is doing when it causes high CPU utilization.
If you still can't determine the cause of the high CPU utilization, then use Performance Monitor and the Performance Analysis of Logs (PAL) tool. Performance Monitor is a built-in Windows tool.
(Optional) Use Performance Monitor to identify the source of high CPU utilization
Complete the following steps:
- Use RDP to connect to your instance.
- Open Performance Monitor, and then expand Data Collector Sets.
- Open the context menu for User Defined, and then choose New, Data Collector Set.
For Name, enter a name for the new data collector set, and then choose Create manually (Advanced). - Choose Next.
- For Create data logs, select Performance Counter, and then choose Next.
- Choose Add.
For Available counters, choose Process, % Processor Time.
For Instances of selected object, choose All instances.
Choose Add.
Repeat this step for any other performance counters that you want to add. - Choose Ok.
- (Optional) Set Sample interval and Units to your preferred values.
- Choose Next.
- Choose a location with at least 1 GB of free space to store the data, and then choose Next.
- Choose Save and close, and then choose Finish.
Note: If the CPU is spiking, then choose Start this data collector set now. Then, choose Finish.
After the performance monitor tool completes the data collection, you can open and review the report to determine which processes use the instance CPU. Then, use that information to troubleshoot the specific application that uses the CPU.
(Optional) Use Performance Analysis of Logs (PAL) to generate a report for analysis
Note: The following steps include the use of open source software hosted on GitHub.
PAL is a third-party tool that you can use to generate a report from your Performance Monitor file for a more detailed analysis. To use PAL, complete the following steps:
- Install PAL on the GitHub website, and then launch the PAL Wizard.
- Choose Next.
- For Performance Counter Log, enter the path to your Performance Monitor file, and then choose Next.
- For Title, choose System Overview, and then choose Next.
Note: System Overview provides a general operating system performance analysis. - Review and answer the questions for each entry in the Questions section. For OS, choose the latest operating system (OS) version available from the list with a bit version that matches your instance. Choose Next.
- Select Process all of the counters in the counter log, and then choose Next.
Note: Processing all counter instances might be resource intensive. - For Output Folder, select an output directory for your PAL Report.
- For HTML Report, select HTML Report, and then choose Next.
- Choose Next, and then choose Finish.
- Review the Process and Processor sections of the PAL Report to determine which processes use the instance's CPU.
Related information
How can I find out if the CPU on my T2 or T3 EC2 Windows instance is being throttled?
Run an automated operation powered by Systems Manager Automation
- Language
- English

Relevant content
- Accepted Answerasked 2 years ago
- asked 2 years ago
AWS OFFICIALUpdated 2 years ago