Amélioration des performances de eDirectory sur les systèmes Linux, Solaris, AIX et HP-UX
Les sections suivantes fournissent des informations sur les moyens d'améliorer les performances de eDirectory sur des systèmes UNIX :
Mise au point de précision du serveur eDirectory
Novell eDirectory sous Linux et sous Solaris utilise une réserve de threads à ajustement dynamique pour répondre aux requêtes des clients. La réserve de thread s'ajuste automatiquement et fournit des performances optimales dans la plupart des cas. Cependant, vous pouvez éviter le retard provoqué par le démarrage des threads en cas de charge soudaine sur le serveur, en configurant les paramètres suivants dans le fichier /etc/nds.conf.
n4u.server.idle-threads |
Nombre minimum de threads (indépendamment de l'activité). La valeur de ce paramètre doit être fixée en fonction de la charge moyenne du client, afin de réduire le délai nécessaire à la production de nouveaux threads en condition d'activité normale du client. |
n4u.server.max-threads |
Nombre maximum de threads. La valeur de ce paramètre doit être définie en fonction du nombre maximal de clients qui doivent être pris en charge simultanément, ainsi que des recommandations suivantes : - eDirectory requiert 16 threads au minimum.
- Un thread pour 255 connexions LDAP (thread de surveillance).
- Un thread pour 4 clients simultanés (thread de travail).
|
n4u.server.start-threads |
Nombre de threads qui démarrent en même temps que eDirectory. La valeur de ce paramètre doit être fixée en fonction de la charge moyenne du client, afin de réduire le délai nécessaire à la production de nouveaux threads en condition d'activité normale du client. |
Optimisation du cache de eDirectory
Novell eDirectory utilise un caching persistant, afin que les modifications apportées à un serveur soient conservées dans un vecteur. Si le serveur se bloque lors de modifications, eDirectory se charge plus rapidement et synchronise les modifications en quelques secondes dès que le serveur a redémarré. Novell eDirectory utilise un modèle de retour à l'état initial avec un fichier journal pour exécuter un repositionnement avec restauration actualisée sur les transactions en cas de défaillance du système.
Les paramètres de eDirectory commencent avec 16 Mo de cache, dont 50 % sont alloués au caching de bloc et le reste au cache d'enregistrement. Passé un délai de 15 minutes, eDirectory modifie ses seuils de cache afin d'initialiser jusqu'à 51% de la mémoire disponible pour le cache, en laissant au moins 24 Mo pour le système d'exploitation. Cet algorithme n'est utilisé que si le système d'exploitation de l'hôte prend en charge l'appel qui vous permet de déterminer la quantité de mémoire libre disponible.
Vous pouvez optimiser votre cache eDirectory par les moyens suivants :
Utilisation d'une taille de mémoire vive fixe pour les systèmes UNIX
Bien que l'algorithme ci-dessus fonctionne correctement avec Windows et NetWare, il n'en va pas de même avec les systèmes UNIX. Dans les systèmes UNIX, la mémoire libre disponible indiquée par le système d'exploitation est inférieure à celle des autres systèmes d'exploitation en raison de la manière dont UNIX utilise la mémoire libre pour le caching interne des blocs du système de fichiers, l'exécution fréquente de programmes, de bibliothèques, etc. En outre, sous UNIX, les bibliothèques ne restituent généralement pas au système d'exploitation la mémoire libérée.
C'est pourquoi nous vous recommandons d'allouer une quantité fixe de RAM au cache.
Fixez la quantité de mémoire vive pour les systèmes UNIX en utilisant l'une des méthodes suivantes :
Création manuelle d'un fichier .ini
-
Créez un fichier appelé _ndsdb.ini dans le répertoire qui contient déjà les fichiers de la base de données eDirectory (ensemble DIB) ; il s'agit généralement du répertoire /var/nds/dib.
-
Ajoutez au fichier _ndsdb.ini les paramètres listés ci-dessous :
blockcachepercent=50 |
Définit le pourcentage de cache alloué au caching de blocs de base de données. |
cacheadjustinterval=15 |
Définit l'intervalle, en secondes, utilisé par eDirectory pour évaluer son utilisation de la mémoire libre et ajuster la taille globale du cache. |
cachecleanupinterval=15 |
Définit l'intervalle, en secondes, utilisé par eDirectory pour écrire les blocs de cache altérés sur le disque. |
cache=16777216 |
Définit la limite stricte (en octets). |
Utilisation de Novell iMonitor
-
Cliquez sur Configuration de l'agent .
-
Cliquez sur Cache de base de données et affichez les informations suivantes :
Taille maximale |
Taille maximale en ko que peut avoir le cache spécifié. |
Taille actuelle |
Taille actuelle en ko du cache spécifié. |
Éléments mis en cache |
Nombre d'éléments contenus dans le cache spécifié. |
Anciennes versions mises en cache |
Nombre d'anciennes versions contenues dans le cache spécifié. Les anciennes versions des éléments contenus dans le cache sont conservées par souci de cohérence des transactions de lecture dans la base de données. Autrement dit, si un thread se trouve dans une transaction de lecture et un autre dans une transaction d'écriture, les anciennes versions des blocs modifiés par l'opération d'écriture sont conservées à l'intention de l'utilisateur qui effectue la lecture. Cet utilisateur a ainsi la garantie d'obtenir des résultats cohérents durant toute sa transaction de lecture, même si des modifications sont effectuées dans l'intervalle. |
Taille des anciennes versions |
Taille en ko des anciennes versions des éléments contenus dans le cache. |
Correspondances |
Nombre d'accès réussis à un élément à partir du cache spécifié. |
Recherches des correspondances |
Nombre d'éléments examinés avant un accès réussi à un élément à partir du cache spécifié. Le rapport de recherche de correspondances permet de mesurer l'efficacité de la recherche dans le cache. Normalement, il doit avoisiner 1:1. |
Anomalies |
Nombre de fois où un élément introuvable dans le cache a dû être obtenu dans un cache de niveau inférieur ou à partir du disque. |
Recherches des anomalies |
Nombre d'éléments examinés avant qu'il soit établi que l'élément voulu ne se trouvait pas dans le cache spécifié. Le rapport de recherche d'anomalies permet de mesurer l'efficacité de la recherche dans le cache. Normalement, il doit avoisiner 1:1. |
-
Choisissez parmi les options suivantes :
Ajustement dynamique |
Permet à la base de données eDirectory d'ajuster dynamiquement la quantité de mémoire système qu'il convient de réserver au cache, compte tenu des besoins estimés et des paramètres indiqués ci-dessous. |
Pourcentage d'ajustement du cache |
Pourcentage de la mémoire disponible qui peut être utilisé à la fois pour les caches d'enregistrement et de bloc. |
Contraintes de taille du cache |
Lors de l'ajustement dynamique, veillez à respecter les contraintes spécifiées. N'utilisez pas pour le cache une quantité de mémoire inférieure au chiffre indiqué, ni supérieure à la quantité totale de mémoire disponible moins le chiffre indiqué. |
Limite stricte |
Quantité exacte de mémoire système à utiliser pour le cache. |
Taille maximale du cache |
Taille en ko des caches d'enregistrement et de bloc combinés. |
Pourcentage du cache de bloc |
Pourcentage de la mémoire système disponible pour le cache qui doit être affecté au cache de bloc. Le pourcentage restant est alloué au cache d'enregistrement. |
Intervalle d'ajustement du cache |
Cet intervalle ne s'applique que si l'ajustement dynamique est activé. Il détermine la fréquence d'ajustement de la taille du cache, en fonction du pourcentage et des contraintes spécifiés. |
Intervalle de nettoyage du cache |
Détermine à quelle fréquence les anciennes versions inutilisées sont supprimées du cache. |
Paramètres de cache permanents |
Lorsque cette option est sélectionnée, toutes les modifications soumises par le biais de iMonitor deviennent définitives et remplacent les paramètres précédemment enregistrés ainsi que les valeurs par défaut du système. |
-
Cliquez sur Envoyer.
Paramètres de cache eDirectory
Par défaut, eDirectory utilise un cache dynamique. Si vous disposez de suffisamment de mémoire vive pour augmenter la taille du cache eDirectory, vous pouvez considérablement améliorer les performances de eDirectory pour les bases de données volumineuses en allouant plus de mémoire vive au cache eDirectory.
Les paramètres listés dans le tableau suivant peuvent être ajustés en vue d'améliorer les performances de eDirectory :
blockcachepercent=valeur |
Définit le pourcentage de cache alloué au caching de blocs de base de données. La valeur par défaut est 50. |
cachecleanupinterval=valeur |
Définit l'intervalle, en secondes, utilisé par eDirectory pour écrire les blocs de cache altérés sur le disque. La valeur par défaut est 15. |
cacheadjustinterval=valeur |
Définit l'intervalle, en secondes, utilisé par eDirectory pour évaluer son utilisation de la mémoire libre et ajuster la taille globale du cache. La valeur par défaut est 15. |
cache=valeur |
Définit la limite stricte, en octets, de la mémoire que eDirectory peut utiliser pour le caching. |
cache=leave:valeur |
Indique le nombre minimal d'octets à laisser. |
min:valeur |
Indique la taille minimale du cache en octets. |
max:valeur |
Indique la taille maximale du cache en octets. |
Selon l'algorithme, le paramètre par défaut de Novell eDirectory est le suivant :
cache=dyn,%:51,min:16777216,max:0,leave:0
En d'autres termes :
Vous pouvez également configurer eDirectory pour qu'il utilise un pourcentage de la mémoire totale. Pour ce faire, spécifiez le cache comme illustré ci-dessous :
cache=hard,total,%:pourcentage_de_mémoire_totale_en_octets
Optimisation des données de chargement par lot
Les performances de chargement par lot à l'aide de l'utilitaire d'importation, de conversion et d'exportation (ICE) peuvent été altérées par différents facteurs. Les principaux facteurs sont la gestion inadaptée des entrées/sorties de disque et l'allocation de mémoire insuffisante pour le cache Novell eDirectory.
Si eDirectory est la seule application du serveur, vous pouvez définir le cache afin qu'il utilise jusqu'à 80 % de la mémoire totale. Tout cache alloué sera utilisé en définitive. Une taille de mémoire cache supérieure améliorera les performances de eDirectory sur les données non rémanentes.
IMPORTANT : évitez d'assigner au cache plus de 40 % de la mémoire totale, si le serveur héberge des services ou des applications autres que eDirectory. La plus petite taille de mémoire cache testée est 0 et la plus grande est 3 Go. Pour déterminer la taille du cache appropriée, vous devez connaître les besoins en mémoire des autres processus exécutés sur le serveur, ainsi que la quantité de mémoire cache sur disque nécessaire. Nous vous conseillons d'essayer différentes tailles pour trouver le meilleur équilibre.
Pour optimiser les performances de chargement par lot, allouez un pourcentage supérieur du cache eDirectory pour le cache de bloc. Nous vous recommandons de choisir une valeur de 80 % pour le cache de bloc. Cette valeur peut être réinitialisée, une fois l'opération terminée.
L'utilisation de iMonitor est le moyen le plus rapide de modifier le paramètre blockcachepercentage. Pour ce faire, suivez les instructions figurant dans Utilisation de Novell iMonitor.
Optimisation de la taille de transaction LBURP
La taille de transaction LBURP définit le nombre d'enregistrements qui sont envoyés au serveur LDAP par l'utilitaire ICE, durant une même transaction. En augmentant cette valeur, vous pouvez améliorer les performances du chargement par lot, en supposant toutefois que vous avez défini une mémoire suffisante et que l'augmentation n'entraîne pas de conflit d'entrées/sorties.
La taille de transaction par défaut est de 25, ce qui est suffisant pour les petits fichiers LDIF (moins de 100 000 opérations), mais non pour un nombre important d'enregistrements. La taille de transaction LBURP peut être définie entre 1 et 1 000.
Modification de la taille de transaction
Pour modifier la taille de transaction, changez la valeur requise dans le paramètre n4u.ldap.lburp.transize du fichier /etc/nds.conf.
Dans l'idéal, une taille de transaction élevée assure les meilleures performances. Cependant, vous ne devez pas attribuer des valeurs arbitrairement élevées à la taille de transaction pour les raisons suivantes :
- Une taille de transaction élevée requiert que le serveur alloue plus de mémoire à l'exécution de la transaction. Si le système commence à manquer de mémoire, cela peut provoquer un ralentissement dû aux échanges.
- Vérifiez que le fichier LDIF est exempt d'erreurs et que toutes les entrées pré-existantes dans eDirectory ont été mises en commentaire. Si la transaction présente ne serait-ce qu'une seule erreur (y compris les cas où l'objet à ajouter existe déjà dans l'annuaire), eDirectory ne tient pas compte du paramètre de la transaction LBURP et effectue une validation après chaque opération pour garantir l'intégrité des données.
Pour plus d'informations, reportez-vous à Débogage des fichiers LDIF
- L'optimisation LBURP ne fonctionne que pour les objets Feuille. Si la transaction renferme à la fois un conteneur et les objets qui lui sont subordonnés, eDirectory la traite comme une erreur. Pour éviter ce problème, chargez les objets Conteneur d'abord à partir d'un fichier LDIF distinct ou activez l'utilisation des références en aval.
Pour plus d'informations, reportez-vous à Activation des références en aval
Mise au point du système Solaris pour Novell eDirectory
Les sections suivantes expliquent comment régler le kernel, le réseau et le système de fichiers Solaris :
IMPORTANT : avant de commencer, vérifiez que vous avez appliqué les correctifs recommandés au système d'exploitation Solaris. Pour plus d'informations, reportez-vous à "Installing or Upgrading Novell eDirectory on Solaris (Installation ou mise à niveau de Novell eDirectory sous Solaris) dans le manuel Novell eDirectory 8.7.3 Installation Guide (Guide d'installation de Novell eDirectory 8.7.3).
Mise au point du kernel Solaris
Pour optimiser les performances de eDirectory sous Solaris, définissez les variables kernel suivantes dans le fichier /etc/system:
set maxphys=1048576 |
Nombre maximum d'octets pouvant être transférés par transaction SCSI. |
set md_maxphys=1048576 |
Nombre maximal d'octets pouvant être transférés par transaction SCSI si vous utilisez disksuite, vol_maxio ou vxvm. |
set ufs:ufs_LW=1/128e_de_la_memoire_disponible |
Limite d'octets en attente pour un même fichier, en deça de laquelle la variable de condition sur les autres processus en sommeil est basculée. |
set ufs:ufs_HW=1/64e_de_la_memoire_disponible |
Nombre d'octets en attente sur la base d'un seul fichier. |
ctcp:taille_hachage_conn_tcp=8192 |
Nombre d'entrées de hachage de connexion allouées pour localiser rapidement les structures de données du kernel associées à la connexion TCP. (Il est possible de porter cette valeur à 262 144 selon le nombre de clients LDAP.) |
Mise au point du réseau Solaris
Vous pouvez améliorer les performances de recherche LDAP à l'aide de la commande Solaris ndd. La syntaxe de commande suivante vous permet d'analyser et de modifier les paramètres réglables qui influent sur les opérations et le comportement du réseau :
ndd -set /dev/tcp nom_variable valeur_variable
Les valeurs recommandées pour les variables sont fournies dans le tableau ci-dessous :
tcp_conn_req_max_q: 1024 |
Le " q " correspond ici à la file d'attente dans laquelle sont conservés les sockets complets jusqu'à émission d'une acceptation par l'application. |
tcp_time_wait_interval: 60000
|
Définit (ici réduit) le délai d'attente. |
tcp_xmit_hiwat: 64000 tcp_xmit_lowat: 64000 |
Ajuste la taille minimale et la taille maximale de la fenêtre d'envoi TCP. |
tcp_slow_start_initial: 2 |
Change de 1 en 2 le nombre de premiers paquets de transmission. |
Optimisation du système de fichiers Solaris
Les performances de Novell eDirectory sous Solaris peuvent être améliorées si le système de fichiers Solaris est correctement mis au point, surtout pour les opérations de chargement par lot de données dans l'annuaire. La mise au point du système de fichiers pour eDirectory est similaire à celle d'une base de données. Pour plus d'informations sur le système de fichiers Solaris, reportez-vous au site Web Sunworld*.