Linux System Performance Testing Methods

CFS

  • Updates and Announcements
    • Function Release Records
    • Product Announcement
      • Announcement on CFS Metric Adjustments
  • Product Description
    • Product Introduction
    • Basic concepts
    • Product features
    • Product specifications
    • Usage Limits and Recommendations
    • Selection Guide
      • How to Choose Between CFS and PFS
      • How to Choose Between CFS, BOS and CDS
    • Application scenarios
  • Product pricing
    • Pay-as-you-go
    • Storage package billing
    • Insufficient balance reminders and debt handling
    • Billing Cases
  • Quick Start
    • Getting Started Overview
    • Quick start (Linux)
    • Quick start (Windows)
  • Operation guide
    • Activate Service
    • Manage File System
      • Create file system
      • Delete a file system
      • View file system details
      • Set File System Capacity Upper Limit
    • Mount and Access
      • Add mount target
      • Mount and Unmount CFS on BCC
        • Mount and Unmount on Linux System
          • Mount and Unmount SMB Protocol CFS on Single BCC
          • Batch mounting and unmounting NFS CFS on multiple BCC
          • Mounting and unmounting NFS CFS on a single BCC
        • Mount and Unmount SMB Protocol CFS on Windows System
        • Mount CFS File System When Purchasing New BCC
      • Using CFS in CCE
    • Permission Group Management
    • Identity and access management
    • Data encryption
    • Management Tags
    • Backup
    • Monitor and Alarm
      • View monitoring
      • Alarm management
      • Metric definition
    • Cloud Audit
  • Typical Practices
    • Set Different User Permissions for Different Directories
    • Using File Systems Across Regions Or Accounts
    • Use SFTP to Upload and Download CFS File System Data
    • Use Rsync to Sync From Old File System to CFS File System
    • Best Practices for Managing CFS with Terraform
    • Performance Testing Methods
      • Linux System Performance Testing Methods
      • Windows System Performance Testing Methods
  • API Reference
    • API Function Update Records
    • API Overview
    • Interface Overview
    • General Description
    • Service domain
    • Error code
    • File System Related Interfaces
      • Create file system
      • Update file system
      • Query file system
      • Query mount client
      • Drop file system
      • Update file system tags
    • mount target Related Interfaces
      • Create mount target
      • Query mount targets
      • Delete mount target
    • Permission Group-related APIs
      • Create Permission Group
      • Update permission group
      • Query Permission Groups
      • Delete permission group
      • Create permission group rules
      • Update permission group rules
      • Query permission group rules
      • Delete permission group rule
    • Data type
  • Go-SDK
    • Overview
    • Initialization
    • File system
    • Mount target
    • Error handling
  • FAQs
    • Common Questions Overview
    • General Problems
    • Billing Problems
    • NFS protocol questions
    • SMB Protocol Issues
  • Service Level Agreement (SLA)
    • CFS Service Level Agreement (SLA)
All documents
menu
No results found, please re-enter

CFS

  • Updates and Announcements
    • Function Release Records
    • Product Announcement
      • Announcement on CFS Metric Adjustments
  • Product Description
    • Product Introduction
    • Basic concepts
    • Product features
    • Product specifications
    • Usage Limits and Recommendations
    • Selection Guide
      • How to Choose Between CFS and PFS
      • How to Choose Between CFS, BOS and CDS
    • Application scenarios
  • Product pricing
    • Pay-as-you-go
    • Storage package billing
    • Insufficient balance reminders and debt handling
    • Billing Cases
  • Quick Start
    • Getting Started Overview
    • Quick start (Linux)
    • Quick start (Windows)
  • Operation guide
    • Activate Service
    • Manage File System
      • Create file system
      • Delete a file system
      • View file system details
      • Set File System Capacity Upper Limit
    • Mount and Access
      • Add mount target
      • Mount and Unmount CFS on BCC
        • Mount and Unmount on Linux System
          • Mount and Unmount SMB Protocol CFS on Single BCC
          • Batch mounting and unmounting NFS CFS on multiple BCC
          • Mounting and unmounting NFS CFS on a single BCC
        • Mount and Unmount SMB Protocol CFS on Windows System
        • Mount CFS File System When Purchasing New BCC
      • Using CFS in CCE
    • Permission Group Management
    • Identity and access management
    • Data encryption
    • Management Tags
    • Backup
    • Monitor and Alarm
      • View monitoring
      • Alarm management
      • Metric definition
    • Cloud Audit
  • Typical Practices
    • Set Different User Permissions for Different Directories
    • Using File Systems Across Regions Or Accounts
    • Use SFTP to Upload and Download CFS File System Data
    • Use Rsync to Sync From Old File System to CFS File System
    • Best Practices for Managing CFS with Terraform
    • Performance Testing Methods
      • Linux System Performance Testing Methods
      • Windows System Performance Testing Methods
  • API Reference
    • API Function Update Records
    • API Overview
    • Interface Overview
    • General Description
    • Service domain
    • Error code
    • File System Related Interfaces
      • Create file system
      • Update file system
      • Query file system
      • Query mount client
      • Drop file system
      • Update file system tags
    • mount target Related Interfaces
      • Create mount target
      • Query mount targets
      • Delete mount target
    • Permission Group-related APIs
      • Create Permission Group
      • Update permission group
      • Query Permission Groups
      • Delete permission group
      • Create permission group rules
      • Update permission group rules
      • Query permission group rules
      • Delete permission group rule
    • Data type
  • Go-SDK
    • Overview
    • Initialization
    • File system
    • Mount target
    • Error handling
  • FAQs
    • Common Questions Overview
    • General Problems
    • Billing Problems
    • NFS protocol questions
    • SMB Protocol Issues
  • Service Level Agreement (SLA)
    • CFS Service Level Agreement (SLA)
  • Document center
  • arrow
  • CFS
  • arrow
  • Typical Practices
  • arrow
  • Performance Testing Methods
  • arrow
  • Linux System Performance Testing Methods
Table of contents on this page
  • Prerequisites
  • Background
  • Testing steps
  • Appendix - Explanation of FIO Parameters

Linux System Performance Testing Methods

Updated at:2025-11-11

This document explains how to use the FIO tool to evaluate the performance of CFS on Linux systems, focusing on data read/write metrics like IOPS, throughput, and latency, excluding metadata.

Prerequisites

  1. You should already have created the CFS file system to be tested and mounted it on a BCC instance.
  • For instructions on creating a CFS file system: Create File System.
  • For instructions on mounting/unmounting an NFS-protocol CFS file system on Linux: Mount and Unmount NFS-Protocol CFS on Linux.
  1. Aside from latency parameters, the performance specifications provided by CFS require concurrent testing at a certain scale to achieve their peak values. It is recommended to use a BCC instance with at least 32 vCPUs as a client for testing, which should suffice for most scenarios. For other specific needs, configure the BCC instance according to actual requirements.
  2. During performance testing (especially for latency), ensure that both the BCC instance (client) and CFS are in the same availability zone. Cross-availability zone tests produce significantly different results and hold no reference value, so they should be avoided whenever possible.

Background

The FIO tool is the preferred choice for testing CFS because different tools may produce varying performance results that don’t accurately reflect real performance. The performance parameters cited in this guide are based on tests conducted using the FIO tool on Linux systems and are intended as references for CFS product performance. Here’s a breakdown of the metrics:

  • IOPS: The number of data blocks read or written per second, measured in units/second. Benchmark tests for IOPS are recommended for scenarios involving small data blocks (e.g., 512 bytes, 4K, 8K, 16K).
  • Throughput: The volume of data read or written per second, measured in GiB/s or MiB/s. Benchmark tests for throughput are ideal for scenarios using large data blocks (e.g., 256K, 512K, 1M).
  • Latency: The time required to process a read/write request, measured in milliseconds (ms). Latency tests cover single-threaded and multi-threaded concurrent read/write operations, including metrics like average latency, maximum latency, and the 99.9th percentile latency (the value below which 99.9% of latency measurements fall).

Testing steps

  1. Remotely sign in to the BCC instance (client).
  2. Install the FIO testing tool.
OS Installation command
CentOS
 sudo yum install fio 
RHEL
Ubuntu
## Execute the following installation commands in sequence: 
sudo apt-get update
sudo apt-get install fio
Debian
  1. Run the following commands on a single Linux BCC instance to conduct performance testing.
Performance testing Command reference
IOPS
## Random read/write IOPS under 128 concurrency: 

fio -direct=1 -ioengine=libaio -rw=randread -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=128
fio -direct=1 -ioengine=libaio -rw=randwrite -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=128
Throughput
## Sequential read/write throughput under 8 concurrency. Throughput performance is limited by BCC bandwidth. To obtain the most accurate throughput test results, configure the --numjobs parameter appropriately based on the client’s configuration.

fio -direct=1 -ioengine=libaio -rw=read -bs=1024k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=8
fio -direct=1 -ioengine=libaio -rw=write -bs=1024k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=8
Latency
## Read-write latency under single thread: 

fio -direct=1 -ioengine=libaio -rw=randread -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=1
fio -direct=1 -ioengine=libaio -rw=randwrite -bs=4k -size=1G -runtime=60 -time_based=1 -group_reporting -directory="/mnt/test_perf" -name=Fio_Testing --numjobs=1

Note: For multi-threaded tests, configure the --numjobs parameter based on the client’s specifications for optimal results.

Appendix - Explanation of FIO Parameters

The table below outlines the purpose of each FIO parameter used in the test commands.

Parameters Description
direct Specifies whether to use direct I/O. Default value: 1.
  • Value 1: Use direct I/O (ignores I/O cache and writes data directly).
  • Value 0: Do not use direct I/O.
  • ioengine Specifies the I/O engine used by FIO for testing. libaio is usually selected, as it better matches common application patterns. For more options, refer to the FIO Official Documentation.
    rw Specifies the read/write strategy for testing. Optional values include:
  • randwrite: Random write.
  • randread: Random read.
  • read: Sequential read.
  • write: Sequential write.
  • randrw: Mixed random read and write operations.
  • bs Defines the block size for I/O operations. Default value: 4 KiB. You can specify separate read and write values in the format read,write; you may leave one field blank to use the default value for that operation.
    size Specifies the size of the test file.
    FIO will stop testing only after reading/writing the entire specified file size, unless restricted by other options (e.g., runtime). If this parameter is not specified, FIO will use the full size of the given file or device. Size can also be specified as a percentage (1-100%). For example, size=20% means FIO will use 20% of the full size of the given file or device.
    runtime Specifies the test duration (i.e., how long FIO runs).
    If this parameter is not specified, FIO will continue reading/writing the file of the size specified by size (using bs as the block size) until completion.
    time_based If a runtime duration is defined, FIO will continue to operate for the specified time, even if the file has been fully read or written. It will repeat the workload as necessary within the given runtime.
    group_reporting Sets the display mode for test results. When enabled, the results will display aggregated statistics for each process rather than breaking them down by individual tasks.
    directory Defines the mount path of the file system to be tested, such as /mnt/test_perf (replace this example with the actual path in use).
    name Designates the name of the test task, which can be assigned arbitrarily.
    numjobs Specifies the number of concurrent threads to be used in testing.

    For more detailed explanations of each parameter, see the FIO Official Documentation.

    Previous
    Best Practices for Managing CFS with Terraform
    Next
    Windows System Performance Testing Methods