Show I/O Statistics with iostat
iostat is a powerful Linux utility for tracking input/output device loading by observing the time the devices are active in relation to their average transfer rates. This article provides a thorough exploration of iostat, detailing its installation, usage, output interpretation, advanced options, real-world examples, performance tuning tips, and even secure remote monitoring over VPNs.
1. Installation and Prerequisites
Before you can use iostat, you need to install the sysstat package which contains the command.
- On Debian/Ubuntu:
sudo apt-get update sudo apt-get install sysstat - On RHEL/CentOS:
sudo yum install sysstat - On Fedora:
sudo dnf install sysstat
Once installed, ensure data collection is enabled by editing /etc/default/sysstat or /etc/sysconfig/sysstat, setting ENABLED=true.
2. Basic Usage
The simplest invocation of iostat shows CPU and device stats since the system’s last boot:
iostat
For continuous monitoring, specify an interval (in seconds) and count:
iostat 5 3
This command prints statistics every 5 seconds, three times.
3. Understanding the Output
The output is divided into two sections: CPU statistics and device statistics.
3.1 CPU Statistics
| Field | Description |
|---|---|
| %user | Time spent running non-kernel code (user time). |
| %system | Time spent running kernel code (system time). |
| %idle | Time the CPU was idle. |
| %iowait | Time waiting for I/O operations to complete. |
3.2 Device Statistics
| Field | Description |
|---|---|
| tps | Transfers per second to the device. |
| kB_read/s, kB_wrtn/s | Kilobytes read/written per second. |
| await | Average time (ms) for I/O requests. |
| %util | Percentage of CPU time during which I/O requests were issued to the device (device utilization). |
4. Advanced Options
-x: Extended statistics (adds avgqu-sz, svctm, etc.).-d: Display only device utilization report.-p [device]: Report statistics for specified partitions.-j: JSON output for integration with tools.-N: Show device names in the kernel format.
Combine flags to tailor the report:
iostat -dx 2 5
5. Real-World Examples
5.1 Spotting a Bottleneck
If %util approaches 100% and await spikes, your disk is saturated. Use:
iostat -dx 1
5.2 Comparing Devices
To compare two disks side by side:
iostat -p sda,sdb -dx 5
6. Performance Tuning Tips
- Increase I/O Scheduler Efficiency: Depending on workload, switch between
cfq,deadline, ornoopvia/sys/block/sda/queue/scheduler. - Leverage Caching: Adjust
vm.dirty_ratioandvm.dirty_background_ratiofor write caching. - Striping and RAID: Distribute I/O across multiple devices to lower await and raise throughput.
7. Secure Remote Monitoring
When monitoring remote servers, secure the channel using a VPN. Two popular solutions are:
Once the VPN link is up, you can run ssh and then iostat as if you were on the local network, ensuring both data confidentiality and integrity.
7.1 Example: Monitoring via WireGuard
- Configure WireGuard on server and client.
- Establish the tunnel:
wg-quick up wg0. - SSH over the tunnel:
ssh user@10.0.0.2. - Run
iostat -xz 3for extended real-time stats.
8. Further Reading
Conclusion
iostat is an indispensable tool for system administrators and performance engineers. Its concise yet comprehensive output helps identify disk I/O bottlenecks, evaluate tuning changes, and ensure optimal resource utilization. By combining iostat with secure VPN tunnels, you can confidently monitor remote infrastructure without exposing critical operations to the open internet.
Leave a Reply