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.
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
-
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
-
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
- Enter command:
-
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.
3. Track Performance Trends
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.
Related guides, recipes, and problems
-
Related guides
-
Related recipes
-
Related problems