Mise en cache en lecture du stockage
La mise en cache en lecture améliore les performances du disque d’une machine virtuelle car, après la lecture initiale depuis le disque externe, les données sont mises en cache dans la mémoire libre de l’hôte. Elle améliore les performances dans les situations où de nombreuses machines virtuelles sont clonées à partir d’une seule machine virtuelle de base, car elle réduit considérablement le nombre de blocs lus à partir du disque. Par exemple, dans les environnements Citrix Virtual Desktops Machine Creation Services™ (MCS).
L’amélioration des performances est visible chaque fois que des données sont lues plusieurs fois à partir du disque, car elles sont mises en cache en mémoire. Ce changement est plus perceptible lors de la dégradation du service qui se produit pendant les situations de forte activité d’E/S. 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 programmées pour exécuter des analyses de logiciels malveillants en même temps (tempêtes d’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 en 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 de SR NFS, EXT3/EXT4, SMB et GFS2, 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.
Vous pouvez choisir de désactiver la mise en cache en lecture sur les SR NFS, EXT3/EXT4 ou SMB. Pour les SR GFS2, la mise en cache en lecture ne peut pas être désactivée.
Pour désactiver la mise en cache en 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 en lecture pour un SR spécifique à l’aide de XenCenter®, accédez à la boîte de dialogue Propriétés du SR. Dans l’onglet Mise en cache en lecture, vous pouvez choisir d’activer ou de désactiver la mise en cache en lecture.
Pour plus d’informations, consultez Modification des propriétés du SR.
Limitations
-
La mise en cache en lecture est disponible uniquement pour les SR NFS, EXT3/EXT4, SMB et GFS2. Elle n’est pas disponible pour les autres types de SR.
-
La mise en cache en lecture s’applique uniquement aux VDI en lecture seule et aux parents de VDI. Ces VDI existent lorsque les machines virtuelles sont créées à partir de « Fast Clone » ou d’instantanés de disque. Les améliorations de performances les plus importantes peuvent être observées lorsque de nombreuses machines virtuelles sont clonées à partir d’une seule image de référence.
-
Les améliorations de performances dépendent de la quantité de mémoire libre disponible dans le domaine de contrôle (dom0) de l’hôte. L’augmentation de la quantité de mémoire dom0 permet d’allouer plus de mémoire au cache en lecture. Pour plus d’informations sur la configuration de la mémoire dom0, consultez Modifier la quantité de mémoire allouée au domaine de contrôle.
-
Lorsque la mise en cache en lecture en mémoire est activée, un échec de cache entraîne la sérialisation des E/S. Cela peut parfois être plus coûteux que de désactiver la mise en cache en lecture, car avec la mise en cache en lecture 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 en lecture basée sur la mémoire sont à certains égards complémentaires. IntelliCache ne met pas seulement en cache sur 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 en lecture en mémoire met en cache les lectures du réseau ou du disque dans la mémoire de l’hôte. L’avantage de la mise en cache en lecture en mémoire est que la mémoire est toujours un ordre de grandeur plus rapide qu’un disque SSD (Solid-State Disk). Les performances s’améliorent lors des tempêtes de démarrage et d’autres situations d’E/S intenses.
La mise en cache en lecture et IntelliCache peuvent être activés 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éfinir la taille du cache en lecture
Les performances du cache en lecture peuvent être optimisées en allouant plus de mémoire au domaine de contrôle (dom0) de XenServer.
Important :
Définissez la taille du cache en lecture sur TOUS les hôtes du pool individuellement pour l’optimisation. Toute modification ultérieure de la taille du cache en 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 en 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 à 20 480 MiB :
/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 de mémoire dom0 actuelle ?
Pour afficher les paramètres de mémoire dom0 actuels, saisissez :
free -m
<!--NeedCopy-->
La sortie de free -m affiche les paramètres de mémoire dom0 actuels. La valeur peut être inférieure à celle attendue en raison de divers surcoûts. Le tableau d’exemple ci-dessous montre la sortie d’un hôte avec dom0 défini sur 2,6 GiB.
| | Total | Used | Free | Shared | Buffer/cache | Available |
|---------------------|--------|------|-------|--------|--------------|-----------|
| Mem: | 2450 | 339 | 1556 | 9 | 554 | 2019 |
| Swap: | 1023 | 0 | 1023 | | | |
<!--NeedCopy-->
Quelle plage de valeurs peut être utilisée ?
Comme le domaine de contrôle XenServer (dom0) est 64 bits, de grandes valeurs peuvent être utilisées, par exemple 32 768 MiB. Cependant, nous vous recommandons de ne pas réduire la mémoire dom0 en dessous de 1 GiB.
Notes d’affichage de XenCenter
La mémoire totale de l’hôte peut être considérée comme comprenant l’hyperviseur Xen®, dom0, les machines virtuelles et la mémoire libre. Même si la mémoire de dom0 et des machines virtuelles est généralement de taille fixe, l’hyperviseur Xen utilise une quantité variable de mémoire. 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 à un moment donné 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. Limiter la quantité de mémoire peut entraîner une pénurie de mémoire pour 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, dans XenCenter, sélectionnez l’hôte, puis cliquez sur l’onglet Mémoire.
Le champ XenServer affiche la somme de la mémoire allouée à dom0 et de 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.