Skip to main content

Analyze, visualize, and understand I/O performance issues in HPC workflows

Project description

WisIO: Workflow I/O Analysis Tool

Build and Test PyPI - Version PyPI - Wheel PyPI - Python Version

Overview

WisIO (Wisdom from I/O Behavior) is an open-source tool designed to efficiently analyze multi-terabyte-scale workflow performance data over distributed resources. It provides a comprehensive analysis of I/O performance, identifying bottlenecks and potential root causes through advanced rule-based analysis. With its extensible design, WisIO can be tailored to various use cases, providing actionable insights for improving application performance and resource utilization. By leveraging parallel computing and multi-perspective views, WisIO enables rapid detection of complex I/O issues, making it an invaluable asset for HPC professionals and researchers.

Installation

To install WisIO through pip (recommended for most users):

# Ensure runtime dependencies for optional features (e.g., Darshan, Recorder) are installed.
# This might involve using your system's package manager or a tool like Spack.
# Example using Spack to prepare the environment:
# spack -e tools install
pip install wisio[darshan,dftracer]

To install WisIO from source (for developers or custom builds):

# 1. Install system dependencies:
#    Refer to the "Install system dependencies" step in .github/workflows/ci.yml
#    (e.g., build-essential, cmake, libarrow-dev, libhdf5-dev, etc.).
#    Alternatively, tools like Spack can help manage these:
#    # spack -e tools install

# 2. Install Python build dependencies:
python -m pip install --upgrade pip meson-python setuptools wheel

# 3. Install WisIO from the root of this repository:
#    The following command includes optional C++ components (tests and tools).
#    The --prefix argument is optional and specifies the installation location.
pip install .[darshan,dftracer] \
  -Csetup-args="--prefix=$HOME/.local" \
  -Csetup-args="-Denable_tests=true" \
  -Csetup-args="-Denable_tools=true"

# (Optional) Install dependencies for running tests if you plan to contribute or run local tests:
# pip install -r tests/requirements.txt

Usage

Here's an example of how to run WisIO with the recorder analyzer using sample data included in the repository:

# Before running, ensure the sample data is extracted.
# For example, to extract the 'recorder-parquet' sample used below:
# mkdir -p tests/data/extracted 
# tar -xzf tests/data/recorder-parquet.tar.gz -C tests/data/extracted
wisio +analyzer=recorder percentile=0.99 trace_path=tests/data/extracted/recorder-parquet

This command will analyze the traces and print a summary of I/O characteristics and detected bottlenecks. Below is a sample of the "I/O Characteristics" output:

╭───────────────────────────────────── CM1 I/O Characteristics ─────────────────────────────────────╮
│                                                                                                   │
│  Runtime          667.81 seconds                                                                  │
│  I/O Time         4.12 seconds                                                                    │
│                   ├── Read - 0.00 seconds (0.05%)                                                 │
│                   ├── Write - 0.58 seconds (14.08%)                                               │
│                   └── Metadata - 3.53 seconds (85.89%)                                            │
│  I/O Operations   27,463 ops                                                                      │
│                   ├── Read - 1,282 ops (4.67%)                                                    │
│                   ├── Write - 2,303 ops (8.39%)                                                   │
│                   └── Metadata - 23,878 ops (86.95%)                                              │
│  I/O Size         21.18 GiB                                                                       │
│                   ├── Read - 20.03 GiB (94.59%)                                                   │
│                   └── Write - 1.15 GiB (5.41%)                                                    │
│  Read Requests    4 MiB-16 MiB - 1,282 ops                                                        │
│                   └── 4-16 MiB - 1,282 ops (100.00%)                                              │
│  Write Requests   4 kiB-16 MiB - 2,303 ops                                                        │
│                   ├── <4 kiB - 397 ops (17.24%)                                                   │
│                   ├── 4-16 kiB - 1,092 ops (47.42%)                                               │
│                   ├── 16-64 kiB - 722 ops (31.35%)                                                │
│                   ├── 64-256 kiB - 1 ops (0.04%)                                                  │
│                   └── 4-16 MiB - 91 ops (3.95%)                                                   │
│  Nodes            1 node                                                                          │
│  Apps             1 app                                                                           │
│  Processes/Ranks  1,280 processes                                                                 │
│  Files            775 files                                                                       │
│                   ├── Shared: 38 files (4.90%)                                                    │
│                   └── FPP: 737 files (95.10%)                                                     │
│  Time Periods     393 time periods (Time Granularity: 10,000,000.0)                               │
│  Access Pattern   Sequential: 3,585 ops (100.00%) - Random: 0 ops (0.00%)                         │
│                                                                                                   │
╰─ R: Read - W: Write - M: Metadata  ───────────────────────────────────────────────────────────────╯

WisIO also identifies potential I/O bottlenecks. Here is a snippet of the "I/O Bottlenecks" section from the same run:

╭────────────────── I/O Operations per Second: 25 I/O Bottlenecks with 56 Reasons ──────────────────╮
│                                                                                                   │
│  Time View (4 bottlenecks with 7 reasons)                                                         │
│  ├── [CR1] 32 processes access 2 files within 1 time period (5) across 32 I/O operations and      │
│  │   have an I/O time of 2.19 seconds which is 53.26% of overall I/O time of the workload.        │
│  │   └── [Excessive metadata access] Overall 100.00% (2.19 seconds) of I/O time is spent on       │
│  │       metadata access, specifically 100.00% (2.19 seconds) on the 'open' operation.            │
│  ├── [CR2] 1 process accesses 6 files within 1 time period (634) across 40 I/O operations and     │
│  │   has an I/O time of 0.33 seconds which is 7.97% of overall I/O time of the workload.          │
│  │   ├── [Excessive metadata access] Overall 99.35% (0.33 seconds) of I/O time is spent on        │
│  │   │   metadata access, specifically 99.13% (0.33 seconds) on the 'open' operation.             │
# ... (further bottleneck details omitted for brevity) ...
│                                                                                                   │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯

Further Information

For more details, to report issues, or to contribute to WisIO, please refer to the following resources:

  • Official WisIO Documentation: For detailed usage, configuration options, and information about analyzers.
  • Issue Tracker: To report bugs or suggest new features.
  • Contributing Guidelines: For information on how to contribute to the project, including setting up a development environment and coding standards.
  • Citation File: If you use WisIO in your research, please cite it using the information in this file.

Acknowledgments

This work was performed under the auspices of the U.S. Department of Energy by Lawrence Livermore National Laboratory under Contract DE-AC52-07NA27344. This material is based upon work supported by the U.S. Department of Energy, Office of Science, Office of Advanced Scientific Computing Research under the DOE Early Career Research Program (LLNL-CONF-862440). Also, this research is supported in part by the National Science Foundation (NSF) under Grants OAC-2104013, OAC-2313154, and OAC-2411318.

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

wisio-0.1.1.tar.gz (82.7 kB view details)

Uploaded Source

Built Distributions

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

wisio-0.1.1-cp310-cp310-manylinux_2_39_x86_64.whl (34.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

wisio-0.1.1-cp310-cp310-manylinux_2_35_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.35+ x86-64

wisio-0.1.1-cp39-cp39-manylinux_2_39_x86_64.whl (34.3 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.39+ x86-64

wisio-0.1.1-cp39-cp39-manylinux_2_35_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.35+ x86-64

wisio-0.1.1-cp38-cp38-manylinux_2_38_x86_64.whl (34.3 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.38+ x86-64

wisio-0.1.1-cp38-cp38-manylinux_2_35_x86_64.whl (33.1 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.35+ x86-64

File details

Details for the file wisio-0.1.1.tar.gz.

File metadata

  • Download URL: wisio-0.1.1.tar.gz
  • Upload date:
  • Size: 82.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for wisio-0.1.1.tar.gz
Algorithm Hash digest
SHA256 aa534ed5364556f5edc095c1542bc996e5385f439b257f7d2c99e1b897e7d989
MD5 bd445f7207de1702b11e4863563d5806
BLAKE2b-256 9adc57320ea0cbd44f2124a08b030feeb4380e90f406b30660a8c691ee13d349

See more details on using hashes here.

File details

Details for the file wisio-0.1.1-cp310-cp310-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wisio-0.1.1-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 10afadd3e46f4ebaacaff9bdb2374f79bdf168df50204c40335a6aec6b24c589
MD5 3079851c1bafa2465319b5db9de1d229
BLAKE2b-256 04a3d6bb34b2df30bf96e89b865aa9dbf24359b0563da228e6626ae83325cf43

See more details on using hashes here.

File details

Details for the file wisio-0.1.1-cp310-cp310-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for wisio-0.1.1-cp310-cp310-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 a8329bfe098f156a2940788b1a34a3314595c5899d64a5ff0ae5fd108184ce23
MD5 afc8a5e55311928fcb5b65386902e5e9
BLAKE2b-256 5dfb9771aabca9d82c3448475bc2906cf1bbcfbd71fd6510e1b4108cc6b20910

See more details on using hashes here.

File details

Details for the file wisio-0.1.1-cp39-cp39-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for wisio-0.1.1-cp39-cp39-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 eade59db120438b886e3c216c511207bfb8af8c084110512b0eab728eb8c6339
MD5 8f4a307f608b04414c5e882cf3d362c9
BLAKE2b-256 9d9906fea7d8d945cb3896423cfe6dddd16b1aef8f862f5561722db1d2c4f6e0

See more details on using hashes here.

File details

Details for the file wisio-0.1.1-cp39-cp39-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for wisio-0.1.1-cp39-cp39-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 c55cbad68eacb1bf4801313673002d68109ca5869479abd6286fbe02b5c6332e
MD5 1cbde0b5f6f358b550de9be47d616f3d
BLAKE2b-256 cb5060075c427265c6c82d1c46f936bd1d5f1d29250fc8a44d05a0aaebdefca0

See more details on using hashes here.

File details

Details for the file wisio-0.1.1-cp38-cp38-manylinux_2_38_x86_64.whl.

File metadata

File hashes

Hashes for wisio-0.1.1-cp38-cp38-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 0c32c198fc1b3b20d1ba85516daba0d96298d3e2a1426d133f759a4f915ab2bf
MD5 f842c6668174fc59ded11a7e81236442
BLAKE2b-256 5b6e10bbe9543293fe6e3de4f96cf0e8968d585bd131ad97028714cb7b0b5535

See more details on using hashes here.

File details

Details for the file wisio-0.1.1-cp38-cp38-manylinux_2_35_x86_64.whl.

File metadata

File hashes

Hashes for wisio-0.1.1-cp38-cp38-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 92c1d77151c48bb4b53310804aea7c03cb8c4f11b3a95b9ac7f5d222f11d38c6
MD5 9124879efe04044bb5661de811292516
BLAKE2b-256 39f16b1ef56b8efb3d5e432c9eadc42bcafc4d0c73cc6c9c889a01f1a75d04e8

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