Tester les performances de l'instance

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.

  1. 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
    
  2. 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
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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}