Configuration de IBM eXtremeMemory et de IBM eXtremeIO

En configurant eXtremeMemory, vous pouvez stocker des objets dans la mémoire native plutôt que dans le segment de mémoire Java. La configuration eXtremeMemory active eXtremeIO, un nouveau mécanisme de transport. En retirant des objets du segment de mémoire Java, vous pouvez éviter les pauses de récupération d'espace, ce qui permet de bénéficier de performances plus constantes et de temps de réponse plus prévisibles.

Avant de commencer

Pourquoi et quand exécuter cette tâche

La machine JVM repose sur l'heuristique d'utilisation pour collecter, réduire et augmenter la mémoire des processus. Le récupérateur de place exécute ces opérations. Toutefois, l'exécution de la récupération de place a un coût qui augmente proportionnellement avec la taille du segment de mémoire Java et le nombre d'objets dans la grille de données. La machine JVM fournit différentes heuristiques pour différents cas d'utilisation et objectifs : récupération de place avec traitement optimal, temps de pause optimal, générationnelle, équilibrée et temps réel. Aucune heuristique n'est parfaite. Une seule heuristique ne peut pas convenir à toutes les configurations possibles.

WebSphere eXtreme Scale utilise la mise en cache des données avec des mappes réparties qui ont des entrées avec un cycle de vie bien connu. Ce cycle de vie inclut les opérations suivantes : GET, INSERT, DELETE et UPDATE. En utilisant ces cycles de vie de mappe bien connus, eXtremeMemory et eXtremeIO peuvent utiliser la mémoire plus efficacement que les heuristiques d'utilisation JVM.

Le diagramme suivant montre comment l'utilisation d'eXtremeMemory améliore la cohérence des temps de réponse dans l'environnement. Lorsque le temps de réponse relatif atteint les percentiles les plus élevés, les demandes qui utilisent eXtremeMemory ont des temps de réponse relativement plus lents. Le diagramme montre les percentiles 95-100.

.
Figure 1. Comparaison des temps de réponse eXtremeMemory et de segment de mémoire
Le temps de réponse relatif augmente à mesure que le percentile de temps de réponse augmente. Les temps de réponse relatifs sont beaucoup plus lents pour eXtremeMemory que pour le segment de mémoire.
Lorsque vous utilisez eXtremeMemory, eXtremeIO est utilisé pour la communication entre les serveurs de conteneur. Les objets sont sérialisés en octets dans le serveur de conteneur. Pour activer eXtremeIO et eXtremeMemory, vous devez définir les propriétés de serveur requises sur tous les serveurs de conteneur dans les grilles de données et redémarrer les serveurs.

Procédure

  1. Facultatif : Déterminez la valeur de la propriété maxXMSize à utiliser.
    1. Dans votre configuration existante, déterminez la taille par entrée. Exécutez la commande xscmd -c showMapSizes pour déterminer cette taille.
    2. Calculez la valeur maxXMSize. Pour obtenir la taille totale maximale des entrées (maximum_total_size), multipliez size_per_entry * maximum_number_of_entries. N'utilisez pas plus de 60 % de maxXMSize pour tenir compte du traitement des métadonnées. Multipliez maximum_total_size* 1.65 pour la valeur maxXMSize.
  2. Mettez à jour le fichier de propriétés de chaque serveur de conteneur dans la configuration afin d'activer le nouveau transport. Les propriétés de serveur suivantes actives le nouveau transport :
    Propriétés requises
    enableXM
    Lorsque la valeur est true, active IBM® eXtremeMemory sur le serveur et configure le serveur pour utiliser IBM eXtremeIO pour la réplication synchrone et asynchrone. Les entrées de cache sont stockées dans la mémoire native et non pas dans le segment de mémoire Java. tous les serveurs de conteneur dans les grilles de données doivent utiliser la même valeur pour la propriété enableXM.

    Valeur par défaut : false

    Propriétés suggérées
    maxXMSize
    Définit la quantité maximale de mémoire, en mégaoctets, utilisée par le serveur pour le stockage eXtremeMemory.

    Valeur par défaut : 25 % de la mémoire totale du système

    Propriétés facultatives
    maxXIONetworkThreads
    Définit le nombre maximum d'unités d'exécution à allouer dans le pool d'unités d'exécution du réseau de transport eXtremeIO.

    Valeur par défaut :50

    minXIONetworkThreads
    Définit le nombre minimum d'unités d'exécution à allouer dans le pool d'unités d'exécution du réseau de transport eXtremeIO.

    Valeur par défaut :50

    maxXIOWorkerThreads
    Définit le nombre maximum d'unités d'exécution à allouer dans le pool d'unités d'exécution de traitement des demandes de transport.

    Valeur par défaut :128

    minXIOWorkerThreads
    Définit le nombre minimum d'unités d'exécution à allouer dans le pool d'unités d'exécution de traitement des demandes de transport.

    Valeur par défaut :128

    xioChannel.xioContainerTCPNonSecure.Port
    Indique le numéro de port d'écoute non sécurisé de eXtremeIO sur le serveur. Si vous ne définissez pas de valeur, un port éphémère est utilisé. Cette propriété est utilisée uniquement lorsque la propriété transportType a la valeur TCP/IP.

    xioChannel.xioContainerTCPSecure.Port
    Indique le numéro de port SSL de eXtremeIO sur le serveur. Cette propriété est utilisée uniquement lorsque la propriété transportType a la valeur SSL-Supported ou SSL-Required.
  3. Redémarrez les serveurs de conteneur pour utiliser le nouveau mécanisme de transport. Pour plus d'informations, voir Démarrage et arrêt des serveurs sécurisés et Démarrage et arrêt des serveurs dans un environnement WebSphere Application Server.