Tracing Citrix Provisioning Service (PVS) Target Device Boot Performance – Windows Performance Toolkit

Tracing Citrix Provisioning Service (PVS) Target Device Boot Performance – Windows Performance Toolkit

/ /
in Blog

Non-Persistent Citrix PVS Target Devices have more complicated boot processes then a standard VM.  This is because the Citrix PVS server components play a big role in acting as the boot disk.  They send UDP packets over the network to the target device.  This adds a delay that you simply cannot avoid (albeit, possibly a small one but there is no denying network communication should be slower than a local hard disk/SSD).

One of the things we can do is set the PVS target devices up in such a way that we can get real, measurable data on what the target device is doing while it’s booting.  This will give us visibility into what we may actually require for our target devices.

There are two programs that I use to measure boot performance.  Windows Performance Toolkit and Process Monitor.  I would not recommend running both at the same time because the logging does add some overhead (especially procmon in my humble experience).

The next bit of this post will detail how to offline inject the necessary software and tools into your target device image to begin capturing boot performance data.

Windows Performance Toolkit

For the Windows Performance Toolkit it must be installed on the image or you can copy the files from an install to your image in the following path:

To offline inject, simply mount your vDisk image and copy the files there:


Then the portion of it that we are interested in is “xbootmgr.exe” (aka boot logging).  In order to enable boot logging we need to inject the following registry key into our PVS Image:

Seal/promote the image.

On next boot you will have captured boot information:

To see how to use Process Monitor for boot tracing Citrix PVS Target Device’s click here.


  1. Pingback: Tracing Citrix Provisioning Service Target Device Boot Performance – Process Monitor – Trentent Tye – Microsoft MVP

  2. David 2017-02-01 5:57 am

    Hi… This is really helpful! Very good Job!

    I have some questions. If i mount the avhd (Version 2.1 fo example), is this the cumulated VHD. Or do i see the same as if i boot into it? How do you undo the changes? Simply delete the version i guess… or how do you do it?

    Cheers David

    • trententtye 2017-02-01 6:49 am

      Hi David,

      I would highly recommend you make a version (*.avhd/*.avhdx) like you see in my video before adding these entries. Get your information then delete the version.

      The reason for doing so is performance monitoring can/does/or will have an impact on your boot performance (subject to your environment). For WPT/Procmon, data collection doesn’t stop until a user logs in and executes a command; the program is xbootmgr.exe for WPT and procmon.exe for procmon. I suspect you could script something (service? scheduled task?) that executes xbootmgr.exe to stop and save the data collection automatically but I haven’t tested if that is feasible. No such option exists for Procmon.


Post a Comment

Your email address will not be published. Required fields are marked *


This site uses Akismet to reduce spam. Learn how your comment data is processed.