Cette page fournit des conseils pour configurer votre environnement Parallelstore afin d'obtenir les meilleures performances possibles.
Recommandations générales
Supprimez tous les alias de
ls
pour améliorer les performances par défaut. Sur de nombreux systèmes, il est associé àls -color=auto
, qui est beaucoup plus lent avec la configuration par défaut de Parallelstore.Si les performances des opérations de liste sont lentes, envisagez d'activer le cache pour le montage dfuse.
Bibliothèque d'interception
La bibliothèque libioil
peut être utilisée pour améliorer les performances des opérations de lecture et d'écriture dans DFuse à partir d'applications qui utilisent libc. La bibliothèque contourne le kernel en interceptant les appels de lecture et d'écriture POSIX de l'application afin de les traiter directement dans l'espace utilisateur. Pour en savoir plus, consultez la section Bibliothèque d'interception.
Dans la plupart des cas, nous vous recommandons d'utiliser la bibliothèque d'interception par appel par processus ou par application.
Voici les cas où vous ne souhaitez pas ou n'avez pas besoin d'utiliser la bibliothèque d'interception:
- Seules les applications compilées avec libc peuvent utiliser la bibliothèque d'interception.
- Si votre charge de travail bénéficie du cache, par exemple si vous accédez aux mêmes fichiers de manière répétée, nous vous recommandons de ne pas utiliser la bibliothèque d'interception.
- Si votre charge de travail est axée sur les métadonnées (par exemple, si vous travaillez avec de nombreux petits fichiers ou une liste de répertoires très volumineuse), la bibliothèque d'interception ne va probablement pas améliorer les performances.
L'appel LD_PRELOAD
peut être défini en tant que variable d'environnement dans votre environnement de shell, mais cela peut parfois entraîner des problèmes. Nous vous recommandons plutôt de le spécifier avec chaque commande.
Vous pouvez également associer la bibliothèque d'interception à votre application au moment de la compilation avec l'indicateur -lioil
.
Mise en cache dfuse
La mise en cache est activée par défaut dans dfuse
.
dfuse
utilise deux options liées au cache lors du montage d'une instance Parallelstore:
--disable-wb-cache
utilise la mise en cache en écriture directe plutôt que la mise en cache en écriture différée.--disable-caching
désactive toute mise en cache.
Les suggestions suivantes s'appliquent à la mise en cache et aux performances:
- Si vous utilisez la bibliothèque d'interception, le cache en écriture est contourné. Nous vous recommandons de spécifier
--disable-wb-cache
lorsque vous utilisez la bibliothèque d'interception. - Si votre charge de travail implique de lire de nombreux fichiers une seule fois, vous devez désactiver la mise en cache.
- Pour les charges de travail impliquant de nombreux clients qui modifient des fichiers et dont les mises à jour doivent être immédiatement disponibles pour les autres clients, vous devez désactiver le cache.
- Si votre charge de travail lit les mêmes fichiers de manière répétée, la mise en cache peut améliorer les performances. C'est particulièrement vrai si les fichiers tiennent dans la mémoire de vos clients.
dfuse
utilise le cache de pages Linux pour sa mise en cache. Pour les charges de travail qui consistent en de petites E/S sur de grands fichiers, en plus d'activer le cache, il peut être utile d'augmenter la lecture anticipée diffuse. Pour augmenter la prélecture de dfuse, après avoir installé
dfuse
, exécutez les commandes suivantes:echo 4096 > /sys/class/bdi/\$(mountpoint -d /mnt)/read_ahead_kb echo 100 > /sys/class/bdi/\$(mountpoint -d /mnt)/max_ratio
Si vos charges de travail combinent plusieurs des scénarios précédents, vous pouvez installer la même instance Parallelstore sur plusieurs points d'installation avec différents paramètres de mise en cache.
Nombre de threads et de files d'attente d'événements
Lorsque vous installez votre instance Parallelstore, nous vous recommandons les valeurs suivantes pour --thread-count
et --eq-count
:
- La valeur du nombre de threads ne doit pas dépasser le nombre de cœurs de vCPU.
- La valeur maximale recommandée pour le nombre de threads est comprise entre 16 et 20. Au-delà de ce nombre, les performances sont peu ou pas améliorées, quel que soit le nombre de cœurs disponibles.
- La valeur de la file d'attente d'événements doit être la moitié de la valeur du nombre de threads.
Si votre charge de travail implique un très grand nombre d'opérations de petits fichiers et un accès important aux métadonnées, vous pouvez essayer d'augmenter les nombres au-delà de ces recommandations.
Paramètre de bande de fichiers
Le striping de fichiers est une technique de stockage de données qui consiste à diviser un fichier en blocs, ou bandes, et à le répartir sur plusieurs cibles de stockage. Le linéage de fichiers peut améliorer les performances en permettant des lectures et des écritures parallèles sur plusieurs cibles de stockage qui servent de support à l'instance.
Lorsque vous créez votre instance Parallelstore, vous pouvez spécifier l'un des trois paramètres de défragmentation de fichiers:
- Minimum
- Équilibré
- Maximum
Ces paramètres peuvent avoir un impact important sur les performances de Parallelstore. Pour la plupart des charges de travail, nous recommandons le paramètre équilibré, qui devrait constituer un compromis raisonnable. Si les performances avec le paramètre équilibré ne sont pas acceptables:
Le paramètre minimal peut améliorer les performances des charges de travail comportant de nombreux petits fichiers, en particulier lorsque la taille moyenne des fichiers est inférieure à 256 Ko.
Le paramètre maximal peut améliorer les performances pour les charges de travail avec des fichiers très volumineux, généralement supérieurs à 8 Go, en particulier lorsque de nombreux clients partagent l'accès aux mêmes fichiers.
Pour un réglage avancé, l'outil daos
fournit des paramètres par fichier ou par répertoire. L'expérimentation du réglage avancé comporte des risques liés aux performances et n'est généralement pas recommandée. Pour en savoir plus, consultez Comprendre la redondance des données et le fractionnement dans DAOS.
Paramètre de suppression de répertoire
Lorsque vous créez votre instance Parallelstore, vous pouvez spécifier l'un des trois paramètres de dénudage de répertoires suivants:
- Minimum
- Équilibré
- Maximum
Pour la plupart des charges de travail, nous recommandons le paramètre maximal.
Pour les charges de travail impliquant de nombreuses listes de répertoires volumineux, les paramètres équilibrés ou minimaux peuvent améliorer les performances des listes. Toutefois, les performances d'autres opérations, en particulier la création de fichiers, peuvent en souffrir.
multi-utilisateur
Lorsque vous utilisez l'outil dfuse
pour monter votre instance Parallelstore, nous vous recommandons de spécifier l'indicateur --multi-user
. Cet indicateur indique au noyau de rendre le système de fichiers disponible pour tous les utilisateurs d'un client, et non uniquement pour l'utilisateur qui exécute le processus DFuse. DFuse apparaît alors comme un système de fichiers multi-utilisateur générique, et les appels chown
et chgrp
standards sont activés. Toutes les entrées du système de fichiers appartiennent à l'utilisateur qui les a créées, comme c'est normal dans un système de fichiers POSIX.
Lorsque vous spécifiez l'option --multi-user
, vous devez également mettre à jour /etc/fuse.conf
en tant que root en ajoutant la ligne suivante:
user_allow_other
Le montage de votre instance en tant qu'instance multi-utilisateur ne semble pas avoir d'incidence sur les performances.
Paramètre de codage par effacement
Le codage par effacement est défini sur 2+1. Ce paramètre ne peut pas être modifié. Toutes les E/S qui n'utilisent pas EC2+1 sont refusées.
Allocation des ressources de conteneur sidecar Google Kubernetes Engine
Dans la plupart des cas, les performances insatisfaisantes avec Google Kubernetes Engine et Parallelstore sont dues à une allocation insuffisante de CPU ou de mémoire au conteneur sidecar Parallelstore. Pour répartir correctement les ressources, tenez compte des suggestions suivantes:
Consultez les considérations mises en avant dans la section Configurer des ressources pour le conteneur side-car. Vous découvrirez pourquoi vous devrez peut-être augmenter l'allocation de ressources et comment configurer l'allocation de ressources du conteneur de sidecar à l'aide d'annotations de pod.
Vous pouvez utiliser la valeur
0
pour désactiver toutes les limites ou demandes de ressources sur les clusters Standard. Par exemple, en définissantgke-parallelstore/cpu-limit: 0
etgke-parallelstore/memory-limit: 0
, les limites de processeur et de mémoire du conteneur sidecar seront vides, et les requêtes par défaut seront utilisées. Ce paramètre est utile lorsque vous ne savez pas de combien de ressources dfuse a besoin pour vos charges de travail et que vous souhaitez qu'il utilise toutes les ressources disponibles sur un nœud. Une fois que vous avez déterminé le nombre de ressources dont dfuse a besoin en fonction des métriques de votre charge de travail, vous pouvez définir des limites appropriées.Sur les clusters Autopilot, vous ne pouvez pas utiliser la valeur
0
pour annuler la définition des limites et des demandes de ressources du conteneur side-car. Vous devez définir explicitement une limite de ressources plus élevée pour le conteneur sidecar sur les clusters Autopilot et vous appuyer sur des métriques pour décider si une augmentation de la limite de ressources est nécessaire. Google Cloud