How to Check Virtual Machine Performance on Linux

Check virtual machine performance on Linux servers. Monitor VM CPU, memory, disk I/O, network performance. Setup monitoring with Zuzia.app.

Last updated: 2026-01-11

How to Check Virtual Machine Performance on Linux

Need to check virtual machine performance on your Linux server? Want to monitor VM CPU, memory, disk I/O, and network performance? This guide shows you how to check VM performance using built-in Linux commands and set up automated monitoring with Zuzia.app.

For comprehensive VM monitoring strategies, see Virtual Machines Performance Monitoring Guide. For troubleshooting VM issues, see Virtual Machine Performance Degradation.

Why Checking Virtual Machine Performance Matters

VM performance checks help you detect performance degradation early, optimize resource allocation, identify bottlenecks, prevent resource exhaustion, and ensure optimal VM performance. Regular performance checks prevent VM issues from causing application slowdowns.

Method 1: Check VM CPU Performance

Monitor CPU usage and performance:

Check CPU Usage

# Check CPU usage
top
htop

# Check CPU statistics
mpstat -P ALL 1 5

# Check CPU load average
uptime

# Check CPU per process
ps aux --sort=-%cpu | head -10

CPU monitoring shows processor utilization and performance.

Check CPU Steal Time

# Check CPU steal time (indicates CPU contention)
mpstat 1 5 | grep -i steal

# Monitor CPU steal continuously
watch -n 1 'mpstat | grep -i steal'

# Check for CPU contention
vmstat 1 5 | awk '{print $16}' | tail -5

CPU steal time indicates CPU contention on the host.

Method 2: Check VM Memory Performance

Monitor memory usage and pressure:

Check Memory Usage

# Check memory usage
free -h

# Check memory statistics
vmstat 1 5

# Check memory per process
ps aux --sort=-%mem | head -10

# Check swap usage
swapon --show

Memory monitoring shows RAM usage and swap activity.

Check Memory Balloon

# Check memory balloon (KVM/QEMU)
virsh dominfo vm-name | grep "Memory"

# Check memory allocation
virsh memtune vm-name

# Monitor memory pressure
watch -n 1 'free -h'

Memory balloon indicates memory pressure on the host.

Method 3: Check VM Disk I/O Performance

Monitor storage performance:

Check Disk I/O Statistics

# Check disk I/O statistics
iostat -x 1 5

# Check disk usage
df -h

# Check disk I/O per process
iotop -o

# Check disk read/write performance
dd if=/dev/zero of=/tmp/test bs=1M count=1000 conv=fdatasync

Disk I/O monitoring shows storage performance and bottlenecks.

Check Disk Latency

# Check disk latency
iostat -x 1 5 | grep -E "await|svctm"

# Monitor disk wait times
iostat -x 1 5 | awk '{print $10}' | tail -5

# Check disk queue depth
iostat -x 1 5 | awk '{print $9}' | tail -5

Disk latency monitoring shows storage speed.

Method 4: Check VM Network Performance

Monitor network throughput and latency:

Check Network Interface Statistics

# Check network interface statistics
ip -s link show

# Check network connections
ss -tnap

# Monitor network traffic
iftop -i eth0

# Check network performance
iperf3 -c server-ip

Network monitoring shows bandwidth usage and performance.

Method 5: Automated VM Performance Monitoring with Zuzia.app

Manually checking VM performance works for troubleshooting, but for production environments, you need automated VM performance monitoring that alerts you when performance degradation or resource exhaustion are detected.

Setting Up Automated VM Performance Monitoring

  1. Add Scheduled Task in Zuzia.app Dashboard

    • Navigate to your server in Zuzia.app
    • Click "Add Scheduled Task"
    • Choose "Command Execution" as the task type
  2. Configure VM Performance Check Command

    • Enter command: top -b -n 1 | head -20
    • Set execution frequency: Every 5-15 minutes
    • Configure alert conditions: Alert when CPU usage > 80%, memory usage > 85%
    • Set up comparison with previous runs to detect changes
  3. Set Up Notifications

    • Choose notification channels (email, webhook, Slack, etc.)
    • Configure alert thresholds (e.g., alert if CPU usage > 95%, memory usage > 95%)
    • Set up escalation rules for critical VM performance issues
    • Configure different alert levels for different VMs

Monitor Specific VM Performance Metrics

For critical VMs, create dedicated monitoring tasks:

# Check CPU and memory usage
top -b -n 1 | head -20

# Check disk I/O performance
iostat -x 1 1

# Check memory usage
free -h

# Check VM resource limits (KVM)
virsh schedinfo vm-name

Zuzia.app stores all command outputs in its database, allowing you to track VM performance over time, identify performance degradation early, and detect resource exhaustion before it causes problems.

Best Practices for Checking VM Performance

1. Check VM Performance Regularly

Check VM performance every 5-15 minutes. Performance degradation can occur gradually, so regular checks help detect issues early. Use Zuzia.app automated monitoring to check VM performance continuously without manual intervention.

2. Monitor Both Guest and Host Levels

Monitor at multiple levels: guest OS metrics (CPU, memory, disk, network) and host-level metrics (CPU steal, memory balloon, host resources). Guest monitoring shows VM performance, while host monitoring shows resource contention.

Monitor VM performance trends over time to identify degradation patterns. Use historical data to predict performance issues and plan VM capacity upgrades proactively.

4. Set Appropriate Alert Thresholds

Configure alerts based on your VM workload. Warning at 80% CPU usage, critical at 95% CPU usage. Memory: warning at 85%, critical at 95%. Adjust thresholds based on workload characteristics.

5. Plan VM Capacity Proactively

Use VM performance data for planning VM capacity upgrades. Analyze performance trends, predict capacity needs, and plan upgrades before performance degrades.

Troubleshooting Common VM Performance Issues

High CPU Usage

If CPU usage is high:

# Check CPU usage
top
htop

# Check CPU steal time
mpstat | grep -i steal

# Identify CPU-intensive processes
ps aux --sort=-%cpu | head -10

# Check CPU allocation
virsh schedinfo vm-name

High CPU usage requires optimization or resource increase.

High Memory Usage

If memory usage is high:

# Check memory usage
free -h

# Check swap usage
swapon --show

# Check memory balloon
virsh dominfo vm-name | grep "Memory"

# Identify memory-intensive processes
ps aux --sort=-%mem | head -10

High memory usage requires optimization or memory increase.

High Disk I/O Wait

If disk I/O wait is high:

# Check disk I/O statistics
iostat -x 1 5

# Check disk latency
iostat -x 1 5 | grep -E "await|svctm"

# Check disk I/O per process
iotop -o

# Check disk queue depth
iostat -x 1 5 | awk '{print $9}'

High disk I/O wait indicates storage bottlenecks.

FAQ: Common Questions About Checking VM Performance

How often should I check virtual machine performance on my Linux server?

We recommend checking VM performance every 5-15 minutes. Performance degradation can occur gradually, so regular checks help detect issues early. For critical VMs, check more frequently. Use Zuzia.app automated monitoring to check VM performance continuously without manual intervention.

What should I do when VM performance is degraded?

When VM performance is degraded, first identify which resource is causing the issue (CPU, memory, disk, network). Check resource usage and identify bottlenecks. Optimize VM workload if inefficient. Increase VM resources if under-allocated. Resolve host resource contention if present.

Can I check VM performance without affecting the VM?

Yes, checking VM performance is read-only and doesn't affect VM operation. Commands like top, iostat, or free only query performance metrics. However, performance monitoring tools may generate minimal overhead.

How do I identify which VM has performance problems?

Use VM performance monitoring tools to check CPU, memory, disk, and network usage for each VM. Review VM resource allocation and limits. Check for resource contention between VMs. Zuzia.app tracks individual VM performance and can help identify problematic VMs.

Why is monitoring VM performance important?

Monitoring VM performance helps detect performance degradation early, optimize resource allocation, identify bottlenecks, prevent resource exhaustion, and ensure optimal VM performance. Performance degradation can cause application slowdowns, so tracking VM performance is essential for maintaining system reliability.

How do I compare VM performance across multiple VMs?

Use Zuzia.app to monitor VM performance across multiple VMs simultaneously. Each VM executes performance checks independently, and all results are stored in Zuzia.app's database for centralized comparison and analysis. You can view VM performance for all VMs in a single dashboard.

Does Zuzia.app track VM performance changes over time?

Yes, Zuzia.app stores all command outputs in its database, allowing you to track VM performance over time and identify when performance degradation or resource exhaustion occur. You can view historical data to see VM performance trends, identify degradation patterns, and verify that VM optimizations were successful.

Note: The content above is part of our brainstorming and planning process. Not all described features are yet available in the current version of Zuzia.

If you'd like to achieve what's described in this article, please contact us – we'd be happy to work on it and tailor the solution to your needs.

In the meantime, we invite you to try out Zuzia's current features – server monitoring, SSL checks, task management, and many more.

We use cookies to ensure the proper functioning of our website.