Skip to main content

Frequency Techniques for I/O

Project description

GitHub Release GitHub Release Date contributors issues license Upload Python Package Python Package


FTIO

Frequency Techniques for I/O

Explore the approach »
View Demo · Report Bug · Request Feature

FTIO captures periodic I/O using frequency techniques. Many high-performance computing (HPC) applications perform their I/O in bursts following a periodic pattern. Predicting such patterns can be very efficient for I/O contention avoidance strategies, including burst buffer management, for example. FTIO allows offline detection and online prediction of periodic I/O phases. FTIO uses the discrete Fourier transform (DFT), combined with outlier detection methods to extract the dominant frequency in the signal. Additional metrics gauge the confidence in the output and tell how far from being periodic the signal is. A complete description of the approach is provided here.

This repository provides two main Python-based tools:

  • ftio: uses frequency techniques and outlier detection methods to find the period of I/O phases
  • predictor: implements the online version of FTIO. It reinvokes FTIO whenever new traces are appended to the monitored file. See online prediction for more details. We recommend using TMIO to generate the file with the I/O traces.

Other tools:

  • ioplot generates interactive plots in HTML
  • ioparse parses and merges several traces to an Extra-P supported format. This allows one to examine the scaling behavior of the monitored metrics. Traces generated by FTIO (frequency modls), TMIO (msgpack, json and jsonl) and other tools (Darshan, Recorder, and TAU Metric Proxy) are supported.
Table of Contents
  1. Installation
  2. Usage
  3. Testing
  4. Contributing
  5. Contact
  6. License
  7. Acknowledgments
  8. Citation
  9. Publications

Join the Slack channel or see the latest updates here: Latest News

Installation

FTIO is available on PYPI and can be easily installed via pip:

pip install ftio-hpc

For the latest GitHub version, FTIO can be installed either automatically or manually. As a prerequisite, for the virtual environment, python3.11-venv is needed, which can be installed on Ubuntu, for example, with:

apt install python3.11-venv

Note there are currently issues with pyDarshan on Mac, that can be solved as mentioned here

Automated installation

Simply call the make command:

make install

This generates a virtual environment in the current directory, sources .venv/bin/activate, and installs FTIO as a module.

If you don't need a dedicated environment, just call:

make ftio PYTHON=python3

Manual installation

Create a virtual environment if needed and activate it:

python3 -m venv .venv
source .venv/bin/activate

Install all tools provided in this repository simply by using pip:

pip install .

Note: you need to activate the environment to use ftio and the other tools using:

source path/to/venv/bin/activate

Usage

For installation instructions see installation.

To call ftio on a single file, use:

ftio filename.extension

Supported extensions are json, jsonLines, msgpack, and darshan. For recorder, you provide the path to the folder instead of filename.extension. For more on the input format including a custom format see supported file formats.

FTIO provides various options and extensions. To see all available command line arguments, call:

ftio -h

  
usage: ftio [-h] [-m MODE] [-r RENDER] [-f FREQ] [-ts TS] [-te TE] [-tr TRANSFORMATION] [-e ENGINE]
            [-o OUTLIER] [-le LEVEL] [-t TOL] [-d] [-nd] [-re] [--no-reconstruction] [-p] [-np] [-c] [-w]
            [-fh FREQUENCY_HITS] [-v] [-s] [-ns] [-a] [-na] [-i] [-ni] [-x DXT_MODE] [-l LIMIT]
            files [files ...]

ftio generates frequency predictions. There are several options available to enhance the predictions. In the standard mode, the DFT is used in combination with an outlier detection method. Additionally, autocorrelation can be used to further increase the confidence in the results:

  1. DFT + outlier detection (Z-score, DB-Scan, Isolation forest, peak detection, or LOF)​
  2. Optionally: Autocorrelation + Peak detection (-c flag)
  3. If step 2. is performed, the results from both predictions aer merged automatically

Several flags can be specified. The most relevant settings are:

Flag Description
file file, file list (file 0 ... file n), folder, or folder list (folder 0.. folder n) containing traces (positional argument)
-h, --help show this help message and exit
-m MODE, --mode MODE if the trace file contains several I/O modes, a specific mode can be selected. Supported modes are: async_write, async_read, sync_write, sync_read
-r RENDER, --render RENDER specifies how the plots are rendered. Either dynamic (default) or static
-f FREQ, --freq FREQ specifies the sampling rate with which the continuous signal is discretized (default=10Hz). This directly affects the highest captured frequency (Nyquist). The value is specified in Hz. In case this value is set to -1, the auto mode is launched which sets the sampling frequency automatically to the smallest change in the bandwidth detected. Note that the lowest allowed frequency in the auto mode is 2000 Hz
-ts TS, --ts TS Modifies the start time of the examined time window
-te TE, --te TE Modifies the end time of the examined time window
-tr TRANSFORMATION, --transformation TRANSFORMATION specifies the frequency technique to use. Supported modes are: dft (default), wave_disc, and wave_cont
-e ENGINE, --engine ENGINE specifies the engine used to display the figures. Either plotly (default) or mathplotlib can be used. Plotly is used to generate interactive plots as HTML files. Set this value to no if you do not want to generate plots
-o OUTLIER, --outlier OUTLIER outlier detection method: Z-score (default), DB-Scan, Isolation_forest, or LOF
-le LEVEL, --level LEVEL specifies the decomposition level for the discrete wavelet transformation (default=3). If specified as auto, the maximum decomposition level is automatic calculated
-t TOL, --tol TOL tolerance value
-d, --dtw performs dynamic time wrapping on the top 3 frequencies (highest contribution) calculated using the DFT if set (default=False)
-re, --reconstruction plots reconstruction of top 10 signals on figure
-np, --no-psd if set, replace the power density spectrum (a*a/N) with the amplitude spectrum (a)
-c, --autocorrelation if set, autocorrelation is calculated in addition to DFT. The results are merged to a single prediction at the end
-w, --window_adaptation online time window adaptation. If set to true, the time window is shifted on X hits to X times the previous phases from the current instance. X corresponds to frequency_hits
-fh FREQUENCY_HITS, --frequency_hits FREQUENCY_HITS specifies the number of hits needed to adapt the time window. A hit occurs once a dominant frequency is found
-v, --verbose sets verbose on or off (default=False)
-x DXT_MODE, --dxt_mode DXT_MODE select data to extract from Darshan traces (DXT_POSIX or DXT_MPIIO (default))
-l LIMIT, --limit LIMIT max ranks to consider when reading a folder

predictor has the same syntax as ftio. All arguments that are available for ftio are also available for predictor.

Testing

There is a 8.jsonl file provided for testing under examples. On your system, navigate to the folder and call:

ftio 8.jsonl

Contributing

If you have a suggestion that would make this better, please fork the repository and create a pull request.

  1. Fork the project
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a pull request

Contact

License

license

Distributed under the BSD 3-Clause License. See LISCENCE for more information.

Acknowledgments

Authors:

  • Ahmad Tarraf

This work is a result of cooperation between the Technical University of Darmstadt and INRIA in scope of the EuroHPC ADMIRE project.

Citation

 @inproceedings{Tarraf_Bandet_Boito_Pallez_Wolf_2024, 
  author={Tarraf, Ahmad and Bandet, Alexis and Boito, Francieli and Pallez, Guillaume and Wolf, Felix},
  title={Capturing Periodic I/O Using Frequency Techniques}, 
  booktitle={2024 IEEE International Parallel and Distributed Processing Symposium (IPDPS)}, 
  address={San Francisco, CA, USA}, 
  year={2024},
  month=may, 
  pages={1–14}, 
  notes = {(accepted)}
 }

Publications

  1. A. Tarraf, A. Bandet, F. Boito, G. Pallez, and F. Wolf, “Capturing Periodic I/O Using Frequency Techniques,” in 2024 IEEE International Parallel and Distributed Processing Symposium (IPDPS), San Francisco, CA, USA, May 2024, pp. 1–14.

  2. A. Tarraf, A. Bandet, F. Boito, G. Pallez, and F. Wolf, “FTIO: Detecting I/O periodicity using frequency techniques.” arXiv preprint arXiv:2306.08601 (2023).

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

ftio-hpc-0.0.3.tar.gz (92.0 kB view details)

Uploaded Source

Built Distribution

ftio_hpc-0.0.3-py3-none-any.whl (108.0 kB view details)

Uploaded Python 3

File details

Details for the file ftio-hpc-0.0.3.tar.gz.

File metadata

  • Download URL: ftio-hpc-0.0.3.tar.gz
  • Upload date:
  • Size: 92.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for ftio-hpc-0.0.3.tar.gz
Algorithm Hash digest
SHA256 ace3b6d10ef0f81afcee6ceaaef7ac7a64bf3e70eeb1dd2fb4edff04c6714b75
MD5 5f26e769c58adcccd878f85036cfc51f
BLAKE2b-256 6ae707d9dd5bb33c4a62615aff585d5ca7b7d958e59477ba5a98436aa1c8bafc

See more details on using hashes here.

File details

Details for the file ftio_hpc-0.0.3-py3-none-any.whl.

File metadata

  • Download URL: ftio_hpc-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 108.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for ftio_hpc-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 aff3c9f041eb4cb03896a4166953fc11dc359fb16b13b17f0164d5b3ce59ffc1
MD5 924f8f2241a433642d85e088900f4db4
BLAKE2b-256 7ea14db6a60c49969249c52e0fde2d817d7139d6fd0bff9e85906d1238cbad73

See more details on using hashes here.

Supported by

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