The virt-top is a command-line performance monitoring tool for virtual machines, similar to the top utility for processes. It uses the libvirt API to query for the information about virtual machines (VMs) running on a KVM host and provides details about CPU, memory, disk, and network usage.
The virt-top displays real-time performance metrics and supports user interaction. The data available can be exported for further analysis.
š Brought to you by CloudSpinx – this excerpt is from Mastering KVM Virtualization. Read the entire guide online or download. View the full eBook.
Installing virt-top
On RHEL-Based Distributions:
sudo dnf install epel-release -y
sudo dnf install virt-top -y
On Debian-Based Distributions:
sudo apt update
sudo apt install virt-top -y
Verify installation by checking the software version:
virt-top --version
Launching virt-top requires sufficient privileges to access libvirt.
sudo virt-top
By default it connects to the default hypervisor (qemu:///system) unless specified.
To monitor VMs on a remote host, specify by connection URI:
sudo virt-top -c qemu+ssh://user@remote-host/system
Here is an output from virt-top command:
virt-top 22:43:42 - x86_64 12/12CPU 3000MHz 64015MB
4 domains, 4 active, 4 running, 0 sleeping, 0 paused, 0 inactive D:0 O:0 X:0
CPU: 12.4% Mem: 65536 MB (65536 MB by guests)
ID S RDRQ WRRQ RXBY TXBY %CPU %MEM TIME NAME
20 R 1901 134 503K 1M 10.5 51.0 877:32:13 dbmaster01
19 R 0 3 887K 1M 1.6 25.0 414:30:50 app-server01
3 R 0 7 36K 46K 0.2 12.0 286:56:27 vpn-server01
4 R 0 0 36K 43K 0.2 12.0 232:24:59 radius01
Key information from the ouptut are;
- Header: Shows general system metrics, including host CPU, memory, and the number of VMs.
- Columns:
| Column | Description |
|---|---|
| ID | The ID assigned to the VM by the hypervisor. |
| S | The state of the VM (R = Running, S = Sleeping, P = Paused). |
| RDRQ | The number of read requests issued by the VM. |
| WRRQ | The number of write requests issued by the VM. |
| RXBY | Network bytes received (e.g., 503K = 503 KB). |
| TXBY | Network bytes transmitted (e.g., 1M = 1 MB). |
| %CPU | Percentage of host CPU used by the VM. |
| %MEM | Percentage of host memory used by the VM. |
| TIME | Total CPU time used by the VM (HH:MM:SS format). |
| NAME | Name of the VM. |
Filter to display specific VMs by name or ID:
sudo virt-top --domain
Run virt-top for one minute and save output in csv file.
sudo virt-top --csv report.csv --end-time +60
For more usage example run:
virt-top --help





