Este tópico descreve como usar a ferramenta fio para testar o desempenho de um sistema de arquivos Cloud Parallel File Storage (CPFS), incluindo throughput e operações de entrada/saída por segundo (IOPS).
Pré-requisitos
Um sistema de arquivos CPFS de teste criado e montado em uma instância do Elastic Compute Service (ECS).
A instância ECS de teste possui núcleos de CPU e largura de banda interna suficientes. O número de núcleos de CPU deve ser maior ou igual a 8.
Informações de fundo
Os resultados dos testes de desempenho variam conforme as ferramentas utilizadas e podem não refletir o desempenho real. Recomendamos o uso do fio para testar o desempenho de um sistema de arquivos CPFS. Os resultados apresentados neste tópico foram obtidos em um teste executado em uma instância ECS Linux com o fio. Esses valores servem como referência de desempenho para sistemas de arquivos CPFS.
Procedimento
Conecte-se à instância ECS. Para mais informações, consulte Visão geral dos métodos de conexão.
-
Instale a ferramenta fio. Se ela já estiver instalada, pule esta etapa e execute os comandos de teste de desempenho.
Sistema operacional
Comando de instalação
CentOS
sudo yum install fioRed Hat Enterprise Linux (RHEL)
Alibaba Cloud Linux
Ubuntu
Execute os seguintes comandos em sequência:
sudo apt-get updatesudo apt-get install fio
Debian
-
Execute os comandos de teste de desempenho.
-
Comando para testar IOPS de escrita aleatória:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randwrite -bs=4k -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Write_Testing -
Comando para testar IOPS de leitura aleatória:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randread -bs=4k -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Read_Testing -
Comando para testar throughput de escrita sequencial:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=write -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Seq_Write_Testing -
Comando para testar throughput de leitura sequencial:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=read -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Seq_Read_Testing -
Comando para testar throughput de escrita aleatória:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randwrite -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Write_Testing -
Comando para testar throughput de leitura aleatória:
fio -direct=1 -ioengine=libaio -iodepth=1 -rw=randread -bs=1m -size=1G -numjobs=256 -runtime=600 -time_based=1 -group_reporting -directory="/mnt/cpfs/test" -name=Rand_Read_Testing
-
Descrição dos parâmetros do fio
A tabela a seguir descreve os parâmetros dos comandos fio anteriores.
Parâmetro | Descrição |
direct | Define se o I/O direto será utilizado. Valor padrão: 1. Valores válidos:
|
iodepth | Profundidade da fila de I/O durante o teste. Por exemplo, |
rw | Política de leitura/escrita aplicada durante o teste. Valores válidos:
|
ioengine | Motor de I/O que o fio utiliza para o teste. Na maioria dos casos, usa-se libaio. Para informações sobre outros motores de I/O disponíveis, consulte a documentação do fio. |
bs | Tamanho do bloco das unidades de I/O. Valor padrão: 4k, que representa 4 KiB. É possível especificar valores distintos para leitura e escrita no formato <Valor para leituras>,<valor para escritas>. Se nenhum valor for definido, o padrão será aplicado. |
size | Tamanho dos arquivos de teste. O fio encerra o teste somente após ler ou gravar o tamanho especificado dos arquivos, a menos que fatores específicos, como o tempo de execução, o limitem. Se este parâmetro não for definido, o fio utilizará o tamanho total de todos os arquivos ou dispositivos fornecidos. Os valores válidos também podem ser uma porcentagem entre 1% e 100%. Por exemplo, se o parâmetro size for definido como 20%, o fio usará 20% do tamanho total dos arquivos ou dispositivos fornecidos. |
numjobs | Número de threads simultâneas utilizadas durante o teste. Neste exemplo, o valor é 256. |
runtime | Duração do teste, indicando o período de tempo em que o fio permanece em execução. Se este parâmetro não for especificado, o teste só terminará quando os arquivos com o tamanho definido pelo parâmetro size forem lidos ou gravados no tamanho de bloco definido pelo parâmetro bs. |
group_reporting | Modo de exibição dos resultados do teste. Quando este parâmetro é especificado, são exibidas estatísticas por processo em vez de estatísticas por tarefa. |
directory | Caminho de montagem do sistema de arquivos a ser testado. Neste exemplo, o valor é |
name | Nome do teste. Defina este parâmetro conforme sua necessidade. Por exemplo, Rand_Write_Testing. |
Para mais informações sobre os parâmetros, consulte fio(1) - Linux man page.