Use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem on Linux

Applies to: SQL Server 2022 on Linux, SQL Server 2019 on Linux

Introduction

This article describes the SQLIOSim tool. You can use this tool to perform reliability and integrity tests on disk subsystems for SQL Server on Linux and container platforms. These tests simulate read, write, checkpoint, backup, sort, and read-ahead activities for SQL Server on Linux.

The SQLIOSim tool was first written for and released on the Windows platform. SQLIOSim has a dependency on the SQLPAL platform, which enables the execution of the Windows SQLIOSim utility on Linux.

Supported platforms

Platform File system Installation guide
Red Hat Enterprise Linux 7.9, or 8.x Server XFS or EXT4 Red Hat installation guide
SUSE Enterprise Linux Server v12 (SP4 - SP5), or v15 (SP1 - SP4) XFS or EXT4 SUSE Linux Enterprise Server installation guide
Ubuntu 18.04 LTS, 20.04 LTS XFS or EXT4 Ubuntu installation guide
Docker Engine 1.8+ on Windows, macOS, or Linux N/A Run SQL Server container images with Docker guide

SQLIOSim on Linux installation instructions

To install SQLIOSim, follow the steps relevant to the Linux distribution the host machine is running.

  1. Use the following commands to add the repository:

    • For RHEL 7:

      • SQL Server 2019:

        sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/7/mssql-server-2019.repo
        
    • For RHEL 8:

      • SQL Server 2019:

        sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2019.repo
        
      • SQL Server 2022:

        sudo curl -o /etc/yum.repos.d/mssql-server.repo https://packages.microsoft.com/config/rhel/8/mssql-server-2022.repo
        
  2. After you've added the repository, run the installation with the following commands:

    1. Switch to the root user:

      sudo su
      
    2. Set the environment variable ACCEPT_EULA to y, to accept the End-User License Agreement:

      export ACCEPT_SQLIOSIM_EULA=y
      
    3. Install SQLIOSim:

      yum install mssql-server-sqliosim
      

Run SQLIOSim as a non-root user across all distributions

Non-root users can't install SQLIOSim but can run it. To run SQLIOSim as a non-root user, add the non-root user to the "sqliosim" group. In this example, replace <account_to_add> with the account you wish to add.

sudo usermod -a -G sqliosim <account_to_add>

Sign out and sign back in with the same user credentials to ensure that group permissions take effect.

Now, you're ready to run SQLIOSim:

/opt/mssql-sqliosim/bin/sqliosim -cfg /tmp/sqliosim.default.cfg.ini -dir /tmp -log /tmp/sqliosim_log.xml

SQLIOSim configuration file

Sample configuration files for various tests can be downloaded from SQL Server support team's GitHub repository.

wget https://raw.githubusercontent.com/microsoft/mssql-support/master/sqliosim/sqliosim.cfg.linux/sqliosim.default.cfg.ini -P /tmp
wget https://raw.githubusercontent.com/microsoft/mssql-support/master/sqliosim/sqliosim.cfg.linux/sqliosim.hwcache.cfg.ini -P /tmp
wget https://raw.githubusercontent.com/microsoft/mssql-support/master/sqliosim/sqliosim.cfg.linux/sqliosim.nothrottle.cfg.ini -P /tmp
wget https://raw.githubusercontent.com/microsoft/mssql-support/master/sqliosim/sqliosim.cfg.linux/sqliosim.seqwrites.cfg.ini -P /tmp
wget https://raw.githubusercontent.com/microsoft/mssql-support/master/sqliosim/sqliosim.cfg.linux/sqliosim.sparse.cfg.ini -P /tmp

Note

/tmp is an example path. Change it to your own path.

Sample command to run SQLIOSim with the default.ini file

/opt/mssql-sqliosim/bin/sqliosim -cfg /tmp/sqliosim.default.cfg.ini -dir /tmp -log /tmp/sqliosim_log.xml

For more information about various configuration parameters for configuration files and how to run SQLIOSim, see Use the SQLIOSim utility to simulate SQL Server activity on a disk subsystem. The article applies to SQLIOSim for Linux ecosystems as well.