IO500

The IO500 benchmark has been developed together with the community and its development is still ongoing. The benchmark is essentially a benchmark suite bundled with execution rules. It harnesses existing and trusted open source benchmarks.

The goal for the benchmark is to capture user-experienced performance. It aims to be:

  • Representative
  • Understandable
  • Scalable
  • Portable
  • Inclusive
  • Lightweight
  • Trustworthy

Workloads

The benchmark covers various workloads and computes a single score for comparison. The workloads are:

  • IOEasy: Applications with well optimized I/O patterns
    • ior-easy-write: Each process creates and writes to one file at the maximum write throughput of the storage system. Each process writes the same size of file as that of the rank which was able to write the most data when the 300s stonewall timer is hit, so that every process writes the same amount of data.
    • ior-easy-read: Each process reads the entirety of one file created by a process on a different node during the ior-easy-write phase.
    • ior-rnd4k-easy-read: Each process reads random 4k blocks from one file created by another process on a different node in the ior-easy-write phase until the 300s stonewall timer is hit.
  • IOHard: Applications that require a random workload
    • ior-hard-write: Create one shared file and write interleaved 47008-byte records to the file at the maximum write throughput of the storage system. The number of records written by each process is determined by the rank which was able to write the most records when the 300s stonewall timer is hit, so that every process writes the same amount of data.
    • ior-hard-read: Each process reads interleaved 47008-byte records from the file created by the ior-hard-write phase with an offset that ensures each node is reading records written by a process on a different node.
  • MDEasy: Metadata/small objects
    • mdtest-easy-write: Each process creates a unique directory and creates zero-byte files within that directory at the maximum rate possible. Each process creates the same number of files as the rank that created the most files when the 300s stonewall timer is hit.
    • mdtest-easy-stat: Each process fetches the file attributes of the files created by a process on a different node during the mdtest-easy-write phase.
    • mdtest-easy-delete: Each process deletes all of the files and directory created by a process on a different node during the mdtest-easy-write phase.
  • MDHard: Small files (3901 bytes) in a shared directory
    • mdtest-hard-write: A single directory is created and each process creates 3901-byte files with a unique name within that directory at the maximum rate possible. Each process creates the same number of files as of the rank which was able to write the most data within the 300s stonewall time period.
    • mdtest-hard-stat: Each process fetches the file attributes of the files created by a process on a different node during the mdtest-hard-write phase.
    • mdtest-hard-read: Each process reads the 3901-byte data of the files created by a process on a different node during the previous mdtest-hard-write/-stat phases.
    • mdtest-hard-delete: Each process deletes all of the files created by a process on a different node during the previous mdtest-hard-write/-stat/-read phases.
  • Find: Finding relevant objects based on patterns
    • find-easy: Scans the full set of files created by all of the *-write phases, and look for files created after the mdtest-easy-write phase with a filename containing the string '01' somewhere within it. Reports the total number of such files found.

The individual performance numbers are preserved and accessible via the web or the raw data. This allows deriving other relevant metrics.

We are in the process to establish a procedure to extend the current workload with further meaningful metrics.

Further Reading

Using the IO500 Logo

We welcome the promotion of the IO500 using the logo.

IO500 Logo License Terms

The IO500 logo is copyrighted us but may be used under the following conditions:

  1. The logo is used for its intended purpose to promote the IO500. You may use it:
    1. together with results obtained by using the IO500 with statements that you are using the benchmark
    2. together with opinions about the benchmark
  2. The appearance of the logo shall not be modified. You may change the file format and resolution.
  3. The logo must be placed onto a white or gray background.

If you are in doubt, contact the steering board.

Download the Logo