XenServer

Mise en cache de lecture du stockage

La mise en cache de lecture améliore les performances du disque d’une machine virtuelle car, après la lecture initiale à partir d’un disque externe, les données sont mises en cache dans la mémoire libre de l’hôte. Il améliore les performances dans les situations où de nombreuses machines virtuelles sont clonées à partir d’une seule machine virtuelle de base, car il réduit considérablement le nombre de blocs lus sur le disque. Par exemple, dans l’environnement Citrix Virtual Desktops, les environnements Machine Creation Services (MCS).

L’amélioration des performances peut être constatée chaque fois que les données sont lues sur le disque plusieurs fois, car elles sont mises en cache en mémoire. Ce changement est particulièrement visible dans la dégradation du service qui se produit lors de situations d’E/S lourdes. Par exemple, dans les situations suivantes :

  • Lorsqu’un nombre important d’utilisateurs finaux démarrent dans un laps de temps très court (tempête de démarrage)
  • Lorsqu’un nombre important de machines virtuelles sont planifiées pour exécuter des analyses de logiciels malveillants en même temps (tempêtes antivirus).

La mise en cache en lecture est activée par défaut lorsque vous disposez du type de licence approprié.

Remarque :

La mise en cache de lecture du stockage est disponible pour les clients de XenServer Premium Edition.

Activer et désactiver la mise en cache en lecture

Pour les SR basés sur des fichiers, tels que les types NFS, EXT3/EXT4, SMB et GFS2 SR, la mise en cache en lecture est activée par défaut. La mise en cache en lecture est désactivée pour tous les autres SR.

Pour désactiver la mise en cache de lecture pour un SR spécifique à l’aide de l’interface de ligne de commande xe, exécutez la commande suivante :

xe sr-param-set uuid=sr-uuid other-config:o_direct=true
<!--NeedCopy-->

Pour désactiver la mise en cache de lecture pour un SR spécifique à l’aide de XenCenter, accédez à la boîte de dialogue Propriétés de la SR. Dans l’onglet Mise en cache en lecture, vous pouvez sélectionner d’activer ou de désactiver la mise en cache en lecture.

Pour plus d’informations, consultez Modification des propriétés SR.

Limitations

  • La mise en cache de lecture n’est disponible que pour les SR NFS, EXT3/EXT4, SMB et GFS2. Il n’est pas disponible pour les autres types de SR.

  • La mise en cache en lecture seule s’applique aux VDI en lecture seule et aux parents VDI. Ces VDI existent là où les machines virtuelles sont créées à partir d’un « clone rapide » ou d’instantanés de disque. Les plus grandes améliorations de performances peuvent être constatées lorsque de nombreuses machines virtuelles sont clonées à partir d’une seule image « de référence ».

  • L’amélioration des performances dépend de la quantité de mémoire libre disponible dans le domaine de contrôle de l’hôte (dom0). L’augmentation de la quantité de mémoire dom0 permet d’allouer plus de mémoire au cache de lecture. Pour plus d’informations sur la façon de configurer la mémoire dom0, consultez l’article CTX134951.

  • Lorsque la mise en cache de lecture en mémoire est activée, une défaillance du cache entraîne la sérialisation des E/S. Cela peut parfois s’avérer plus onéreux que de désactiver la mise en cache de lecture, car lorsque la mise en cache de lecture est désactivée, les E/S peuvent être parallélisées. Pour réduire l’impact des échecs de cache, augmentez la quantité de mémoire dom0 disponible ou désactivez la mise en cache en lecture pour le SR.

Comparaison avec IntelliCache

IntelliCache et la mise en cache de lecture basée sur la mémoire sont complémentaires à certains égards. IntelliCache met non seulement en cache un niveau différent, mais il met également en cache les écritures en plus des lectures. IntelliCache met en cache les lectures du réseau sur un disque local. La mise en cache de lecture en mémoire met en cache les lectures du réseau ou du disque dans la mémoire hôte. L’avantage de la mise en cache de lecture en mémoire est que la mémoire reste beaucoup plus rapide qu’un disque SSD (Solid State Disk). Les performances dans les tempêtes de démarrage et autres situations d’E/S intensives s’améliorent.

La mise en cache en lecture et IntelliCache peuvent être activées simultanément. Dans ce cas, IntelliCache met en cache les lectures du réseau sur un disque local. Les lectures de ce disque local sont mises en cache en mémoire avec la mise en cache en lecture.

Définition de la taille du cache de lecture

Les performances du cache de lecture peuvent être optimisées en donnant plus de mémoire au domaine de contrôle de XenServer (dom0).

Important :

définissez la taille du cache de lecture sur TOUS les hôtes du pool individuellement à des fins d’optimisation. Toute modification ultérieure de la taille du cache de lecture doit également être définie sur tous les hôtes du pool.

Sur l’hôte XenServer, ouvrez un shell local et connectez-vous en tant que root.

Pour définir la taille du cache de lecture, exécutez la commande suivante :

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=nnM,max:nnM
<!--NeedCopy-->

Définissez les valeurs initiale et maximale sur la même valeur. Par exemple, pour définir la mémoire dom0 sur 20 480 Mo, procédez comme suit :

/opt/xensource/libexec/xen-cmdline --set-xen dom0_mem=20480M,max:20480M
<!--NeedCopy-->

Important :

Redémarrez tous les hôtes après avoir modifié la taille du cache de lecture.

Comment afficher l’allocation mémoire actuelle du dom0 ?

Pour afficher les paramètres de mémoire actuels du dom0, entrez :

free -m
<!--NeedCopy-->

La sortie de free -m montre les paramètres de mémoire dom0 actuels. La valeur peut être inférieure à celle attendue en raison de divers frais généraux. L’exemple de tableau ci-dessous montre la sortie d’un hôte avec dom0 réglé sur 2,6 Gio

|                     | Total  | Used | Free  | Shared | Buffer/cache | Available |
|---------------------|--------|------|-------|--------|--------------|-----------|
| Mem:                | 2450   | 339  | 1556  | 9      | 554          | 2019      |
| Swap:               | 1023   | 0    | 1023  |        |              |           |
<!--NeedCopy-->

Quelle plage de valeurs peut-on utiliser ?

Le domaine de contrôle XenServer (dom0) étant de 64 bits, de grandes valeurs peuvent être utilisées, par exemple 32 768 Mo. Cependant, nous vous recommandons de ne pas réduire la mémoire dom0 en dessous de 1 Gio.

Notes d’affichage XenCenter

La mémoire entière de l’hôte peut être considérée comme comprenant l’hyperviseur Xen, le dom0, les machines virtuelles et la mémoire libre. Même si la mémoire dom0 et VM est généralement d’une taille fixe, l’hyperviseur Xen utilise une quantité de mémoire variable. La quantité de mémoire utilisée dépend de divers facteurs. Ces facteurs incluent le nombre de machines virtuelles exécutées sur l’hôte à tout moment et la manière dont ces machines virtuelles sont configurées. Il n’est pas possible de limiter la quantité de mémoire utilisée par Xen. La limitation de la quantité de mémoire peut entraîner l’épuisement de la mémoire de Xen et empêcher le démarrage de nouvelles machines virtuelles, même lorsque l’hôte disposait de mémoire libre.

Pour afficher la mémoire allouée à un hôte, sélectionnez l’hôte dans XenCenter, puis cliquez sur l’onglet Mémoire .

Le champ XenServer affiche la somme de la mémoire allouée à dom0 et à la mémoire Xen . Par conséquent, la quantité de mémoire affichée peut être supérieure à celle spécifiée par l’administrateur. La taille de la mémoire peut varier lors du démarrage et de l’arrêt des machines virtuelles, même lorsque l’administrateur a défini une taille fixe pour dom0.

Mise en cache de lecture du stockage