Help Center/ Scalable File Service/ Best Practices/ Testing SFS Turbo Performance
Updated on 2022-09-16 GMT+08:00

Testing SFS Turbo Performance

fio is an open-source I/O pressure testing tool. You can use fio to test the throughput and IOPS of SFS.

Prerequisites

fio has been installed on the ECS. It can be downloaded from the official website or from GitHub.

Note and Description

The test performance depends on the network bandwidth between the client and server, as well as the capacity of the file system.

Installing fio

The following uses a Linux CentOS system as an example:

  1. Download fio.

    yum install fio

  2. Install the libaio engine.

    yum install libaio-devel

  3. Check the fio version.

    fio --version

File System Performance Data

The performance indicators of SFS Turbo file systems include IOPS and throughput. For details, see Table 1.

Table 1 Sample performance data

Parameter

SFS Turbo Standard

SFS Turbo Performance

Maximum capacity

32 TB

32 TB

Maximum IOPS

5,000

20,000

Maximum throughput

150 MB/s

350 MB/s

Formula used to calculate the IOPS

IOPS = Min. (5,000, (1,200 + 6 x Capacity))

IOPS = Min. (20,000, (1,500 + 20 x Capacity))

IOPS Calculation Formula

  • IOPS of a single file system = Min. (Maximum IOPS, (Baseline IOPS + IOPS per GB x Capacity))

    For an SFS Turbo Performance file system:

    • If the file system capacity is 500 GB: IOPS = Min. (20,000, (1,500 + 20 x 500)) = 11,500
    • If the file system capacity is 1,000 GB: IOPS = Min. (20,000, (1,500 + 20 x 1,000)) = 20,000
  • No performance calculation formula is available for the SFS Turbo Standard - Enhanced and SFS Turbo Performance - Enhanced file systems. The IOPS of an SFS Turbo Standard - Enhanced file system is 15,000, and that of an SFS Turbo Performance - Enhanced file system is 100,000.

Common Test Configuration Example

The following estimated values are obtained from the test on a single ECS. You are advised to use multiple ECSs to test the performance of .

This section uses SFS Turbo Performance as an example to describe the specifications of the ECS.

Specifications: General computing-plus | c3.xlarge.4 | 4 vCPUs | 16 GB

Image: CentOS 7.5 64-bit

Mixed read/write with a read/write ratio of 7:3

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/nfs/test_fio --bs=4k --iodepth=128 --size=10240M --readwrite=rw --rwmixwrite=30 --fallocate=none

    /mnt/nfs/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/nfs directory in this example. Set it based on the site requirements.

  • fio result:

Mixed read/write with a read/write ratio of 3:7

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/nfs/test_fio --bs=4k --iodepth=128 --size=10240M --readwrite=rw --rwmixwrite=70 --fallocate=none

    /mnt/nfs/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/nfs directory in this example. Set it based on the site requirements.

  • fio result:

Sequential read IOPS

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=4k --iodepth=128 --size=10240M --readwrite=read --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result:

Random read IOPS

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=4k --iodepth=128 --size=10240M --readwrite=randread --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result:

Sequential write IOPS

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=4k --iodepth=128 --size=10240M --readwrite=write --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result:

Random write IOPS

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=4k --iodepth=128 --size=10240M --readwrite=randwrite --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result:

Sequential read bandwidth

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=1M --iodepth=128 --size=10240M --readwrite=read --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result:

Random read bandwidth

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=1M --iodepth=128 --size=10240M --readwrite=randread --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result:

Sequential write bandwidth

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=1M --iodepth=128 --size=10240M --readwrite=write --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result:

Random write bandwidth

  • fio command:

    fio --randrepeat=1 --ioengine=libaio --name=test -output=output.log --direct=1 --filename=/mnt/sfs-turbo/test_fio --bs=1M --iodepth=128 --size=10240M --readwrite=randwrite --fallocate=none

    /mnt/sfs-turbo/test_fio indicates the location of the file to be tested. The location must be specific to the file name, which is the test_fio file in the /mnt/sfs-turbo directory in this example. Set it based on the site requirements.

  • fio result: