Cette rubrique présente les performances d'ossfs 2,0 dans divers scénarios, notamment le débit en lecture/écriture et les charges de travail concurrentes. Elle fournit des données de référence pour vous aider à évaluer et à adopter ossfs 2,0.
Environnement de test
-
Environnement matériel
Type d'instance : ecs.g9i.48xlarge
vCPU : 192
Mémoire : 768 GiB
Bande passante réseau : 64 Gbit/s
-
Environnement logiciel
Système d'exploitation : Alibaba Cloud Linux 3.2104 LTS 64 bits
Version du noyau : 5.10.134-18.al8.x86_64
Versions des outils : ossfs 2.0.4, ossfs 1.91.8 et goofys 0.24.0
Configuration du montage
Pour tous les tests, le volume OSS est monté sur /mnt/oss dans le conteneur.
-
ossfs 2,0
Ajoutez le paramètre
otherOptspour définir la taille des téléchargements multiparties à 33 554 432 octets.upload_buffer_size=33554432 -
ossfs 1,0
Ajoutez le paramètre
otherOptspour activer le mode de lecture directe et l'optimisation du cache.-o direct_read -o readdir_optimize
Scénarios de test
Chaque outil monte le même bucket, puis FIO mesure les performances en lecture et en écriture. Voici les résultats.
Écriture séquentielle monothread (100 Go)
Les performances en écriture d'ossfs 1,0 sont limitées par les E/S disque.
-
Commande de test
Écriture directe monothread de 100 Go avec une taille de bloc de 1 Mo :
fio --name=file-100G --ioengine=libaio --rw=write --bs=1M --size=100G --numjobs=1 --direct=1 --directory=/mnt/oss/fio_direct_write --group_reporting -
Résultats du test
Outil
Débit
Utilisation CPU (100 % pour un cœur entièrement chargé)
Mémoire maximale
ossfs 2,0
2,2 Go/s
207 %
2 167 Mo
ossfs 1,0
118 Mo/s
5 %
15 Mo
goofys
450 Mo/s
250 %
7,5 Go
Lecture séquentielle monothread (100 Go)
-
Commande de test
Videz le cache de pages, puis exécutez une lecture séquentielle monothread avec des blocs de 1 Mo :
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 -
Résultats du test
Outil de test
Débit
Utilisation CPU (100 % pour un cœur entièrement chargé)
Mémoire maximale
ossfs 2,0
4,3 Go/s
610 %
1 629 Mo
ossfs 1,0
1,0 Go/s
530 %
260 Mo
goofys
1,3 Go/s
270 %
976 Mo
Lecture séquentielle multithread (4 × 100 Go)
-
Génération des fichiers de test
Créez quatre fichiers de test de 100 Go dans
/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 -
Commande de test
Videz le cache de pages, puis lisez quatre fichiers de 100 Go avec 4 threads pendant 30 secondes (blocs de 1 Mo) dans
/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 -
Résultats du test
Outil
Débit
Utilisation CPU (100 % pour un cœur entièrement chargé)
Mémoire maximale
ossfs 2,0
7,4 Go/s
890 %
6,2 Go
ossfs 1,0
1,8 Go/s
739 %
735 Mo
goofys
2,8 Go/s
7 800 %
2,7 Go
Lecture concurrente de petits fichiers (128 threads, 100 000 × 128 Ko)
OSS impose par défaut une limite de 10 000 QPS. Pour reproduire ces résultats, assurez-vous qu'aucun autre service ne consomme le quota QPS du compte de test.
-
Étapes
-
Créez un programme Go nommé
rw-bench.go.Ce programme crée ou lit des fichiers de manière concurrente dans un répertoire cible et rapporte le débit.
-
Compilez le fichier de programme
rw-bench.go.go build rw-bench.go -
Créez 100 000 fichiers (128 Ko chacun) dans le répertoire monté :
mkdir -p <path_to_mounted_test_directory> && ./rw-bench --dir <path_to_mounted_test_directory> --file-size-KB 128 --file-count 100000 --write -
Videz le cache de pages et exécutez le test cinq fois. Enregistrez les résultats en régime permanent une fois la latence stabilisée.
echo 1 > /proc/sys/vm/drop_caches ./rw-bench --dir <path_to_mounted_test_directory> --threads 128
-
-
Résultats du test
Outil
Débit
Utilisation CPU (100 % pour un cœur entièrement chargé)
Mémoire maximale
ossfs 2,0
1 Go/s
247 %
176 Mo
ossfs 1,0
45 Mo/s
25 %
412 Mo
goofys
1 Go/s
750 %
1,3 Go