Cette page présente les tests de performances pour les instances Filestore.
Présentation
Si vous utilisez Linux, vous pouvez utiliser l'outil Flexible IO Tester (fio) pour évaluer le débit en lecture et en écriture, ainsi que les IOPS en lecture et en écriture, pour les instances de niveau de base, régional, zonal et Enterprise.
Vous pouvez tester les performances des instances de base à l'aide d'une seule VM cliente. Nous vous déconseillons d'utiliser une seule VM cliente pour tester des instances régionales, zonales ou d'entreprise, car les niveaux de service d'échelle sont optimisés pour plusieurs VM clientes. Un seul client ne peut généralement pas atteindre le débit ou les IOPS maximaux du cluster.
Pour en savoir plus, consultez Performances des VM client uniques et multiples.
Avant de commencer
Installez le partage de fichiers Filestore que vous souhaitez tester sur toutes les VM clientes. Il peut s'agir d'une ou de plusieurs VM clientes, selon le niveau de service. Pour obtenir des instructions détaillées et des options d'installation, consultez la section Installer des partages de fichiers sur des clients Compute Engine.
Veillez à spécifier l'option d'installation nconnect
pour améliorer les performances NFS. Pour des niveaux de service spécifiques, nous vous recommandons de spécifier le nombre de connexions suivant entre le client et le serveur:
Niveau | Capacité | Nombre de connexions |
---|---|---|
Régional, zonal | 1 à 9,75 Tio | nconnect=2 |
Régional, zonal | 10 à 100 Tio | nconnect=7 |
Entreprise | - | nconnect=2 |
SSD à grande échelle | - | nconnect=7 |
Vous pouvez optimiser le débit de lecture NFS en ajustant la valeur du paramètre read_ahead_kb
. Pour en savoir plus, consultez Optimiser le débit de lecture NFS avec le paramètre read_ahead_kb
.
Tester les performances avec une seule VM cliente
Utilisez les scénarios suivants pour effectuer des tests sur des instances de base. Vous pouvez exécuter les commandes directement depuis votre ligne de commande.
Débit d'écriture maximal pour les instances de base de moins de 1 To:
fio --ioengine=libaio --filesize=4G --ramp_time=2s --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 --group_reporting --directory=/mnt/nfs --name=write --blocksize=1m --iodepth=64 --readwrite=write
Débit en lecture maximal:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=read --blocksize=1m --iodepth=64 --readwrite=read
Débit en écriture maximal:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=write --blocksize=1m --iodepth=64 --readwrite=write
Nombre maximal d'IOPS en lecture:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=randread --blocksize=4k --iodepth=256 --readwrite=randread
Nombre maximal d'IOPS en écriture:
fio --ioengine=libaio --filesize=32G --ramp_time=2s \ --runtime=5m --numjobs=16 --direct=1 --verify=0 --randrepeat=0 \ --group_reporting --directory=/mnt/nfs --buffer_compress_percentage=50 \ --name=randwrite --blocksize=4k --iodepth=256 --readwrite=randwrite
Tester les performances avec plusieurs VM clientes
Pour obtenir des performances maximales pour les instances zonales, régionales et Enterprise, utilisez plusieurs VM clientes.
Nous vous recommandons d'utiliser huit VM client par 1 To pour les instances de 1 à 9,75 To. Pour les instances de 10 à 100 To, utilisez huit VM clientes par 10 To.
Démarrez le serveur fio sur toutes les VM clientes. Fio utilise le port
8765
pour communiquer. Par conséquent, ce port doit être ouvert dans votre stratégie de pare-feu.fio --server
Sélectionnez une VM cliente qui orchestrera l'exécution de fio. Créez un fichier de tâche fio sur cette VM cliente:
cat << EOL > /tmp/fio_job.conf [global] ioengine=libaio ramp_time=2s runtime=3m time_based direct=1 verify=0 randrepeat=0 group_reporting buffer_compress_percentage=50 directory=\${TMP_DIR} create_only=\${CREATE_ONLY} [read-throughput] blocksize=1048576 numjobs=8 readwrite=read filesize=100M [write-throughput] blocksize=1048576 numjobs=8 readwrite=write filesize=100M [read-iops] blocksize=4k iodepth=64 readwrite=randread filesize=1GB [write-iops] blocksize=4k iodepth=64 readwrite=randwrite filesize=1GB EOL
Créez un fichier
hosts.list
contenant les adresses IP ou les noms DNS des VM clientes fio:cat << EOL > /tmp/hosts.list <Client 1 IP/DNS> <Client 2 IP/DNS> ... <Client N IP/DNS> EOL
Créez l'ensemble de données suivant dans un répertoire temporaire sur la VM cliente pour laquelle vous avez créé le fichier de tâche:
export TMP_DIR=$(mktemp -d MOUNT_POINT_DIRECTORY/XXXXX) chmod 777 ${TMP_DIR} export CREATE_ONLY=1 fio --client=/tmp/hosts.list \ --section=read-throughput --section=read-iops /tmp/fio_job.conf
Exécutez des benchmarks à l'aide de la VM cliente pour laquelle vous avez créé le fichier de tâche:
- Débit en lecture maximal
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
- Débit en écriture maximal
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
- Nombre maximal d'IOPS en lecture
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
- Nombre maximal d'IOPS en écriture
export CREATE_ONLY=0 fio --client=/tmp/hosts.list --section=write-iops /tmp/fio_job.conf
Une fois les tests terminés, arrêtez les serveurs fio sur toutes les VM clientes et supprimez leur répertoire temporaire:
rm -rf ${TMP_DIR}