When you need to debug some issues with your current deployment, you’re probably asked to create a memory dump. When you’re deployment is a traditional VM than that’s no issue, if you are using PVS than the memory dump is probably disabled because the PVS optimization disabled it or you used the Citrix optimizer which also disables the creation of memory dumps.
Just enabling the creation of a memory dump isn’t working, you need to specify a location for the memory dump to be created. Citrix created different articles on how to create a memory dump for PVS and MCS, CTX127871 and CTX261722
PVS
When using PVS you probably enabled “Cache on RAM with overflow on disk” and added a dedicated Write Cache Disk (WCD) for the vdiskdif.vhdx file. Because all the best practices tell you to change the location of the Page file and the Log files to a dedicated disk you probably use the WCD as alternative location.
When enabling Memory Dump creation you don’t want the space on the WCD got full because the DedicatedDumpFile is created on that disk. I recommend using a separate disk just for creating the Memory Dump, I make the size of that disk 1GB bigger than the assigned memory for that VM. Because I have situations were we have 40-60 VM’s, I don’t assign a Memory Dump disk to every device, because I do not have the storage available.
After the creation of the dedicated disk for the memory dump and you reboot your VM, you will notice that the vdiskdif.vhdx is located on the new disk. To make sure this doesn’t happen anymore you need to create a file with the following name and place it in the root of the new disk: {9E9023A4-7674-41be-8D71-B6C9158313EF}.VDESK.VOL.GUID See CTX218221.
Enabling the Memory Dump
I always set the location for the Memory Dump to the E: drive, for both PVS and MCS I create a dedicated disk as mentioned earlier.
To enable the creation of the memory dump just add the following registry keys as explained within the previous mentioned articles:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\CrashControl
- AutoReboot
- CrashDumpEnabled
- LogEvent
- Overwrite
- DumpFileSize
- IgnorePagefileSize
- DedicatedDumpFile
- AlwaysKeepMemoryDump
I attached a TXT file that I always use to set it correctly, it’s at the end of this article. When you downloaded it, you need to rename it to .reg and you can merge the settings.
Creating a memory Dump
Because we mostly work with the Citrix Hypervisor (previous called XenServer), I have written down the steps to create a Memory Dump on this hypervisor. When I have to create a Memory Dump on VMware or Hyper-V I will write this down here to.
Ok, we now have a situation where you need to create a memory dump of the VM. After Identifying the VM, write down or copy the UUID.
Then run the following command within the console of the Hypervisor, where VM_UUID is the UUID you just written down or copied:
list_domains | grep -i <VM_UUID>
Then you get a Number which you have to write down as you can see in the following screenshot.
Then you run the following command, where Domain ID is the number you got from the previous step.
xen-hvmcrash [domain ID]
For this example that would be: xen-hvmcrash 239
Now the machine will crash and you can look at a BSOD within the console and after the machine rebooted you can find the Memory Dump on the E: drive. You can copy the memory dump and upload it or analyze it yourself.
When you have questions regarding these steps, please let me know.
Below the reg file, it’s a txt file within a zip file. You have to rename the txt to reg.