Tester les performances de l'instance

Cette page traite des tests de performances pour les instances Filestore.

Présentation

Si vous utilisez Linux, l'outil Flexible IO Tester (fio) permet d'évaluer le débit en lecture, le débit en écriture, les IOPS en lecture et les IOPS en écriture pour les instances de niveau de base, régionales, zonales 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 les instances régionales, zonales ou Enterprise, car les niveaux de service avec scale-out sont optimisés pour les performances de plusieurs VM clientes. Une seule VM cliente ne peut généralement pas atteindre le nombre maximal d'IOPS ni le débit du cluster.

Pour en savoir plus, consultez Performances d'une ou plusieurs VM clientes.

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 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 certains niveaux de service, 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 les instances de base. Vous pouvez exécuter les commandes directement depuis la ligne de commande.

  • Débit maximal en écriture pour les instances de base de moins de 1 Tio :

    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 maximal 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=read --blocksize=1m --iodepth=64 --readwrite=read
    
  • Débit maximal 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=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 clientes par TiB pour les instances de 1 à 9,75 TiB. Pour les instances de 10 à 100 Tio, utilisez huit VM clientes par tranche de 10 Tio.

  1. Démarrez le serveur fio sur toutes les VM clientes. Fio utilise le port 8765 pour communiquer. Ce port doit donc être ouvert dans votre règle de pare-feu.

    fio --server
    
  2. Sélectionnez une VM cliente qui orchestrera l'exécution de fio. Créez un fichier de job 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 de la VM cliente pour laquelle vous avez créé le fichier de job :

    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 job :

    • Débit max. en lecture
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-throughput /tmp/fio_job.conf
    
    • Débit max. en écriture
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=write-throughput /tmp/fio_job.conf
    
    • Nb. max. d'IOPS en lecture
    export CREATE_ONLY=0
    fio --client=/tmp/hosts.list --section=read-iops /tmp/fio_job.conf
    
    • Nb. max. 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}