Seit Citrix Virtual Apps und Desktop Version 1903 gibt es den neuen Treiber für MCS, der MCSIO v2. Bei dieser neuen Version fehlen aber zwei wichtige Performancecounter "Cache memory used" und "Cache disk used", um so aktuelle Werte auszulesen. Zudem hat sich der Performancecounter Pfad von \Citrix MCS Storage Driver auf \Citrix MCS(*) geändert. Leider kann die aktuell genutzte Cache Disk Größe nicht mehr bestimmt werden, sondern nur noch die aktuelle Größe der Cache Disk Datei (mcsdif.vhdx). Ich habe ein Powershellskript entwickelt, dass mir zumindest einen schnellen Überblick des RAM- und Disk-Cache Zustands gibt.
Das Powershell Skript muss auf einem Citrix Delivery Controller und als Administrator ausgeführt werden. Zuvor muss aber der Parameter MC mit dem Namen eines Maschinenkatalogs ergänzt werden. Nach dem Ausführen wird folgendes angezeigt:
RAM-Cache = Im Maschinenkatalog festgelegte RAM-Cache Größe (max.)
Used RAM = Aktuell verwendeter RAM-Cache
Disk = Im Maschinenkatalog festgelegte Disk-Cache Größe (max.)
Used Cache = Verwendeter Disk Cache zu einem Zeitpunkt X
Used Space = Gesamt belegter Speicherplatz auf der Cache Disk
Free Space = Gesamter freier Speicherplatz auf der Cache Disk
Erklärung
Der Server CVDA28 nutzt aktuell 3.578 MB von max. 4.096 MB des RAM-Cache. Während der bisherigen Laufzeit des Servers war aber ein Überlauf in die Cache-Disk notwendig, mit 3,25 GB. D.h. zu einem Zeitpunkt X wurde ein Cache aus RAM und Disk von insgesamt 7,25 GB notwendig. Aktuell ist die Disk-Cache aber nicht in Benutzung und es wird nur noch der RAM-Cache verwendet.
Da die Cache-Disk (mcsdif.vhdx) eine dynamische Disk ist, schrumpft (compact) diese aber nicht von allein auf null, sondern behält immer den max. Wert. Im Bild verwendet aktuell kein Server die Cache-Disk und alle arbeiten nur aus der RAM-Disk. Trotzdem gab es bei allen Systemen mal einen Zeitpunkt, bei dem die Cache-Disk notwendig wurde.
Das Laufwerk, auf dem sich die Cache-Disk befindet, enthält oft zusätzliche Daten, wie umgeleitete Eventlogs, WEM-Cache, FSLogix Cache, Pagefile usw. Daher ist der verbleibende freie Speicher des Laufwerks nicht die Disk Größe minus der Cache-Disk Größe. Daher gibt es dann noch die Werte des freien (free space) und belegten (used space) Speichers.
Vollständiges Skript auf Github
https://github.com/Koetzing/Powershell-Scripts/blob/main/vda-checkcache.ps1