Skip to main content

A wrapper for iostat that displays I/O statistics in a real-time chart format

Project description

ioload

CI License: MIT Python 3.6+ PyPI version

A wrapper for iostat that displays I/O statistics in a real-time chart format similar to nload, with the ability to switch between devices using keyboard navigation.

🎯 Features

  • Real-time visualization - Live I/O statistics with smooth updates
  • Multiple chart views - IOPS, Throughput, Utilization, and Wait Times
  • Keyboard navigation - Switch devices and views with arrow keys
  • Color-coded charts - Easy-to-read terminal charts with color support
  • Cross-platform - Works on Linux and macOS (Unix-like systems)
  • Lightweight - Minimal dependencies, fast startup

Features

  • Real-time I/O statistics visualization
  • Multiple charts showing:
    • Read/Write IOPS (requests per second)
    • Read/Write Throughput (KB/s)
    • Device Utilization (%)
    • Average wait times
  • Switch between devices using < (previous) and > (next) keys
  • Clean, terminal-based interface using curses

Used by

  • Ring.cr

Sponsored by

  • Ring.cr

Requirements

  • Python 3.6+
  • iostat command (part of sysstat package)
    • On macOS: brew install sysstat
    • On Linux: Usually pre-installed or available via package manager
  • asciichartpy Python library for chart rendering
    • Install with: pip install asciichartpy

Installation

Quick Install (Recommended)

curl -fsSL https://raw.githubusercontent.com/guntanis/ioload/main/scripts/install.sh | bash

Manual Installation

See docs/INSTALL.md for detailed manual installation instructions.

Usage

./ioload.py

Or:

python3 ioload.py

You can specify a custom refresh interval (in seconds):

./ioload.py -i 0.5  # Refresh every 0.5 seconds
./ioload.py --interval 2.0  # Refresh every 2 seconds

Controls

  • Left Arrow or <: Switch to previous device
  • Right Arrow or >: Switch to next device
  • Up Arrow: Switch to previous chart view
  • Down Arrow: Switch to next chart view
  • Q: Quit the application

How it works

The tool continuously runs iostat -x in the background to collect I/O statistics for all block devices. It maintains a rolling history of the last 60 data points and displays them as ASCII charts in real-time.

The charts show:

  • Read/Write IOPS: Combined visualization of read and write requests per second
  • Read/Write Throughput: Combined visualization of read and write data transfer rates
  • Utilization: Device utilization percentage over time

📸 Screenshots

(Add screenshots or animated GIFs here showing ioload in action)

🤝 Contributing

Contributions are welcome! Please read our Contributing Guide for details on our code of conduct and the process for submitting pull requests.

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Inspired by nload and htop
  • Uses asciichartpy for beautiful terminal charts
  • Built with Python's curses library

📁 Project Structure

ioload/
├── docs/          # Additional documentation
├── scripts/       # Installation scripts
├── tests/         # Test files
└── ioload.py      # Main application

See PROJECT_STRUCTURE.md for details.

📚 Related Projects

  • nload - Network traffic monitor
  • htop - Interactive process viewer
  • iotop - I/O monitoring tool

⭐ Star History

If you find this project useful, please consider giving it a star on GitHub!


Made with ❤️ by the ioload contributors

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ioload-1.0.0.tar.gz (12.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ioload-1.0.0-py3-none-any.whl (10.2 kB view details)

Uploaded Python 3

File details

Details for the file ioload-1.0.0.tar.gz.

File metadata

  • Download URL: ioload-1.0.0.tar.gz
  • Upload date:
  • Size: 12.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ioload-1.0.0.tar.gz
Algorithm Hash digest
SHA256 5d417e9419dddd6a72ebe739dbc54db6b7a68de56c2bbc06e8c86ea2a548e2e5
MD5 dfb78d47bded4dfe3f32a22085f783d4
BLAKE2b-256 6aeec0db573e8e1db12d1a0bfef77ecc7ca122307de9c2b5377c2420b4c0efff

See more details on using hashes here.

File details

Details for the file ioload-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ioload-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 10.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for ioload-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cfee14ff0fe7885069be02f79ef3a907eecb6aa9c61933035c0a4735a722a2ae
MD5 610d4b67c0f6c969aea00ddbbab9ff0b
BLAKE2b-256 67b82904ca2da84021af5dc62ed42e259ceb6af6bb81f050de437491d8c340f1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page