Este tema describe el rendimiento de ossfs 2.0 en escenarios como throughput de lectura/escritura y cargas de trabajo concurrentes. Se proporcionan datos de referencia para ayudarle a evaluar y adoptar ossfs 2.0 en sus cargas de trabajo.
Entorno de prueba
-
Entorno de hardware
Tipo de instancia: ecs.g9i.48xlarge
vCPU: 192 vCPU
Memoria: 768 GiB
Ancho de banda de red: 64 Gbps
-
Entorno de software
Sistema operativo: Alibaba Cloud Linux 3.2104 LTS 64-bit
Versión del kernel: 5.10.134-18.al8.x86_64
Versiones de herramientas: ossfs 2.0.4, ossfs 1.91.8 y goofys 0.24.0
Configuración de montaje
Todas las pruebas asumen que el volumen de OSS se monta en /mnt/oss dentro del contenedor.
-
ossfs 2.0
Agregue el parámetro
otherOptspara establecer el tamaño de carga multiparte en 33554432 bytes.upload_buffer_size=33554432 -
ossfs 1.0
Agregue el parámetro
otherOptspara habilitar el modo de lectura directa y la optimización de caché.-o direct_read -o readdir_optimize
Escenarios de prueba
Cada herramienta montó el mismo bucket y posteriormente se midió el rendimiento de lectura/escritura con FIO. A continuación se presentan los resultados.
Escritura secuencial de un solo hilo (100 GB)
El rendimiento de escritura de ossfs 1.0 está limitado por la E/S del disco.
-
Comando de prueba
Escritura directa de un solo hilo de 100 GB con un tamaño de bloque 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 de la prueba
Herramienta
Ancho de banda
Utilización de núcleos de CPU (100% para un solo núcleo totalmente cargado)
Memoria máxima
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
Lectura secuencial de un solo hilo (100 GB)
-
Comando de prueba
Borre la caché de páginas y ejecute una lectura secuencial de un solo hilo con bloques 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 de la prueba
Herramienta de prueba
Ancho de banda
Utilización de núcleos de CPU (100% para un solo núcleo totalmente cargado)
Memoria máxima
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
Lectura secuencial multihilo (4 × 100 GB)
-
Generar archivos de prueba
Cree cuatro archivos de prueba de 100 GB en
/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 prueba
Borre la caché de páginas y lea cuatro archivos de 100 GB con 4 hilos durante 30 segundos (bloques de 1 MB) en
/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 de la prueba
Herramienta
Ancho de banda
Utilización de núcleos de CPU (100% para un solo núcleo totalmente cargado)
Memoria máxima
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
Lectura concurrente de archivos pequeños (128 hilos, 100K × 128 KB)
OSS tiene una 10,000 QPS limit predeterminada. Para reproducir estos resultados, asegúrese de que ningún otro servicio consuma la cuota de QPS de la cuenta de prueba.
-
Pasos
-
Cree un programa en Go llamado
rw-bench.go.El programa crea o lee archivos de forma concurrente en un directorio destino y reporta el throughput.
-
Compile el archivo del programa
rw-bench.go.go build rw-bench.go -
Cree 100,000 archivos (de 128 KB cada uno) en el directorio montado:
mkdir -p <path_to_mounted_test_directory> && ./rw-bench --dir <path_to_mounted_test_directory> --file-size-KB 128 --file-count 100000 --write -
Borre la caché de páginas y ejecute la prueba cinco veces. Registre los resultados en estado estable una vez que la latencia se estabilice.
echo 1 > /proc/sys/vm/drop_caches ./rw-bench --dir <path_to_mounted_test_directory> --threads 128
-
-
Resultados de la prueba
Herramienta
Ancho de banda
Utilización de núcleos de CPU (100% para un solo núcleo totalmente cargado)
Memoria máxima
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