Optimisation du Cluster Shared Volumes avec CSV-(Block)Cache
Une des nouveautés de Windows Server 2012 au niveau du Failover Clustering est CSV-(Block)Cache, c’est à dire que l’on peut allouer de la mémoire vive en tant que cache write-trough. Cette nouvelle fonctionnalité permet la mise en cache des lectures uniquement (Read Only Unbuffered I/O) non bufferisées par le cache de Windows, ce qui améliore grandement les temps de lecture ! Il est intéressant de noter que le mécanisme de cache agit au niveau bloc et utilise la mémoire vive contrairement à d’autre solutions qui utilisent le SSD-Caching, pour information, la vitesse d’un SSD OCZ est de 1400 Mbps et la mémoire DDR3-2500 est de 20.000 Mbps !
Ce mécanisme de cache sera donc plus efficace dans des scénarios où les lectures sont prédominantes, typiquement des usages VDI mais également pour réduire « les tempêtes » de démarrage de VMs, Scale-Out File Servers, … Microsoft recommande de l »utiliser pour tous vos scénarios, a noter qu’il désactivé par défaut ! Une présentation au TechEd a démontré des gains de performances très appréciables dans un environnement VDI. Le test a été réalisé sur 5120 VMs dans un cluster 16 noeuds avec 320 VMs par noeud, le temps de boot est ainsi passé de 211 secondes à seulement 29 dont 90% bootent en moins de 40 secondes !
La recommandation Microsoft est d’attribuer 20% de la mémoire totale au CSV-Cache, les test Microsoft ont démontrés qu’à partir de 512 Mo les résultats sont déjà très bons (meilleur rapport coût ressource/performance), c’est d’ailleurs la valeur par défaut 😉 Bien entendu, selon votre pattern I/O ou votre charge (workload) vous pouvez augmenter cette valeur.
Le site YUSUFOZTRUK.INFO a réalisé des benchmarks à l’aide de IOMTER sur une VM avec un cache de 4 Go et sans, les résultats sont bons malgré l’usage d’une seule VM ! Un autre benchmark est disponible ici.
Voici les commandes pour définir la taille du cache de la fonctionnalité CSV-Cache:
(Get-Cluster). SharedVolumeBlockCacheSizeInMB = 512
Ensuite, il convient de l’activer à l’aide de cette commande:
Get-ClusterSharedVolume “Votre disque cluster” | Set-ClusterParameter CsvEnableBlockCache 1
I/O au niveau du cache:
- Cache IO Read-Bytes
- Cache IO Read-Bytes/Sec
- Cache Read
- Cache Read/Sec
I/O au niveau du disque:
- Disk IO Read-Bytes
- Disk IO Read-Bytes/Sec
- Disk Read
- Disk Read/Sec
Total I/O:
- IO Read-Bytes
- IO Read-Bytes/Sec
- IO Read
- IO Read/Sec
Je travaille actuellement en tant qu’Enterprise Architect pour le groupe CAPGEMINI. Acteur et expert communautaire reconnu depuis de nombreuses années, j’anime ce site autour des technologies Microsoft, des thématiques du Cloud, des infrastructures, … Je suis également à l’origine de nombreuses publications dans la presse IT.
Vous pouvez modifier les quantités de mémoire vive uniquement lorsque l’ordinateur virtuel est éteint mais vous pouvez modifier la mémoire tampon et la pondération à tout moment.