Amostras de Comandos FIO para Testes de Desempenho do Serviço Block Volume nas Instâncias Baseadas em Linux

Este tópico descreve comandos FIO de amostra que você pode usar para fazer testes de desempenho do serviço Oracle Cloud Infrastructure Block Volume em instâncias criadas com o uso de imagens baseadas em Linux.

Instalando o FIO

Para instalar e configurar o FIO em suas instâncias com sistemas operacionais baseados em Linux, execute os comandos aplicáveis à versão do sistema operacional da sua instância.

Oracle Linux e CentOS

Execute o seguinte comando para instalar e configurar o FIO para os seus sistemas Oracle Linux ou CentOS.

  • Oracle Autonomous Linux 8.x, Oracle Linux 8.x e Oracle Linux Cloud Developer 8:
    sudo dnf install fio -y
  • Oracle Autonomous Linux 7.x, Oracle Linux 6.x, Oracle Linux 7.x, CentOS 7 e CentOS Stream 8:
    sudo yum install fio -y
Ubuntu

Execute os seguintes comandos para instalar e configurar o FIO para seus sistemas Ubuntu:

sudo apt-get update && sudo apt-get install fio -y

Isso se aplica ao Ubuntu 20.04, Ubuntu 18.04 e Ubuntu Mínimo 18.04.

Comandos FIO

Testes de Desempenho de IOPS

Use os seguintes comandos FIO de exemplo para testar o desempenho de IOPS. Você pode executar os comandos diretamente ou criar um arquivo de job com o comando e depois executar o arquivo.

Testar leituras aleatórias

Execute o seguinte comando diretamente para testar leituras aleatórias:

sudo fio --filename=device name --direct=1 --rw=randread --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --readonly

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as etapas a seguir para essa abordagem.

  1. Crie um arquivo de job, fiorandomread.fio, com o seguinte:

    [global]
    bs=4K
    iodepth=256
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=4
    name=raw-randread
    rw=randread
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio randomread.fio
Testar leitura/gravações aleatórias do arquivo

Execute o seguinte comando no ponto de montagem para testar leitura/gravação do arquivo:

sudo fio --filename=/custom mount point/file --size=500GB --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1

Adicione o IOPS de leitura e o IOPS de gravação retornados.

Testar leitura/gravações aleatórias
Cuidado

Não faça testes de FIO com uma carga de trabalho de gravação (readwrite, randrw, write, trimwrite) diretamente em um dispositivo que está em uso.

Execute o seguinte comando para testar leitura/gravações aleatórias:

sudo fio --filename=device name --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1

Adicione o IOPS de leitura e o IOPS de gravação retornados.

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as etapas a seguir para essa abordagem.

  1. Crie um arquivo de job, fiorandomreadwrite.fio, com o seguinte:

    [global]
    bs=4K
    iodepth=256
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=4
    name=raw-randreadwrite
    rw=randrw
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio randomreadwrite.fio
Testar leituras sequenciais

Para cargas de trabalho que permitem utilizar padrões de acessos sequenciais, como cargas de trabalho de banco de dados, você pode confirmar o desempenho desse padrão testando leituras sequenciais.

Execute o seguinte comando para testar leituras sequenciais:

sudo fio --filename=device name --direct=1 --rw=read --bs=4k --ioengine=libaio --iodepth=256 --runtime=120 --numjobs=4 --time_based --group_reporting --name=iops-test-job --eta-newline=1 --readonly

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as seguintes instruções para essa abordagem:

  1. Crie um arquivo de job, fioread.fio, com o seguinte:

    [global]
    bs=4K
    iodepth=256
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=4
    name=raw-read
    rw=read
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio read.fio

Testes de Desempenho de Throughput

Use os seguintes comandos FIO de exemplo para testar o desempenho de throughput.

Testar leituras aleatórias

Execute o seguinte comando para testar leituras aleatórias:

sudo fio --filename=device name --direct=1 --rw=randread --bs=256k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1 --readonly

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as etapas a seguir para essa abordagem.

  1. Crie um arquivo de job, fiorandomread.fio, com o seguinte:

    [global]
    bs=256K
    iodepth=64
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=4
    name=raw-randread
    rw=randread
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio randomread.fio
Testar leitura/gravações aleatórias do arquivo

Execute o seguinte comando no ponto de montagem para testar leitura/gravação do arquivo:

sudo fio --filename=/custom mount point/file --size=500GB --direct=1 --rw=randrw --bs=64k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1 

Adicione os MBPs de leitura e de gravação retornados.

Testar leitura/gravações aleatórias
Cuidado

Não faça testes de FIO com uma carga de trabalho de gravação (readwrite, randrw, write, trimwrite) diretamente em um dispositivo que está em uso.

Execute o seguinte comando para testar leitura/gravações aleatórias:

sudo fio --filename=device name --direct=1 --rw=randrw --bs=256k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1

Adicione os MBPs de leitura e de gravação retornados.

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as etapas a seguir para essa abordagem.

  1. Crie um arquivo de job, fiorandomread.fio, com o seguinte:

    [global]
    bs=256K
    iodepth=64
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=4
    name=raw-randreadwrite
    rw=randrw
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio randomreadwrite.fio
Testar leituras sequenciais

Para cargas de trabalho que permitem utilizar padrões de acessos sequenciais, como cargas de trabalho de banco de dados, você pode confirmar o desempenho desse padrão testando leituras sequenciais.

Execute o seguinte comando para testar leituras sequenciais:

sudo fio --filename=device name --direct=1 --rw=read --bs=256k --ioengine=libaio --iodepth=64 --runtime=120 --numjobs=4 --time_based --group_reporting --name=throughput-test-job --eta-newline=1 --readonly

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as etapas a seguir para essa abordagem.

  1. Crie um arquivo de job, fioread.fio, com o seguinte:

    [global]
    bs=256K
    iodepth=64
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=4
    name=raw-read
    rw=read
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio read.fio

Testes de Desempenho de Latência

Use os seguintes comandos FIO de exemplo para testar o desempenho de latência. Você pode executar os comandos diretamente ou criar um arquivo de job com o comando e depois executar o arquivo.

Testar leituras aleatórias de latência

Execute o seguinte comando diretamente para testar leituras aleatórias de latência:

sudo fio --filename=device name --direct=1 --rw=randread --bs=4k --ioengine=libaio --iodepth=1 --numjobs=1 --time_based --group_reporting --name=readlatency-test-job --runtime=120 --eta-newline=1 --readonly

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as etapas a seguir para essa abordagem.

  1. Crie um arquivo de job, fiorandomreadlatency.fio, com o seguinte:

    [global]
    bs=4K
    iodepth=1
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=1
    name=readlatency-test-job
    rw=randread
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio fiorandomreadlatency.fio
Testar leitura/gravações aleatórias de latência
Cuidado

Não faça testes de FIO com uma carga de trabalho de gravação (readwrite, randrw, write, trimwrite) diretamente em um dispositivo que está em uso.

Execute o seguinte comando diretamente para testar leitura/gravações aleatórias de latência:

sudo fio --filename=device name --direct=1 --rw=randrw --bs=4k --ioengine=libaio --iodepth=1 --numjobs=1 --time_based --group_reporting --name=rwlatency-test-job --runtime=120 --eta-newline=1

Em alguns casos, você poderá ver resultados mais consistentes se usar um arquivo de job em vez de executar o comando diretamente. Use as etapas a seguir para essa abordagem.

  1. Crie um arquivo de job, fiorandomrwlatency.fio, com o seguinte:

    [global]
    bs=4K
    iodepth=1
    direct=1
    ioengine=libaio
    group_reporting
    time_based
    runtime=120
    numjobs=1
    name=rwlatency-test-job
    rw=randrw
    							
    [job1]
    filename=device name
  2. Execute o job usando o seguinte comando:
    fio fioradomrwlatency.fio