Skip to main content
Test file storage performance
Last update:

Test file storage performance

For your information

This is a tutorial with an example of testing file storage performance on a cloud server.

To fully test file storage performance (throughput values and read and write limits in IOPS), use the following utility fio.

  1. Install the fio utility.
  2. Test performance.

Test results can be compared to expected performance, which depends on the file storage type. The values can be viewed in the table File storage limits.

Install the fio utility

  1. Connect to the cloud server.

  2. Install the utility fio:

    sudo apt update
    sudo apt install fio

Test performance

Tests can be used:

Test Parameters:

  • blocksize — the size of one block with which a read or write operation is performed;
  • iodepth — number of streams;
  • filename — file for writing or reading. The examples below show tests with the parameter filename=/mnt/nfs/test — a separate file will be created in the directory with the mounted file storage for testing;
  • size — total size of the test file. To get relevant results, we recommend performing tests on a file storage larger than 100 GB.

Random recording in 4KB blocks

  1. Run the test:

    fio \
    --name=test1 \
    --blocksize=4k \
    --rw=randwrite \
    --direct=1 \
    --buffered=0 \
    --ioengine=libaio \
    --iodepth=16 \
    --loops=1000 \
    --runtime=30 \
    --filename=/mnt/nfs/test \
    --size=99G
  2. In the test output, see the value of the write limit in IOPS (IOPS):

    write: IOPS=118, BW=475KiB/s (487kB/s)(2000MiB/4310296msec); 0 zone resets

Random reading in 4KB blocks

  1. Run the test:

    fio \
    --name=test1 \
    --blocksize=4k \
    --rw=randread \
    --direct=1 \
    --buffered=0 \
    --ioengine=libaio \
    --iodepth=16 \
    --loops=1000 \
    --runtime=30 \
    --filename=/mnt/nfs/test \
    --size=99G
  2. In the test output, see the value of the read limit in IOPS (IOPS):

    read: IOPS=320, BW=1280KiB/s (1311kB/s)(2000MiB/1599899msec)

Random recording in 4 MB blocks

  1. Run the test:

    fio \
    --name=test1 \
    --blocksize=4M \
    --rw=randwrite \
    --direct=1 \
    --buffered=0 \
    --ioengine=libaio \
    --iodepth=16 \
    --loops=1000 \
    --runtime=30 \
    --filename=/mnt/nfs/test \
    --size=99G
  2. In the test output, look at the throughput value (BW):

    write: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19974msec); 0 zone resets

Random reading in 4 MB blocks

  1. Run the test:

    fio \
    --name=test1 \
    --blocksize=4M \
    --rw=randread \
    --direct=1 \
    --buffered=0 \
    --ioengine=libaio \
    --iodepth=16 \
    --loops=1000 \
    --runtime=30 \
    --filename=/mnt/nfs/test \
    --size=99G
  2. In the test output, look at the throughput value (BW):

    read: IOPS=25, BW=100MiB/s (105MB/s)(2000MiB/19911msec)