Tag Archives: windows 10

Optimize VDI: Windows 10 Default Apps (Original, Anniversary and Creator Updates)

With the release of Windows 10 Build 1703 (Creator Update), Microsoft added new capabilities into the base operating system that will have an impact on the user experience in a VDI implementation.

Default Apps

Microsoft expanded the list of default applications that come pre-installed within the base OS.

With each release, the number of default apps increased.

  • Build 1511: 24 Apps
  • Build 1607: 26 Apps
  • Build 1703: 31 Apps

As shown in previous tests, leaving these apps part of the base operating system directly impact user logon time and overall system density. It is generally recommended to review the list of apps and uninstall those that are not necessary for the users.

To see a list of default Windows apps, run the following PowerShell command:
Get-ProvisionedAppXPackage -Online|Select DisplayName

Color Code:

  • Green: Remove
  • Orange: Consider removing
  • Red: Keep
  • Black: App does not exist on build
Application Name Build 1511 (Original) Build 1607 (Anniversary) Build 1703 (Creator)
Microsoft.3DBuilder Remove Remove Remove
Microsoft.Appconnector Keep
Microsoft.BingFinance Consider
Microsoft.BingNews Consider
Microsoft.BingSports Consider
Microsoft.BingWeather Consider Consider Consider
Microsoft.DesktopAppInstaller Keep Keep
Microsoft.Getstarted Remove Remove Remove
Microsoft.Messaging Consider Consider
Microsoft.Microsoft3DViewer Remove
Microsoft.MicrosoftOfficeHub Remove Remove Consider
Microsoft.MicrosoftSolitaireCollection Remove Remove Remove
Microsoft.MicrosoftStickyNotes Consider Consider
Microsoft.MSPaint Remove
Microsoft.Office.OneNote Consider Consider Consider
Microsoft.OneConnect Remove Remove
Microsoft.People Remove Remove Remove
Microsoft.SkypeApp Remove Remove Remove
Microsoft.StorePurchaseApp Keep Keep
Microsoft.Wallet Remove
Microsoft.Windows.Photos Consider Consider Consider
Microsoft.WindowsAlarms Keep Keep Keep
Microsoft.WindowsCalculator Keep Keep Keep
Microsoft.WindowsCamera Consider Consider Consider
microsoft.windowscommunicationsapps Remove Remove Remove
Microsoft.WindowsFeedbackHub Remove Remove
Microsoft.WindowsMaps Consider Consider Consider
Microsoft.WindowsPhone Consider
Microsoft.WindowsSoundRecorder Consider Consider Consider
Microsoft.WindowsStore Consider Consider Consider
Microsoft.XboxApp Remove Remove Remove
Microsoft.XboxGameOverlay Remove
Microsoft.XboxIdentityProvider Remove Remove
Microsoft.XboxSpeechToTextOverlay Remove
Microsoft.ZuneMusic Remove Remove Remove
Microsoft.ZuneVideo Remove Remove Remove

Note: Office Hub is an app that changed functionality across different builds.  In early builds, Office Hub was essentially an ad for Office 365.  In the Creator build, Office Hub adds management capabilities for Office users.

Daniel (Follow on Twitter @djfeller)
Citrix XenApp and XenDesktop 7.6 VDI Handbook
XenApp Best Practices
XenApp Video


XenServer PVS Accelerator Sizing – Part 2

As you might have read, I recently ran a few XenServer PVS Accelerator tests to determine a starting point for the cache size.  This initial investigation looked at Windows 10 and Windows 2012R2 for boot and logon operations.

Looking back, I determined that I want to include three additional items

  1. Impact of a larger cache size – Increase from 2GB to 4GB RAM cache
  2. Impact of applications
  3. Impact of Windows 2016

Before I get into the results, let me explain the graphs.

  • The blue, green and orange line denotes boot, logon and steady state operations. The first time those colors appear depicts the first VM; the second time the colors appear depicts the second VM. These colors are linked to the axis on the right showing percent of cache used.
  • The solid red area graph depicts the amount of network traffic sent from the Provisioning Services server to the host.  The line should initially be large and then diminish as the cache is used. It is linked to the left axis with bytes per second.

With that understanding out of the way, let’s look at the results.

Windows 2012R2

Windows 10

Windows 2016


First, I find it interesting that Windows Server 2016 sits between Windows 2012R2 and Windows 10 in terms of cache consumption after boot, logon and steady state operations complete. This makes sense as Windows 10 and Windows Server 2016 are considered to be similar operating systems, requiring more cache than Windows 2012R2.  But it also shows that Windows Server 2016 is more optimized, with fewer extraneous apps/services as shown in the Windows 2016 Optimization guide.

Second, even though the size of the PVS Accelerator cache was doubled 4GB from 2GB from previous tests, the overall usage remained the similar.

Third, the biggest cache utilization during logon and the least during steady state. Usage matched expectations based on read/write IO ratios for boot (80% read / 20% write), logon (50% read / 50% write) and steady state (10% read / 90% write). The more unique read IO activity, the more cache utilized.

Based on this round of tests, I’m sticking with my previous PVS Accelerator cache size recommendation and adding Windows Server 2016:

  • Windows 10: 2.5GB per image per host
  • Windows 2012R2: 2GB per image per host
  • Windows 2016: 2.5GB per image per host

Daniel (Follow on Twitter @djfeller)
Citrix XenApp and XenDesktop 7.6 VDI Handbook
XenApp Best Practices
XenApp Video

Sizing Windows 10 and Windows 7 Virtual Machines

After reviewing all of the scalability tests we conducted over the past few months, I thought it was time to revisit the recommendations for sizing Windows 10 virtual machines.  I also reached out to Nick Rintalan to see if this is in line with what is currently being recommended for production environments (if you disagree, blame him 🙂 ).


A few things you will notice

  1. Windows 7 and Windows 10 recommendations are similar.  Microsoft’s resource allocation for both operating systems are similar.  The Windows 10 and Windows 10 scalability tests resulted in similar numbers.
  2. Density – Experience: For some of the recommendations, there are 2 numbers. The first is if you are more concerned with server density and the second is if you are more concerned with the user experience.  What I find curious is if you have a heavy workload, are you as concerned with server density?
  3. PVS RAM Cache: Using the RAM cache will drastically reduce storage IOPS.  This will be critical to providing a good user experience and will be taken from the total allocated RAM.  The RAM column takes the RAM Cache numbers into account.
  4. Hypervisor: There is no hypervisor identified.  Testing showed minor differences between XenServer, Hyper-V and vSphere.

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

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