Skip to main content

A python script to generate CrystalDiskMark-style test result with fio. Should work across multi platforms.

Project description

cdmpy

Python script packaging of fio-cdm, a python script to generate CrystalDiskMark-style test result with fio. Should work across multi platforms.

Requirement

  • fio
  • python3

Feature

  • Provide some options of CrystalDiskMark, e.g., number of test runs, test file size, mixed r/w tests, zero buffers, etc
  • Show IOPS and latency results for random read/write tests. This actually combines the "default", "peak performance" and "real world performance" tests in CrystalDiskMark
  • Easy to add/customize new tests in command-line arguments
  • Parse fio result in json format to achieve more stability

Installation

Install via Python pip install .

Usage

Call script via cdm after pip installation from anywhere.

usage: cdm [target] [-h] [-0] [-a job] [-E] [-f jobfile] [-n number] [-s size] [-x [mix]]

positional arguments:
  target      The path of the directory to test. Default to current directory.

optional arguments:
  -h, --help  show this help message and exit
  -0          Initialize buffers with zeros. Default to use random buffers.
  -a job      Manually add multiple jobs. Format is "seq|rnd,<queue depth>,<thread number>".
              This overrides the preset jobs. This option can be used more than once.
  -E          Disable extra information (iops, latency) for random IO tests. Default is enabled.
  -f jobfile  Save jobfile and quit without running fio. Use "-" to print to stdout.
  -n number   Number of tests, default is 5.
  -s size     The size of file I/O. It is directly passed to fio. Default is 1G.
  -x [mix]    Add mixed rw test. Default is disabled. <mix> is read percentage. Default is 70.

Note:
Recommend to put the <target> argument as the first one since some of the optional arguments will consume it.

Sample output

The default tests are same as CrystalDiskMark

tests: 5, size: 1G, target: . 173.3GiB/405.1GiB
|Name        | Read(MB/s)|Write(MB/s)|  Mix(MB/s)|
|------------|-----------|-----------|-----------|
|SEQ1M Q8 T1 |    2997.60|    2056.19|    1438.19|
|SEQ1M Q1 T1 |    1986.94|    1461.67|     941.04|
|RND4K Q32T16|    1816.04|     456.98|     434.18|
|... IOPS    |  443350.17|  111546.75|  105987.62|
|... latency |    1153.89|    4587.90|    2800.43|
|RND4K Q1 T1 |      54.20|     164.86|      34.43|
|... IOPS    |   13232.15|   40248.87|    8405.20|
|... latency |      74.76|      23.04|      67.78|

Examples

Set test file size to 512MB, 5 test runs with read, write and mix tests:

cdm -s 512m -n 5 -x

Manually add jobs to replace the default ones:

cdm -a seq,1,1 -a seq,32,1 -a rnd,16,8

Show the equivalent fio command directly (without running the test):

cdm -f - | fio --showcmd -

Similar projects

Shell version: https://github.com/buty4649/fio-cdm

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

cdmpy-0.3.2.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

cdmpy-0.3.2-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file cdmpy-0.3.2.tar.gz.

File metadata

  • Download URL: cdmpy-0.3.2.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for cdmpy-0.3.2.tar.gz
Algorithm Hash digest
SHA256 2594803c014ff88a13f13940a92305ca857748ab42313614627508656a4ddcb1
MD5 66fe4417d529e5eff1d5badc686c312b
BLAKE2b-256 1072c6ff5114f0157006426864e10c08e67031ac72702eadadf03e081d1d32f8

See more details on using hashes here.

File details

Details for the file cdmpy-0.3.2-py3-none-any.whl.

File metadata

  • Download URL: cdmpy-0.3.2-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.2

File hashes

Hashes for cdmpy-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 017c0d68a4acd28da08fed376e0555a5fddaeb0151c9421d053bfc2c2f2f8e07
MD5 5b65b1be90c5d928873fcfc321ab0393
BLAKE2b-256 e9340ec694ddbb08540d9a2bc3d81e49d5508fa7fdff9d9080f3fd31aade5010

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