Amélioration des performances de eDirectory

Le paramètre le plus important en matière de performances de eDirectory est le cache. Dans les versions antérieures des NDS®, vous pouviez spécifier une limite de cache de bloc pour réguler la quantité de mémoire utilisée par l'annuaire pour le cache. La valeur par défaut était de 8 Mo de RAM pour le cache.

Avec eDirectory 8.5 ou version ultérieure, vous pouvez spécifier une limite de cache de bloc et une limite de cache d'entrée. Le cache de bloc, disponible dans les versions précédentes des NDS, met uniquement en cache des blocs physiques de la base de données. Le cache d'entrée, nouvelle fonction de eDirectory 8.5, met en cache les entrées logiques de la base de données. Le caching des entrées réduit la durée de traitement nécessaire à l'instanciation des entrées en mémoire depuis le cache de bloc.

Bien que ces deux caches soient parfois redondants, chacun est conçu pour améliorer l'exécution d'opérations particulières. Le cache de bloc s'avère plus utile dans les opérations de mise à jour. Le cache d'entrée est plus utile dans des opérations qui exigent que l'arborescence eDirectory soit parcourue par lecture des entrées, par exemple lors d'une résolution de nom.

Les caches d'entrée et de bloc sont tous deux utiles pour améliorer l'exécution des requêtes. Le cache de bloc accélère la recherche dans les index. Le cache d'entrée accélère la récupération des entrées référencées dans un index.

Vous trouverez ci-après les paramètres par défaut de eDirectory 8.7.3 :


Répartition de la mémoire entre caches d'entrée et de bloc

Avec un cache d'entrée et un cache de bloc, la mémoire totale disponible pour le caching est partagée par les deux caches. Il s'agit par défaut d'une répartition égale. Pour conserver la quantité de cache de bloc disponible dans les versions antérieures des NDS 8, vous devez doubler la taille totale du cache de eDirectory. Si vous utilisez le cache pour améliorer les performances d'importation LDIF par exemple, vous pouvez doubler la taille totale du cache ou modifier les paramètres par défaut du cache. Pour modifier les paramètres par défaut du cache, reportez-vous à Configuration des limites à ajustement dynamique et de mémoire stricte.

Plus le nombre de blocs et d'entrées susceptibles d'être mis en cache est élevé, meilleures sont les performances globales. L'idéal est de mettre en cache la base de données entière dans les caches de bloc et d'entrée, bien que cette procédure soit impossible pour les bases de données volumineuses. En règle générale, essayez, autant que possible, de vous rapprocher d'un rapport 1:1 entre cache de bloc et ensemble DIB. Concernant le cache d'entrée, il convient d'approcher le plus possible un rapport 1:2 ou 1:4. Pour obtenir des performances optimales, dépassez ces rapports.


Utilisation des paramètres par défaut du cache

eDirectory propose deux méthodes pour contrôler la consommation de mémoire cache : une limite à ajustement dynamique et une limite de mémoire stricte. Les deux méthodes peuvent être utilisées, mais pas simultanément car elles s'excluent mutuellement. La dernière méthode utilisée remplace systématiquement les paramètres définis précédemment.


Présentation de la limite à ajustement dynamique

Avec la limite à ajustement dynamique, eDirectory ajuste périodiquement sa consommation de mémoire en réponse au niveau de consommation de mémoire des autres processus. Vous indiquez la limite sous la forme d'un pourcentage de la mémoire physique disponible. Sur la base de ce pourcentage, eDirectory permet de calculer la nouvelle limite de mémoire à intervalles définis. La nouvelle limite de mémoire correspond au pourcentage de mémoire physique disponible à ce moment.

Outre le pourcentage, vous pouvez définir un seuil maximal et minimal. Le seuil correspond au nombre d'octets auxquels eDirectory s'ajuste. Il peut représenter le nombre d'octets à utiliser ou à laisser disponibles. Le seuil minimal par défaut est de 16 Mo. Le seuil maximal par défaut est de 4 Go.

Si les limites de seuil minimal et maximal sont incompatibles, c'est le seuil minimal qui prévaut. Vous pouvez, par exemple, indiquer les paramètres suivants :

Seuil minimal :

8 Mo

Pourcentage de mémoire physique disponible :

75

Seuil maximal :

Conserver 10 Mo disponibles

Lorsque eDirectory ajuste sa limite de cache, la mémoire physique disponible est de 16 Mo. eDirectory calcule une nouvelle limite de 12 Mo et vérifie si elle est comprise dans l'intervalle délimité par les seuils minimal et maximal. Dans cet exemple, le seuil maximal indique que 10 Mo doivent rester disponibles, et eDirectory fixe donc la limite à 6 Mo. Cependant, le seuil minimal est de 8 Mo, c'est pourquoi eDirectory adopte cette valeur comme limite finale.

La limite à ajustement dynamique nécessite également la définition d'un intervalle. L'intervalle par défaut est de 15 secondes. Plus l'intervalle est court, plus la consommation de mémoire se base sur les conditions réelles. Cependant, des intervalles trop courts ne sont pas nécessairement avantageux, dans la mesure où le calcul du pourcentage alloue et libère davantage de mémoire.


Présentation de la limite de mémoire stricte

La limite de mémoire stricte est la méthode utilisée dans les versions antérieures de eDirectory pour réguler la consommation de mémoire. Choisissez l'une des méthodes suivantes pour définir la limite de mémoire stricte :


Élimination des données superflues du cache

NDS 8 crée plusieurs versions des blocs et des entrées dans son cache afin de préserver l'intégrité des transactions. Les versions antérieures des NDS 8 ne retiraient pas ces blocs ni ces entrées lorsqu'ils n'étaient plus nécessaires. Dans eDirectory 8.7.3, un processus d'arrière-plan parcourt périodiquement le cache et élimine les anciennes versions. Cette procédure permet de réduire la consommation de mémoire cache. L'intervalle d'analyse par défaut est de 15 secondes.


Configuration des limites à ajustement dynamique et de mémoire stricte

Vous pouvez configurer dynamiquement les limites à ajustement dynamique et de mémoire stricte ; pour ce faire, employez l'une des deux méthodes suivantes :


Utilisation de Novell iMonitor
  1. Cliquez sur Configuration de l'agent Agent Configuration button.

  2. Cliquez sur Cache de base de données et affichez les informations suivantes :

    Informations sur le cache de base de données Description

    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.

  3. Choisissez parmi les options suivantes :

    Option Description

    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.

  4. Cliquez sur Envoyer.


Utilisation du fichier _ndsdb.ini
  1. Ouvrez _ndsdb.ini dans un éditeur de texte.

    Sous NetWare®, ce fichier se trouve dans sys:\netware. Sous Windows NT et Windows 2000, il se trouve généralement dans \Novell\NDS\DIBfiles.

  2. Ajoutez la syntaxe appropriée au fichier :

    Commande Explication de la variable Définition

    cache=octets_cache

    Nombre fixe d'octets que vous souhaitez utiliser.

    Définit une limite de mémoire stricte

    Par exemple, pour définir une limite stricte de 8 Mo, entrez

    cache=8000000

    cache=options_cache

    Vous pouvez préciser plusieurs options, dans l'ordre de votre choix, en les séparant par une virgule.

    • DYN

      Définit une limite à ajustement dynamique.

    • HARD

      Définit une limite de mémoire stricte

    • %:pourcentage

      Pourcentage de mémoire disponible ou de mémoire physique à utiliser.

    • AVAIL ou TOTAL

      Pourcentage de mémoire physique disponible ou totale (réservé à la limite de mémoire stricte).

    • MIN:nombre_octets

      Nombre minimum d'octets.

    • MAX:nombre_octets

      Nombre maximum d'octets.

    • LEAVE:nombre_octets

      Nombre minimum d'octets à laisser.

    Définit une limite de mémoire stricte ou à ajustement dynamique.

    Par exemple, pour définir une limite à ajustement dynamique de 75 % de la mémoire disponible et un minimum de 16 Mo, entrez

    cache=DYN, %:75,MIN:16000000

    Ou, pour définir une limite stricte de 75 % de la mémoire physique totale et un minimum de 16 Mo, entrez

    cache=HARD,%:75,MIN: 16000000

  3. (Facultatif) Pour préciser l'intervalle de la limite à ajustement dynamique, ajoutez la ligne suivante :

    cacheadjustinterval=nombre_secondes

  4. (Facultatif) Pour préciser l'intervalle de nettoyage des anciennes versions des entrées et des blocs, ajoutez la ligne suivante :

    cachecleanupinterval=nombre_secondes

  5. (Facultatif) Pour modifier la répartition du pourcentage entre cache de bloc et cache d'entrée, ajoutez la ligne suivante :

    blockcachepercent=pourcentage

    La variable pourcentage doit être comprise entre 0 et 100. Le pourcentage spécifié correspond au pourcentage de mémoire cache utilisé pour le cache de bloc. Le pourcentage restant est utilisé pour le cache d'entrée. Il est recommandé de ne pas choisir le pourcentage 0.

  6. Redémarrez le serveur eDirectory pour que les modifications soient prises en compte.


Configuration de limites à l'aide de DSTrace

Si vous utilisez eDirectory pour NetWare, vous pouvez configurer la limite à ajustement dynamique et la limite de mémoire stricte via DSTrace. Vous n'avez pas besoin de redémarrer le serveur pour valider les modifications.

  1. (Facultatif) Pour définir une limite stricte, entrez ce qui suit sur la console du serveur :

    SET DSTRACE=!MBquantité_de_RAM_à_utiliser_en_octets

    Par exemple, pour définir une limite stricte de 8 Mo, entrez

    SET DSTRACE=!MB8388608
  2. (Facultatif) Pour définir une limite stricte calculée, entrez la commande suivante sur la console du serveur. Entrez uniquement les options souhaitées :

    SET DSTRACE=!MHARD,AVAIL OR TOTAL,%:pourcentage,MIN:nombre_octets,MAX:nombre_octets,LEAVE:nombre_octets_à_laisser,NOSAVE

    Par exemple, pour définir une limite stricte de 75 % de la mémoire physique totale et un minimum de 16 Mo, et pour indiquer de ne pas enregistrer ces options dans le fichier de démarrage, entrez

    SET DSTRACE=!MHARD,%:75,MIN:16777216,NOSAVE
  3. (Facultatif) Pour définir une limite à ajustement dynamique, entrez ce qui suit sur la console du serveur :

    SET DSTRACE=!MDYN,%:pourcentage,MIN:nombre_octets,MAX:
    nombre_octets,LEAVE:nombre_octets_à_laisser,
    NOSAVE

    Par exemple, pour définir une limite dynamique de 75 % de la mémoire disponible et un minimum de 8 Mo, entrez

    SET DSTRACE=!MDYN,%:75,MIN:8388608

Réglage des services LDAP pour eDirectory

Pour plus d'informations sur la configuration matérielle et le logicielle de base du serveur LDAP, les paramètres de réglage et les conseils en matière d'organisation d'annuaire, reportez-vous à How to Configure and Optimize eDirectory LDAP Servers (Configuration et optimisation des serveurs LDAP eDirectory).


Gestion de la mémoire

eDirectory utilise de la mémoire pour le cache de la base de données et pour l'utilisation de l'annuaire. Il s'agit de réserves de mémoire allouées distinctes. Le moteur de l'annuaire utilise au besoin la mémoire des réserves de mémoire allouées dans le système d'exploitation. La base de données utilise une réserve de cache définie par les paramètres ci-dessous. En général, plus la quantité de cache de base de données allouée à eDirectory est grande, plus les performances sont optimales. Cependant, étant donné que eDirectory utilise la mémoire système disponible pour ses tampons, si des clients effectuent des requêtes qui nécessitent le renvoi d'ensembles de données volumineux, il peut être nécessaire de réduire la taille du cache de la base de données afin de disposer de suffisamment de mémoire système pour que l'annuaire puisse gérer l'élaboration des réponses aux requêtes.

Le moteur de base de données utilise le cache de base de données pour stocker les blocs les plus récemment utilisés. Ce cache possède initialement une taille fixe de 16 Mo. Sa taille peut être modifiée à partir de la ligne de commande dans les versions d'origine de eDirectory. Par exemple, la commande suivante définit une taille de 80 Mo pour le cache de base de données de eDirectory :

set dstrace=!mb 80000000

Vous pouvez également définir un fichier nommé _ndsdb.ini dans le répertoire sys:\_netware d'un serveur NetWare ou dans le répertoire contenant les fichiers de base de données eDirectory des environnements Windows (normalement, répertoire d'installation\nds\dbfiles) et UNIX (normalement \var\nds\dib). Ce fichier texte doit simplement contenir une ligne telle que :

cache=80000000

N'ajoutez aucun espace autour du signe égal (=).

Le cache de eDirectory 8.7.3 peut être initialisé avec une limite stricte, comme cela était le cas dans les versions précédentes. De plus, les limites supérieure et inférieure peuvent être définies soit sous forme de nombres fixes soit sous forme de pourcentage de la mémoire disponible. Les paramètres de contrôle d'allocation dynamique permettent à la taille du cache d'augmenter ou de diminuer selon l'utilisation. Si les paramètres de configuration appropriés sont définis, le cache de base de données augmente ou diminue de façon dynamique, selon les besoins des autres ressources système.

L'édition du fichier _ndsdb.ini permet de contrôler manuellement l'utilisation de la mémoire de la base de données. Le format de commandes du fichier INI est le suivant :

cache=octets_cache # Définir une limite de mémoire stricte

D'autres formats sont présentés dans le tableau suivant :

Commande Description

cache=options_cache

Définit une limite stricte ou à ajustement dynamique. Vous pouvez préciser plusieurs options de cache, dans l'ordre de votre choix, en les séparant par une virgule. Elles sont toutes facultatives. Ces options sont les suivantes :

DYN ou HARD

Limite dynamique ou stricte.

AVAIL ou TOTAL

Ces options ne s'appliquent que si une limite stricte a été choisie. Omettez ces options pour une limite dynamique.

%:pourcentage

Pourcentage de mémoire physique disponible ou totale à utiliser.

MIN:octets

Nombre minimum d'octets.

MAX:octets

Nombre maximum d'octets.

LEAVE:octets

Nombre minimum d'octets à laisser au système d'exploitation.

blockcachepercent=pourcentage

Divise le cache entre le cache de bloc et le cache d'enregistrement.

Si une limite stricte est indiquée et que l'administrateur veut définir le cache de base de données en fonction d'un pourcentage de mémoire, il peut choisir entre un pourcentage de mémoire totale et un pourcentage de mémoire disponible. Les limites dynamiques font toujours référence à un pourcentage de mémoire disponible. Voici des exemples de commandes valides dans le fichier _ndsdb.ini.

L'exemple de limite dynamique suivant équivaut à 75 % de la mémoire disponible, avec un minimum de 16 Mo et 32 Mo pour le système d'exploitation :

cache=DYN,%:75,MIN:16000000, LEAVE 32000000

L'exemple de limite stricte suivant équivaut à 75 % de la mémoire physique totale, avec un minimum de 18 Mo et un maximum de 512 Mo :

cache=HARD, TOTAL,%:75,MIN:18000000, MAX 512000000

L'exemple suivant est un exemple de format ancien de limite stricte équivalant à 8 Mo :

cache=8000000

Le cache de la base de données est réparti entre le cache de bloc et le cache d'enregistrement. Le cache de bloc contient des blocs de données et d'index qui mettent en miroir le stockage sur le disque. Le cache d'enregistrement garde en mémoire des représentations des objets et des attributs de l'annuaire. Si vous effectuez des mises à jour ou des ajouts dans l'annuaire, utilisez le paramètre du cache de bloc. Si vous effectuez principalement des lectures, utilisez le cache d'enregistrement. Vous risquez d'endommager les deux caches si vous effectuez de nombreuses mises à jour séquentielles sans allouer une taille de cache correcte. À moins que vous n'apportiez des modifications spécifiques, le cache est alloué pour 50 % au cache de bloc et pour 50 % au cache d'enregistrement. L'option blockcachepercent peut être incluse dans le fichier _ndsdb.ini pour indiquer le pourcentage de cache alloué à la mise en cache des blocs d'index et de données. (La valeur par défaut est 50 %.) Le cache restant est utilisé pour les entrées.

Par exemple, pour indiquer 60 % de cache de bloc et 40 % de cache d'enregistrement, entrez :

blockcachepercent=60

Ne choisissez pas 100 % du cache pour le cache de bloc ou le cache d'enregistrement, au détriment de l'autre type de cache. En règle générale, n'allouez pas plus de 75 % de votre mémoire cache à l'un des deux types de cache.

La configuration du cache de base de données peut également être contrôlée à l'aide de Novell iMonitor.

Bien que la taille du cache soit dynamique selon la quantité de mémoire disponible, la commande DSTRACE peut tout de même être utilisée dans des environnements personnalisés.