Este tópico descreve o desempenho do ossfs 2.0 em diferentes cenários, incluindo velocidades de leitura e gravação de arquivos e performance em situações concorrentes. Essas informações fornecem referências precisas para ajudar você a selecione e utilizar melhor o ossfs 2.0 em suas operações comerciais.
Ambiente de teste
-
Ambiente de hardware
Tipo de instância: ecs.g9i.48xlarge
vCPU: 192 vCPUs
Memória: 768 GiB
Largura de banda de rede: 64 Gbps
-
Ambiente de software
Sistema operacional: Alibaba Cloud Linux 3.2104 LTS 64 bits
Versão do kernel: 5.10.134-18.al8.x86_64
Versões das ferramentas: ossfs 2.0.4, ossfs 1.91.8 e goofys 0.24.0
Configuração de montagem
Considere que o caminho de montagem do volume OSS no contêiner seja /mnt/oss.
-
ossfs 2.0
Neste teste, adicione o parâmetro
otherOptspara definir o tamanho do upload multipart como 33554432 bytes.upload_buffer_size=33554432 -
ossfs 1.0
Para este teste, inclua o parâmetro
otherOptsa fim de ative o modo de leitura direta e a otimização de cache.-o direct_read -o readdir_optimize
Cenários de teste
Cada ferramenta montou o mesmo bucket e, em seguida, o FIO mediu o desempenho de leitura e gravação. Os resultados seguem abaixo.
Gravação sequencial single-thread (100 GB)
O desempenho de gravação do ossfs 1.0 é limitado pela E/S do disco.
-
Comando de teste
Gravação direta single-thread de 100 GB com tamanho de bloco de 1 MB:
fio --name=file-100G --ioengine=libaio --rw=write --bs=1M --size=100G --numjobs=1 --direct=1 --directory=/mnt/oss/fio_direct_write --group_reporting -
Resultados do teste
Ferramenta
Largura de banda
Utilização de núcleo de CPU (100% para um único núcleo totalmente carregado)
Pico de memória
ossfs 2.0
2,2 GB/s
207%
2167 MB
ossfs 1.0
118 MB/s
5%
15 MB
goofys
450 MB/s
250%
7,5 GB
Leitura sequencial single-thread (100 GB)
-
Comando de teste
Limpe o cache de páginas e execute uma leitura sequencial single-thread com blocos de 1 MB:
echo 1 > /proc/sys/vm/drop_caches fio --name=file-100G --ioengine=libaio --direct=1 --rw=read --bs=1M --directory=/mnt/oss/fio_direct_write --group_reporting --numjobs=1 -
Resultados do teste
Ferramenta de teste
Largura de banda
Utilização de núcleo de CPU (100% para um único núcleo totalmente carregado)
Pico de memória
ossfs 2.0
4,3 GB/s
610%
1629 MB
ossfs 1.0
1,0 GB/s
530%
260 MB
goofys
1,3 GB/s
270%
976 MB
Leitura sequencial multithread (4 × 100 GB)
-
Gerar arquivos de teste
Crie quatro arquivos de teste de 100 GB em
/mnt/oss/fio:fio --name=file-100g --ioengine=libaio --direct=1 --iodepth=1 --numjobs=4 --nrfiles=1 --rw=write --bs=1M --size=100G --group_reporting --thread --directory=/mnt/oss/fio -
Comando de teste
Limpe o cache de páginas e leia quatro arquivos de 100 GB com 4 threads durante 30 segundos (blocos de 1 MB) em
/mnt/oss/fio:echo 1 > /proc/sys/vm/drop_caches fio --name=file-100g --ioengine=libaio --direct=1 --iodepth=1 --numjobs=4 --nrfiles=1 --rw=read --bs=1M --size=100G --group_reporting --thread --directory=/mnt/oss/fio --time_based --runtime=30 -
Resultados do teste
Ferramenta
Largura de banda
Utilização de núcleo de CPU (100% para um único núcleo totalmente carregado)
Pico de memória
ossfs 2.0
7,4 GB/s
890%
6,2 GB
ossfs 1.0
1,8 GB/s
739%
735 MB
goofys
2,8 GB/s
7800%
2,7 GB
Leitura concorrente de arquivos pequenos (128 threads, 100K × 128 KB)
O OSS possui um limite padrão de 10.000 QPS. Para reproduzir esses resultados, garanta que nenhum outro serviço consuma a cota de QPS da conta de teste.
-
Etapas
-
Crie um programa Go chamado
rw-bench.go.O programa cria ou lê arquivos simultaneamente em um diretório de destino e relata o throughput.
-
Compile o arquivo de programa
rw-bench.go.go build rw-bench.go -
Crie 100.000 arquivos (128 KB cada) no diretório montado:
mkdir -p <path_to_mounted_test_directory> && ./rw-bench --dir <path_to_mounted_test_directory> --file-size-KB 128 --file-count 100000 --write -
Limpe o cache de páginas e execute o teste cinco vezes. Registre os resultados de estado estacionário após a latência estabilizar.
echo 1 > /proc/sys/vm/drop_caches ./rw-bench --dir <path_to_mounted_test_directory> --threads 128
-
-
Resultados do teste
Ferramenta
Largura de banda
Utilização de núcleo de CPU (100% para um único núcleo totalmente carregado)
Pico de memória
ossfs 2.0
1 GB/s
247%
176 MB
ossfs 1.0
45 MB/s
25%
412 MB
goofys
1 GB/s
750%
1,3 GB