An Azure service that is used to provision Windows and Linux virtual machines.
Hello @Justine Yamane,
Thank you for reaching out Q&A forum.
Run these immediately on the VM to get a snapshot:
Linux
bash
# Overall CPU, memory, load average
top -bn1 | head -20
# CPU per core
mpstat -P ALL 1 3
# Memory
free -h
# Disk I/O — what's consuming it
iostat -xz 1 5
# Top disk I/O by process
iotop -o -b -n 3
# Network
sar -n DEV 1 5
# What processes are consuming most resources
ps aux --sort=-%cpu | head -20
ps aux --sort=-%mem | head -20
Windows
powershell
# Quick resource snapshot
Get-Process | Sort-Object CPU -Descending | Select-Object -First 20
Get-Process | Sort-Object WorkingSet -Descending | Select-Object -First 20
# Disk I/O
Get-Counter '\PhysicalDisk(*)\Disk Bytes/sec'
Get-Counter '\Processor(_Total)\% Processor Time'
Get-Counter '\Memory\Available MBytes'
Use Azure's Built-in Diagnostics
Performance Diagnostics Extension
In the portal: VM → Diagnose and Solve Problems → Performance Diagnostics
This runs automated checks and gives you a report on:
- CPU bottlenecks
- Memory pressure
- Disk throttling
- Network issues
- Top resource-consuming processes
Azure Monitor / Log Analytics
If you have the Azure Monitor Agent installed:
kusto
// Top CPU consuming processes over last hour
Perf
| where TimeGenerated > ago(1h)
| where CounterName == "% Processor Time"
| where InstanceName != "_Total"
| summarize avg(CounterValue) by Computer, InstanceName
| top 20 by avg_CounterValue desc
kusto
// Disk latency
Perf
| where CounterName == "Avg. Disk sec/Read" or CounterName == "Avg. Disk sec/Write"
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by CounterName, bin(TimeGenerated, 5m)
| render timechart
If this answers your query, do click Accept Answer and Up-Vote for the same. And, if you have any further query do let us know.