Skip to main content

No project description provided

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.0.tar.gz (79.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.0-cp310-cp310-manylinux_2_39_x86_64.whl (37.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.39+ x86-64

wisio-0.1.0-cp310-cp310-manylinux_2_35_x86_64.whl (35.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.35+ x86-64

wisio-0.1.0-cp39-cp39-manylinux_2_39_x86_64.whl (37.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.39+ x86-64

wisio-0.1.0-cp39-cp39-manylinux_2_35_x86_64.whl (35.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.35+ x86-64

wisio-0.1.0-cp38-cp38-manylinux_2_38_x86_64.whl (37.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.38+ x86-64

wisio-0.1.0-cp38-cp38-manylinux_2_35_x86_64.whl (35.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.35+ x86-64

File details

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

File metadata

  • Download URL: wisio-0.1.0.tar.gz
  • Upload date:
  • Size: 79.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.0.tar.gz
Algorithm Hash digest
SHA256 7c8994039d3229bca5b41e9944d42296cf908350cc7390c340bb4917d2884778
MD5 aee6ae38c3c052c269d149123970e451
BLAKE2b-256 f114594583d80712227b5d91ad4ed17e989396c2557af960a59a25dd87c79228

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wisio-0.1.0-cp310-cp310-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 28468787b52d7e0910759c1e888b0df302ea55c8c3b92f2351c9fe005b27c238
MD5 7d5cc0add0ef0576f7b3830dd254b927
BLAKE2b-256 ff43b1f33f6cba6f3199cb97ca1add4520b16924612455f3c88f1643c5afeb0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wisio-0.1.0-cp310-cp310-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 5e8459a4067d556120adf247513abc644b0441b129ec25672bce50740572edc1
MD5 dbe0e3b907843e1ba82515f00a115bc2
BLAKE2b-256 494fb3282c3923adb26b2b5c963cebca11a9ca288eeb7e7df4b3141a7b56d5cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wisio-0.1.0-cp39-cp39-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 e03892fc97371b2d6e16520c804a054cb8b9e95e616beb8fbff7c97642ea6058
MD5 963c09d3b2bff87f8d7683266cd0cf6f
BLAKE2b-256 506e23a4deb0a70f0c759cbe60d6aa0b23958122ecbf6d96910a6b92dada08ed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wisio-0.1.0-cp39-cp39-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 6da43bfc6c10cc595f9d512a213faee4bbf77a0f52cc607af63fd5d591d5c28e
MD5 3c752a0818baeaa2087127a197287bde
BLAKE2b-256 c1ae87670fa4ca0e0598211d1518ba9aaf445065313231d06f41ab1a26ff98c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wisio-0.1.0-cp38-cp38-manylinux_2_38_x86_64.whl
Algorithm Hash digest
SHA256 403bc6e184ae1e5e761261e0b5213f985a518da5efd386af6d4e235a7fdb6551
MD5 7161732f6032cdd7f7e87da0f95b06bd
BLAKE2b-256 51822ebce4ed4419ba7bc5295a614c54a71a5af4477e104ff09dfc85748f79fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for wisio-0.1.0-cp38-cp38-manylinux_2_35_x86_64.whl
Algorithm Hash digest
SHA256 3bec938996a497a437368ea35707be6346e431d2780a3b7bc756d6c03261125a
MD5 2bc8366d01d4d39fcd6930c14cc32da9
BLAKE2b-256 908d317e76e083f88a56e0edbb49b58551aac48b356dbb415e4671dae6fef24d

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