Tag Archives: optimization

Windows 10 Optimization – Part 7: ICA


MowerWere you planning to buy that? Nope.

Of course, as you saw in my previous blog, my stupid lawn mower wheel snapped off with only 30 minutes left in the season! D’oh!

Figured I would just head to the local hardware store and buy a new one. Guess what? Hardware stores in Minnesota don’t sell lawn mowers in late October. I guess no one wants to mow snow, although it might look cool. I went home, got online and eventually ordered a new mower, which happened to be battery-powered. I still can’t believe I did it, but here is why:

Pros Cons
Lightweight
(Wonder when kids can start mowing)
Can’t mow all day on single charge
(I wouldn’t do this with gas anyways)
No more gas & oil messes Doesn’t look very manly
No more winterizing mower Doesn’t look very manly
Quiet
(No more ear protection)
Doesn’t look very manly

So in the end,

  1.     I wasn’t planning to buy a lawn mower
  2.     I definitely wasn’t planning to buy a battery-powered lawn mower
  3.     I wasn’t planning to write another portion for the Windows 10 optimization series

This portion of the optimization series was not in my original plan because it was not a specific change to the underlying operating system, but should that matter? Originally, I thought yes it does matter, which is why I wasn’t going to include it in the series. But remember, the entire time we talked about different optimizations, we always came back to the

XenApp best practice of:

For the best combination of user experience and resource consumption, optimize appropriately

We followed this for

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

So, why not look at ICA?

First, take a look at Mayunk Jain’s blog on Why you should care about HDX.

Ok, I’m sold. So let’s do it.

Optimization Description
High Server Scalability This template balances user experience and server scalability. It offers a good user experience while increasing the number of users you can host on a single server. This template does not use video codec for compression of graphics and prevents server side multimedia rendering.

That’s all I have to do? That’s too easy for me. If you look into this policy template, you see the following being done to ICA (Full list of changes are contained in the HDX Policy Template paper)

Policy Setting
Use video codec for compression Do not use
Target frame rate 16
Target minimum frame rate 8
Visual quality Medium
Desktop Wallpaper Prohibited
Menu animations Prohibited
Optimization for Windows Media multimedia redirection over WAN Prohibited
Windows media fallback prevention Play all content only on client
Flash video fallback prevention Only small content
Multimedia conferencing Prohibited
Audio quality Medium-Optimized for speech
Auto-create client printers Auto-create the client’s default printer only
Universal print driver usage Use universal printing only
Universal printing optimization defaults Image compression = Standard quality

Based on this, we optimize server density by slightly reducing the quality of the experience. Seems like a fair trade-off (although not having my favorite background picture on my desktop would upset me).

Note: Some of these Citrix policy settings can be drastic if your users are on the WAN.  For example, the “Optimization for Windows Media multimedia redirection over WAN” will degrade the user experience for WAN users.  If users will access resources via the WAN, use the “Optimized for WAN” Citrix Policy as the starting point.

BTW, I’m open for suggestions on how to make my mower more manly looking. I’m thinking a beer holder or racing stripes might help.

Note: The complete Windows 10 optimization blog series

 

Advertisements

Windows 10 Optimization – Part 6 – Release


IMG_0754I look forward to winter arriving because it means I’m done mowing the yard for 5-7 months. So you can imagine how excited I was when I was mowing my yard for the final time of the season. I could see the end in sight. I was beginning to think about what I would do with my extra 2 hours of time every weekend.

Almost there. Almost there.

Ummm, why is my mower not moving?

Why is it dragging on the ground?

HEY! Where did my wheel go?

Are you freaking kidding me?

With 30 minutes left of mowing for the season, my wheel fell off. And I don’t simply mean it fell of.  It snapped. And it wasn’t a cheap piece of plastic.  A good sized piece of metal snapped (I guess I’m just too strong).

No matter how far you get, how much you do, it can all be for nothing. As we’ve seen, Windows 10 provides us with many different avenues for optimization. We’ve gone through

  1. Default apps
  2. Services
  3. Scheduled tasks
  4. User Interface
  5. Runtime

All while trying to follow our XenApp best practice of:

For the best combination of user experience and resource consumption, optimize appropriately

And at the end, once we’ve optimized and installed our apps, we have one last thing to do before we are complete and ready for user testing is to optimize the image itself. The image optimization recommendations are manual, but are worthwhile. They include:

Optimization Description
Antivirus definitions If antivirus is installed and running within the virtual desktop, updating the definition file will prevent all desktops from updating on first boot up.
Windows update It is typically advisable to have the latest Windows 10 updates and security fixes before rolling out the image into production. Just remember that if the Windows Update service was disabled, it must be re-enabled to run the update. And if you had to enable it in order to run Windows Update, don’t forget to re-disable it.
App updates Many applications have integrated auto update functionality. These applications should be updated, then the auto update functionality should be disabled.
Disk defragmenter The disk might have become fragmented during installation and configuration, which will lead to less performance. Defragmenting the disk before rolling out will give better performance and reduce storage utilization.

Note: The complete Windows 10 optimization blog series


Daniel (Follow @djfeller)
XenApp Best Practices
XenApp Videos

Windows 10 Optimization – Part 5 – Runtime


The difference between laziness and ingenious is in the eye of the beholder. For example, operating my telescope can almost all be done remotely. I do have to go outside and manually roll off the roof of the shed but after that, I can connect to my PC remotely and control my telescope, my camera, my focuser and my guide scope.

Some people say I’m lazy, but it gives me a much better experience. Some of the clearest and most stable skies are in the winter. But when the temperature is -20F (even 0F) I can’t be out there for too long. And when I need to focus the telescope, it is a struggle to do so while wearing gloves (and painful).

These optimizations allow me to get more use out of my telescope, but it did take time to develop (Even though it is winter, my PC is not a bear, no hibernation allowed).

And the Windows 10 optimizations will allow us to get more use out of our virtual desktop. So far, we’ve gone through

  1. Default apps
  2. Services
  3. Scheduled tasks
  4. User Interface

And all the while, we’ve tried to stick to our XenApp best practice:

For the best combination of user experience and resource consumption, optimize appropriately

The next batch of optimizations are focused those runtime optimizations that don’t directly impact the user, but will provide better efficiencies.

Commands

Optimization Configuration
Disable hibernate Powercfg -h off

Registry updates

Optimization Configuration
Disable NTFS Last Access Timestamps [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlFileSystem]

“NtfsDisableLastAccessUpdate”=dword:00000001

Disable Memory Dump Creation [HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCrashControl]

“CrashDumpEnabled”=dword:00000000

“LogEvent”=dword:00000000

“SendAlert”=dword:00000000

Disable default system Screensaver HKEY_USERS.DEFAULTControlPanelDesktop

“ScreenSaveActive”=dword: 00000000

Disable Background Disk Defragmentation [HKEY_LOCAL_MACHINESOFTWAREMicrosoftDfrgBootOptimizeFunction]

“Enable”=”N”

Disable Background Auto-Layout [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionOptimalLayout]

“EnableAutoLayout”=dword:00000000

Disable the Windows 10 First

Logon Animation

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem]

“EnableFirstLogonAnimation”=dword:00000000

Increase Disk I/O Timeout to 200

seconds

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesDisk]

“TimeOutValue”=dword:000000C8

Note: The complete Windows 10 optimization blog series

Daniel (Follow @djfeller)
XenApp Best Practices
XenApp Videos

Windows 10 Optimization – Part 4 – User Interface


afterbeforeI think I create my to-do lists wrong. I never feel like I’m making any progress. For example, one item on my to-do list was “Fix sailboat rudder”. It was looking pretty gnarly, plus my tiller broke, which made for an interesting sail back to the mooring.

This one item on my list took me almost 2 weeks to complete! Talk about not making any progress. What I should have done is break the tasks down into small chunks like

  1. Remove rudder hardware
  2. Sand
  3. Fill cracks/holes
  4. Sand and clean
  5. Paint first coat
  6. Sand and clean
  7. Paint second coat
  8. Sand and clean
  9. Paint third coat
  10. Sand and clean
  11. Paint fourth coat
  12. Sand and clean
  13. Paint fifth coat
  14. Sand and clean
  15. Paint sixth coat
  16. Reattach rudder hardware

Now I don’t feel so bad that it took so long.

I’m beginning to feel the same way about this Windows 10 optimization blog. It was a good idea, but WOW, there are quite a few things to cover. So far, we’ve gone through

  1. Default apps
  2. Services
  3. Scheduled tasks

And remember, although it goes without saying, but I’ll say it anyway, adhere to our XenApp best practice:

For the best combination of user experience and resource consumption, optimize appropriately

This batch of optimizations are on the user interface optimizations.

Optimization Configuration
Disable default system Screensaver HKEY_USERS.DEFAULTControlPanelDesktop

“ScreenSaveActive”=dword: 00000000

Disable the Windows 10 First

Logon Animation

[HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem]

“EnableFirstLogonAnimation”=dword:00000000

Hide Hard Error Messages [HKEY_LOCAL_MACHINESystemCurrentControlSetControlWindows]

“ErrorMode”=dword:00000002

Settings “Visual Effects to Custom” [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerVisualEffects]

“VisualFXSetting”=dword:00000003

Disable “Show translucent selection rectangle” [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced]

“ListviewAlphaSelect”=dword:00000000

Disable “Show shadows under windows” [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced]

“ListviewShadow”=dword:00000000

Disable “Animate windows when minimizing and maximizing” [HKEY_CURRENT_USER ControlPanelDesktopWindowMetrics]

“MinAnimate”=”0”

Disable “Animations in the taskbar” [HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerAdvanced]

“TaskbarAnimations”=dword:00000000

Disable “Enable Peek” [HKEY_CURRENT_USERSoftwareMicrosoftWindowsDWM]

“EnableAeroPeek”=dword:00000000

Disable “Save Taskbar Thumbnail Previews” [HKEY_CURRENT_USERSoftwareMicrosoftWindowsDWM]

“AlwaysHibernateThumbnails”=dword:00000000

Disable “Smooth edges of screen fonts” [HKEY_CURRENT_USER Control PanelDesktop]

“FontSmoothing”=”0”

Disable the rest of the visual effects [HKEY_CURRENT_USER Control PanelDesktop]

“UserPreferencesMask”=RegBin: “90,12,01,80”

Disable cursor blink rate Disable “Cursor blink”

[HKEY_CURRENT_USER Control PanelDesktop]

“CursorBlinkRate”=”-1″

Disable Internet Explorer First Run

Wizard

[HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftInternetExplorerMain]

“DisableFirstRunCustomize”=dword:00000001

Reduce menu show delay [HKEY_CURRENT_USERControlPanelDesktop]

MenuShowDelay”, “0”

Now all i have to do is wait until May before I get to put the boat back in the water.

Note: The complete Windows 10 optimization blog series

Daniel (Follow @djfeller)
XenApp Best Practices
XenApp Videos

Windows 10 Optimization – Part 2 – Services


Note: New article on Services Optimization for VDI posted that includes the Anniversary (Build 1607) and Creator (Build 1703) updates. This post is only for the original (Build 1511) release.

In the Windows 10 Optimization – Part 1, I mostly focused on those applications which come pre-installed. Removing the apps shouldn’t help us get better server density, unless the users are spending all day watching videos or interacting with Xbox. Mostly, removing unneeded applications will create a cleaner image from which we can build our master image.

In this part, I want to take a closer look at Windows 10 services. Are there any that we can shut down to make the operating system consume less resources? Will it impact the experience? And while we are looking at services, let’s keep in mind our XenApp Best Practice

For the best combination of user experience and resource consumption, optimize appropriately

And maybe we should add “optimize responsibly” when it comes to services. The more you monkey with the services, the more likely you will experience application or user issues.

First, these services are running, by default, and can be stopped and disabled (Caution: Disabling these services can result in applications not working appropriately and will increase troubleshooting time).

Service Name Default State Default Status Notes
Background Intelligent Transfer Service Automatic (Delayed Start) Running Set default state to “Manual” as 3rd party software might require the service.
Diagnostic Policy Services Automatic Running
Diagnostic Service Host Manual Running
Diagnostic System Host Manual Running
Diagnostics Tracking Service Automatic Running
Function Discovery Provider Host Manual Running
Function Discovery Resource Publication Manual Running
Home Group Provider Manual (Trigger Start) Running Not used in VDI environment
Security Center Automatic (Delayed Start) Running
Shell Hardware Detection Service Automatic Running Supports AutoPlay, which is not typically used in VDI.
SSDP Discovery Manual Running Not typically used in corporate environments.
SuperFetch Automatic Running Can enable for dedicated desktops
Themes Automatic Running This will impact the user experience
Windows Connect Now – Config Registrar Service Manual Running Not required in VDI
Windows Search Automatic (Delayed Start) Running Consider disabling. Will have a high impact on server density.

Second, these services are not running, but they are set to Manual or Manual (Trigger Start). Although they are not running, disabling them will prevent their accidental execution in a VDI environment. (Caution: Disabling these services can result in applications not working appropriately and will increase troubleshooting time).

Service Name Default State Default Status Notes
AllJoyn Router Manual (Trigger Start) Stopped
Application Layer Gateway Service Manual Stopped Not needed for VDI environments.
BitLocker Drive Encryption Service Manual (Trigger Start) Stopped Drive encryption not typically used in VDI environments.
Block Level Backup Engine Service Manual Stopped Windows backup not typically used in VDI.
Bluetooth Hands free Service Manual (Trigger Start) Stopped Not typically used in VDI.
Bluetooth Support Service Manual (Trigger Start) Stopped
BranchCache Service Manual Stopped Used for network savings to a WAN and not typically needed in VDI
Computer Browser Service Manual (Trigger Start) Stopped
Encrypting File System Service Manual (Trigger Start) Stopped
Fax Service Manual Stopped
Home Group Listener Manual Stopped Not used within corporate environments.
Internet Connection Sharing (ICS) Manual Stopped Not used within VDI environments.
Offline Files Manual (Trigger Start) Stopped
Optimize Drives Manual Stopped Should only optimize in the master image
Retail Demo Manual Stopped
Sensor Monitoring Service Manual (Trigger Start) Stopped
UPnP Device Host Service Manual Stopped
Windows Error Reporting Service Manual (Trigger Start) Stopped Disable if logs are not being gathered and analyzed
Windows Media Player Network Sharing Manual Stopped Not typically used in VDI environments.
Windows Update Manual (Trigger Start) Stopped Only update the master image.
WLAN AutoConfig Manual Stopped Not typically used in VDI environments.
WWAN AutoConfig Manual Stopped Not typically used in VDI environments.
Xbox Live Auth Manager Manual Stopped Not typically used in VDI environments.
Xbox Live Game Save Manual Stopped Not typically used in VDI environments.
Xbox Live Networking Service Manual Stopped Not typically used in VDI environments.

IMPORTANT

If these services are disabled in the master image, it will be more difficult to effectively manage the master image. For example, if Windows Update is disabled in the master image, an administrator will be required to re-enable the Windows Update Service BEFORE trying to run Windows Update. The administrator will then have to remember to disable Windows Update when the update process is complete.

It is advisable to use a Group Policy to disable the services and apply the policy onto to the VDI-based desktop objects.

And remember our XenApp Best Practice:

For the best combination of user experience and resource consumption, optimize appropriately

If you are unsure about a service, LEAVE IT ALONE!

Note: The complete Windows 10 optimization blog series

Daniel (Follow @djfeller)
XenApp Best Practices
XenApp Videos


Windows 10 Optimization – Part 1 – Apps


Note: New article on Default App Optimization for VDI posted that includes the Anniversary (Build 1607) and Creator (Build 1703) updates. This post is only for the original (Build 1511) release.

And we all know from Windows 7, optimization guides for VDI made a substantial, positive impact on server density, but will the same hold true for Windows 10?

As part of the practice of optimizing a Windows 10 image, we also must remember one of our XenApp best practices:

XenApp Best Practice #2: For the best combination of user experience and resource consumption, optimize appropriately

The first part to Windows 10 optimization is to look at all of the “free” apps we get with a fresh installation. I just installed a fresh copy of Windows 10 Enterprise and there are well over 50 applications already in my start menu, many of these are the system apps that we definitely want to keep like PowerShell and Command Prompt, but what about 3D builder, Bing Finance, Get Started, etc?

So, look at the Windows 10 list of default apps by running the following PowerShell command:

Get-ProvisionedAppXPackage -Online|Select DisplayName

The applications listed will be provisioned to each and every user that logs on with this image.

What to keep and what to cut? And will it make a difference in terms of user experience and server density? If the app isn’t used, leaving it on the system won’t hurt, or will it? Look at Task Manager

As you can see, I’ve never started the Weather app, but it has consumed some resources (albeit, very small). And what happens if the user starts the app? They will consume even more. So what do you cut?

First, let’s remove the easy ones. These are the apps that we have no good reason why a user would run this application at work and/or doing so would significantly impact server resources:

  • Microsoft.3DBuilder
  • Microsoft.Getstarted
  • Microsoft.MicrosoftOfficeHub
  • Microsoft.MicrosoftSolitaireCollection
  • Microsoft.People
  • Microsoft.SkypeApp
  • Microsoft.WindowsCommunicationsApps (Mail & Calendar)
  • Microsoft.XboxApp
  • Microsoft.ZuneMusic
  • Microsoft.ZuneVideo

That still leaves us with quite a few more apps. And for each one, you have to decide if you want users to have this app or not. And if you believe that removing the Bing Sports app will prevent users from checking on their latest sports teams, you are sadly mistaken; they still have a web browser. So for this list of apps, the decision is yours:

  • Microsoft.BingFinance
  • Microsoft.BingNews
  • Microsoft.BingSports
  • Microsoft.BingWeather
  • Microsoft.Office.OneNote
  • Microsoft.Windows.Photos
  • Microsoft.WindowsCamera
  • Microsoft.WindowsMaps
  • Microsoft.WindowsPhone
  • Microsoft.WindowsSoundRecorder

And finally, for the apps you should keep, our list grows quite short:

  • Microsoft.Appconnector
  • Microsoft.WindowsAlarms
  • Microsoft.WindowsCalculator

Seriously, do you really want to remove the calculator? BTW, if you haven’t looked at Calculator in Windows 10 yet, do so. Microsoft added a lot of functionality to the app. Now I can quickly tell you that 100 centimeters per second equals 2.237136 miles per hour, or almost equal to 1 meter per second, 1.94 knots, 3.28 feet per second or 11.19 turtles ?

So removing these apps will only help server density if they are used, but then removing an app that is used will hurt the user experience.

For the best combination of user experience and resource consumption, optimize appropriately

Note: The complete Windows 10 optimization blog series

Daniel (Follow @djfeller)

XenApp Best Practice #2: Optimize


On many moonless evenings, I will be outside, next to my telescope snapping pictures of clusters, nebula and galaxies for my astrophotography hobby. But there is a balance of creating a great image vs just wasting time. Once it gets past 2am or the temperature drops below 0 Fahrenheit, I’m done. But do I have enough pictures to create an OK photo or a great photo?

You see, in order to take a photo of deep sky objects, you need to let your camera capture a lot of light by keeping the shutter open for many minutes at a time. Of course, at the same time, you also build up noise on the imaging chip.Here is an example of a single, 90 second image of M27 – The Dumbbell Nebula

L_0055_ISO1600_180s__67F

If you take and stack multiple images together, you increase the signal while reducing the noise. This is a stack of 29 frames, each 2 minutes in length for a total of 58 minutes

M27 - The Dumbbell Nebula

The image got quite a bit clearer. The signal got stronger and the noise was reduced.  Of course, the more images you take and stack, the stronger signal you achieve, but the noise is only reduced by the square root of the number of images. Don’t worry, I’m not going to go into the math for this because this graph makes the concept very clear

Untitled

As I take more frames, the noise decreases. But in order to have the noise drop by another factor, I have to take many, many, many more pictures. Now I will spend hours of time capturing the extra images, processing the images and all for a minimal improvement in image quality. And while I’m outside using the telescope, I run the risk of getting frost bite (true story), going into hypothermia or get eaten by a bear a wolf or a moose (Yah sure you betcha. don-chya-no I in da Minnesoda)

The same concept holds true for XenApp and XenDesktop deployments. You can optimize and then you can optimize.

There are hundreds of ways you can better optimize XenApp. Some of these are easy, proven and will have a noticeable, positive impact on either the user experience or resource utilization. But there becomes a point of diminishing returns. For example, what benefit will I get if I disable a Windows service? Most likely, not much. And in fact, the more you tweak, the greater the possibility of doing something hazardous to your system’s health. I’ve heard many times that someone turned off some innocuous Windows service only to find out a few months later that a new application or update requires that service.

Does this mean stick with the default configuration? OMG NO.

Start with the big items. Start with those items that are proven and have been shown to improve the experience or reduce utilization without potentially harming the system stability. I’m talking about things like

  1. Provisioning Services RAM Cache: This will not only reduce storage utilization, but it will actually improve the user experience.       In the simplest terms I can provide… Disk is slow, RAM is fast. Use RAM. ?
  2. Microsoft Lync/Skype for Business optimization: As we see more people make video calls with Lync and Skype for Business, we see a hit on our processor. Using this XenApp/XenDesktop feature, we are able to drastically reduce resource consumption on our host servers.
  3. Session Prelaunch: Logon complaints might be one of the most common issues for any system, and I’m not even talking about XenApp/XenDesktop. But at least with XenApp, we can overcome the logon delays with Session Prelaunch
  4. Policy Templates: XenApp and XenDesktop have a very powerful policy engine, allowing you to match the user experience with the scenario. If you are external, you get this, if you are external on this device with this configuration, you can do that, if you belong to this group, you can do something else, if you are on this subnet, this desktop group, have this tag, then you get this config, and if your iOS device is jailbroken, you can only do this one thing. It is very powerful, which means many implementations don’t configure anything. Again, a great starting place is to use the latest policy templates in XenApp & XenDesktop 7.6 Feature Pack 3, as they are tailored for a specific use case.

Now don’t get me wrong, you can go and tweak the system as much as your heart’s desire, but at a minimum, you should focus on those items that can have a big impact.

XenApp Best Practice #2: For the best combination of user experience and resource consumption, optimize appropriately

Daniel (Follow @djfeller)
XenApp Best Practices
XenApp Videos