Microsoft Office 2016 Impact on XenDesktop Scalability

A day doesn’t go by when I don’t open up at least one Microsoft Office application.  Even on weekends, when I’m not working, I usually open at least one application.

It should be of little surprise that Microsoft Office is one of the most used set of applications in many RDS/VDI deployments.

But what impact does Microsoft Office have on overall single server scalability?

How does the impact change as we move users from Office 2010 to 2013 and onto 2016?


As you can see, single server density decreases.

  • Office 2010 gives us the best scalability.
  • Office 2013 reduces single server density by 20% when compared to Office 2010
  • Office 2016 reduces single server density by 25% when compared to Office 2010

If you’ve followed the blog series on Windows 10 scalability, then remember that those numbers were based on Office 2013.  If Office 2010 were used, those numbers would be higher, with Office 2016, the numbers end up being slightly lower.

Daniel (Follow on Twitter @djfeller)
XenApp Best Practices
XenApp Videos


Microsoft Windows 10, Citrix XenDesktop and Logon Time

How long does your Windows 10 logon take?

Logging into my lab, my logons felt long. True I’m not using server-level hardware that you would see in production, but my logon times felt too long because I don’t have logon scripts, complex group policy preferences, or even massive profiles. After reading the Rule of 30 blog by Nick Rintalan, I decided to investigate. I was interested in knowing if all of the Windows 10 optimizations I previously blogged about would have an impact

  1. Default apps
  2. Services
  3. Scheduled tasks
  4. User Interface
  5. Runtime
  6. Release
  7. ICA

My first test was looking at the default Windows 10 install with Provisioning Services. It took 73.5 seconds to log in. So much for the Rule of 30.

I went ahead and permanently removed many of the default Windows 10 apps. I got a login time of 67 seconds. Not bad, 8% improvement.

Time to optimize and disable many Windows 10 services. Another drop of 6% reducing my login time to 62.5 seconds.

Scheduled tasks, user interface and runtime had no effect. This isn’t surprising. Runtime optimizations would only impact the user’s interactive portion of the session. Scheduled tasks don’t run constantly. They only run from a trigger resulting from an action or a time of day.

Next, I enabled Citrix User Profile Management (UPM) and saw a 29% improvement in logon time! Wow. Before I enabled UPM, the system used local profiles, which were deleted on each session logoff. Each time the user logged in, the system had to create a new profile for the user. This is time consuming. Enabling UPM gives the user a roaming profile, which is faster than a local profile.

And finally, because I love talking about Provisioning Services, I thought I would enable the RAM Cache with Disk Overflow. I didn’t really think it would have an impact, but that couldn’t be further from the truth. Provisioning Services RAM Cache dropped logon times by another 18%!

By optimizing my OS, profiles and using Provisioning Service RAM Cache, my logon times went from 73 seconds down to 36. Not bad.

Provisioning Services Read Cache

As you can see, I’ve spoken numerous time about the Provisioning Services RAM Cache with Disk Overflow capability.

  1. Windows 10 IOPS
  2. Video Proof
  3. Reducing IOPS to 1
  4. Read/Write Ratios
  5. XenDesktop 7.5 IOPS
  6. Digging deeper into IOPS
  7. ESG Spotlight on IOPS

So yes, I like talking about this topic.  But now, I’m going to talk about something very slightly different… Cache 🙂

While I was working on capturing some images for my Citrix Synergy 2016 Tech Update session, I saw something interesting.

I started my lab, started my Provisioning Services server and launched a Windows 10 virtual desktop.  According to the Provisioning Services agent on my virtual desktop, the desktop took almost 60 seconds to boot (Just so you know, I’m working on 7200RPM spinning disks in my meager home lab, so 60 seconds is expected).

First time boot

I then started a second Windows 10 VM, using the same Provisioning Service images.  Now look at the Provisioning Services agent.

Cached boot


Instead of an almost 60 second boot time on the first VM, the second VM booted in 14 seconds! WHAT?

Look even closer at the two images.  Look at the disk throughput.  4,400KB/sec vs 18,000KB/sec.

Sorry, but my cheap disks are not that fast. So what gives?

When you boot a Provisioning Services-based VM, the VM requests the disk image from the Provisioning Services server.  The Provisioning Services server reads portions of the disk and streams it across the network.  As the Provisioning Services server reads portions of the disk image, Windows automatically stores this information in RAM (system cache), if enough RAM is available.

So when we boot subsequent target devices that use the same disk image, we get a massive boost in performance as Provisioning Services uses the information in RAM instead of reaching out to slower storage.

As i said before, Cache is Good!

Daniel (Follow on Twitter @djfeller)
XenApp Best Practices
XenApp Videos

Windows 10 IOPS

We live in a multi-dimensional world, but our analysis of Windows 10, to date, has been focused on a single aspect… single server scalability.

I think it is time for us to look at another aspect: storage.

As you recall from looking at the results of the Windows 10 vs Windows 7 Single Server Scalability, we continuously increased server density by optimizing Citrix HDX and the underlying operating system.  But what impact will these different optimizations have on storage IOPS?

First, let’s look at IOPS (average and 95th Percentile) for Windows 7 and Windows 10 without any disk optimization

Disk cache

As expected, Windows 10 has a higher IOPS impact than Windows 7.  When looking at our 95th Percentile numbers, Windows 10 is 30% higher than Windows 7 from a storage IOPS perspectivee. This means upgrading from Windows 7 to Windows 10 will require us to assess that our storage infrastructure can accommodate the new workloads or find ways to reduce the overall IOPS activity.

For those of you who have read my blogs over the years, know I love to talk about Provisioning Service RAM Caching capabilities.  When we enable this feature for Windows 7 and Windows 10, we see something dramatic

RAM Cache


Our IOPS drop by 90-95%!  These results were achieved by simply allocating only 256MB of RAM for our Provisioning Services RAM Cache per Windows VM.

So if you are thinking about migrating to Windows 10, think about how to deal with your storage performance.

and remember, even though we only focused on IOPS, we have demonstrated that optimizing storage performance directly impacts the user experience.

Daniel (Follow on Twitter @djfeller)
XenApp Best Practices
XenApp Videos