Creating a Memory dump Citrix MCS/PVS and Hypervisor

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


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:


  • 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.

Getting the UUID of the VM

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.

Receiving the Domain ID (## 239)

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

Making the VM crash 🙂

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.

Upgrading Nvidia firmware

During the last couple off days I needed to update the firmware from the Nvidia Tesla T4 card in our servers. When following the installation steps provided by HPE I ran into some issues, so I decided to create a step by step guide on how to update the firmware.

  1. Download the latest firmware from your vendor
  2. Upload the RPM file to /usr/local/bin using Winscp or your favorite tool
  3. Connect using SSH to the host
    1. Browse to cd /usr/local/bin
    2. unpack the RPM file using the following command: rpm –ivh ./Tesla_T4_90.
      The RPM file name can be different when upgrading a newer version or other Nvidia card.
    3. Go to the folder where the RPM file is extracted for now this is the Tesla_T4_90. folder: cd /usr/local/bin/Tesla_T4_90.
    4. Change the permissions of the file
      chmod +x Tesla_T4_90.
    5. Make sure all nvidia kernel modules are removed
      init 3
      rmmod nvidia
    6. When you get the following error :
      ERROR: Module nvidia is in use
      run the following command:
      service xcp-rrdd-gpumon stop
      and then run:
      rmmod nvidia
    7. Now we can upgrade the firmware using the following command:
      ./Tesla_T4_90. -f
      The SCEXE file name can be different when upgrading a newer version or other Nvidia card.
      Choose -i if you would control the upgrade for every card in the host.
  4. When all the cards are upgraded you need to reboot the host and continue to the next host.

Good luck with upgrading, as you can see it’s easy.