Showing posts with label vmware. Show all posts
Showing posts with label vmware. Show all posts

Tuesday, 12 August 2014

EUC Training Options and Links



I wanted to summarise the training material available for End User Computing products from VMware. I also wanted to make sure that the latest versions available were listed together in one place. There is lot that is free.

Education Homepage: http://mylearn.vmware.com/mgrreg/index.cfm
EUC Learning Path: http://mylearn.vmware.com/mgrReg/plan.cfm?plan=47955&ui=www_edu

Before you get into any training a good place to start is to understand the VMWare EUC vision. Here is a good, recent video by Sanjay Poonen (EUC GM) that walks through this: https://www.youtube.com/watch?v=D6xeGuF2S0M


Horizon

Fundamentals

VMware Workforce Mobility Fundamentals:
Horizon View [V6] Mirage [V5] What's New:



Horizon View

Fundamentals

Horizon (with View) Fundamentals (v6.0):

Professional

Horizon (with View) Install, Configure, Manage (v6.0):

Advanced

View: Design Best Practices (v5.X):

Other Resources

Instruction Videos (v5.2): http://www.vmwarelearning.com/view/



Mirage

Fundamentals

Horizon Mirage Fundamentals (v5.X):

Professional

Horizon Mirage: Install, Configure, Manage (v4.0):

Other Resources

Instructional Videos: http://www.vmwarelearning.com/mirage/



ThinApp

Fundamentals

ThinApp Fundamentals (v5.X):

Professional

Application Virtualization with VMware ThinApp (v5):

Other Resources

Instructional Videos: http://www.vmwarelearning.com/thinapp/



Workspace Portal

Fundamentals

VMware Horizon Workspace Fundamentals [V1.8]:



vCenter Operations for View

Fundamentals

vCenter Operations Manager for View Fundamentals (v5.X):

Other Resources

VMware vCenter Operations Manager Fundamentals [V5.6]:



Monday, 8 April 2013

Min. Resource Requirements for a Horizon Workspace PoC or Lab

With the release of VMware Horizon Workspace many of us are evaluating it and testing this in our labs. When you install the vApp it creates 5 VMs each of which are allocated a certain amount of vCPU and memory which while sized for production can be overkill for some PoC and definitely lab environments.

To help with evaluating this is a resource constrained environment it is possible to reduce the resource allocation to each of the VMs after deploying the VM.

If you are only evaluating this is your lab you may be able to squeeze these settings down further to save resources. The one I would not touch is the Data-va as reducing it further is known to cause issues.

Test the changes to make sure it doesn't cause any timings issues and remember this is not supported.

Wednesday, 23 January 2013

Running Multiple Instances of the View Client

Have you ever wanted to launch multiple View instances as different users but from the same client?

I'll start by saying that this is unsupported and should not be used in production. 

This can however be very useful in set up and testing where you may want to remain logged into one desktop as an admin user and log in and out of another as a standard user.

What is supported is the use of command line parameters that you can pass to the View Client. If you open a CMD prompt and run "C:\Program Files\VMware\VMware View\Client\bin\wswc.exe" -? you get a list of the possible parameters.


This allows you to create short cuts with the following:

"C:\Program Files\VMware\VMware View\Client\bin\wswc.exe" -serverURL https://<connectionserver> -userName Test1 -domainName DEMO -password testpassword -desktopName "Pool Name"

Very useful as it stops us having to specify the test user, password, etc. each time, but we can only run a single instance of the View Client.

To run multiple instances of the View Client we can add an undocumented switch -Standalone. This allows us to have multiple instances of the View Client logged in as different users each in their own Window.


To do the equivalent on a MAC:

  • In Finder browse to Applications
  • Right click the VMware View Client and select Show Package Contents. 
  • Browse into Contents and MacOS. 
  • Double clicking on vmware-view will open a Terminal Window and launch a new instance of the View Client.


Just remember the use of the -Standalone switch and running multiple instances is unsupported.

Monday, 14 January 2013

Disconnect Idle Users in View

[Updated] Windows 7 64-bit corrections. While originally tested on Windows 32-bit there are some changes required for 64-bit Windows.


I was recently asked if there was a way to disconnect idle users from a View session. The motivation and use case was to free up shared or public thin clients so they weren't locked up and then inaccessible to other users.

I had a look around and found an excellent screensaver from GrimAdmin.com. This allows you to define an action to carry out when the screensaver kicks in and after a wait time has expired. It comes with predefined actions such as Logoff but also allows you to define an external process which allows us to call a process to disconnect the user. What was missing was an ADM template to make this easy to apply to a GPO but the author had documented the registry settings so I put one together.

There are three steps to configure this:

  1. Download and install the GrimAdmin screensaver
  2. Configure GPO personalization to enable the screensaver.
  3. Configure GPO to specify GrimAdmin actions.


Step 1

To get started, download the bits we'll need:
  • Download GrimAdmin Screensaver Operations here
  • Download the adm template here
Extract the scr file from the GrimAdmin file and install it into your desktops into the C:\Windows\Systems32 directory. In a View environment the easiest way is to copy it to the parent VM and recompose to get it on all the linked clones.

[Update] For Windows 64-bit copy the scr file to the C:\Windows\SysWOW64\ directory.

Step 2
Now we can configure our GPO to enable a screensaver, set the idle time to wait before starting the screensaver and which screensaver to run.

Under the User Configuration section browse into Polices, Administrative Templates, Control Panel, Personalization. Change your settings to match the values below.

The value for the Force specific screen saver should match the 8.3 name of the Screensaver from GrimAdmin. This should be Screen~1.scr but you can check by doing a DIR /X

[Update] For Windows 64-bit specify the whole path to the screensaver. C:\Windows\SysWOW64\SCREEN~1.SCR

Remember to set the number of seconds that you want to wait until the screensaver starts in the Screen Saver timeout. For testing I've got this quite low at 60 seconds in most environments this is going to be higher depending on how long you want to wait before considering a user idle.


Step 3

Now we need to configure the GrimAdmin Screensaver to carry out the operation we want. To start we need to add in the adm template you should have downloaded into our GPO. Right click the Administrative Templates under User Configuration and select Add. Browse to where you saved the adm template and select it.

You will now get and new section under the Classic Administrative Templates called Screensaver Operations in which we can set the various registry keys that control GrimAdmin's Screensaver.

Configure the Process that we want to run. To disconnect a user we can run the process c:\Windows\System32\tsdiscon.exe
Note that this will only disconnect the user session but will leave them logged into the View desktop.


[Update] For Windows 64-bit use c:\Windows\Sysnative\tsdiscon.exe Because the screensaver is a 32-bit process, the OS would try and redirect any call to a 64-bit process in System32 to the SysWOW64 directory by default. Using the alias Sysnative tells Windows to use System32 anyway.

Define how long we want to wait from the screensaver starting to when it executes the external process and disconnects the user.

Define a custom message to get displayed to the user warning them that they are about to get disconnected.
I use the following but use the variables and whatever will make sense to your users.

"No user activity has been detected for quite a while. You will be disconnected unless you cancel within %time_remaining% seconds."

The other settings I used was to increase the font size of the message to make it a bit more noticeable. Test this though to make sure your message fits in the window with your font size.


That's it. When the group policy is applied when the user logs they should now get the screensaver set and they should be unable to change it.

After being idle for the defined period in the Screen saver timeout they will get the following message.

This will then countdown the number of seconds defined in the Delay In Seconds. If they do nothing they will get disconnected. If they click Cancel they reset the idle clock.

Wednesday, 5 December 2012

Using Sysprep with View

Occasionally it is necessary to use Sysprep instead of Quickprep when creating a desktop pool with View. This usually is because of some legacy software requiring unique local computer identifiers (SIDs). I recently got asked about it because of some older antivirus software that needed it to centrally manage its in-OS agents.

A comparison of the two customization techniques can be found in the View Administration Guide on pages 95 and 96. KB article 2003797 gives a quick table of the differences:

FunctionQuickPrepSysprep
Removing local accountsNoYes
Changing Security Identifiers (SID)NoYes
Removing parent from domainNoYes
Changing computer nameYesYes
Joining the new instance to the domainYesYes
Generating new SIDNoYes
Language, regional settings, date, and time customizationNoYes
Number of reboots01 (seal & mini-setup)
Requires configuration file and Sysprep  NoYes

To setup and deploy a pool using Sysprep the high-level steps are as follows:

  1. Copy the Sysprep files to the vCenter server (Note that this is only required for Windows XP as Windows 7 comes with sysprep). Full details on this are in KB article 1005593.
  2. Create a Guest Customization Specification in vCenter.
  3. Add a desktop pool and tell it to use sysprep and the guest customization spec you have created.


Create a Guest Customization Specification

  • In vCenter from the Home page select the option for Customization Specification Manager.
  • Add a New customization and on the Properties page enter a name. DO NOT use a custom sysprep answer file.
  • Continue through the wizard until the Computer Name page. Set this to use the virtual machine name.

  • Step through the wizard entering license keys, administrator password, time zone, etc until you get to the Network page.
  • Make sure you leave the network at the default of typical settings. This will then use DHCP.
  • On the Workgroup or Domain page leave this as the default. Any domain / administrator information entered here is not used. Instead the VM is joined to the domain using the guest customization settings defined in the pool settings through View Manager.

  • On the last page Operating System Options make sure that the Generate New Security ID (SID) is checked. After all the whole reason we are using Sysprep is because unique SIDs are required for our use case.

  • Finish the wizard.

Add a desktop pool

  • In View Manager add a desktop pool as you would normally. The only deviation from using Quickprep comes on the last page for Guest Customization.
  • Select the Domain. This list (normally only one in most environments) is what you defined when you configured the vCenter server in View Administrator and defined the Domains for View Composer. This settings is what will control which domain is joined and which credentials are used when customizing the linked clones.
  • Select the appropriate AD container as normal.
  • Select the option to Use a customization specification (Sysprep) and select the spec you created earlier.


  • When you complete the wizard your pool should deploy although provisioning can be a bit slower than using Quickprep especially as there is an additional reboot of the linked clone required.




So what are the steps that take place when View customizes with Sysprep?

  1. Once the linked clone disks have been created, View Manager puts the VM into the Customizing state.
  2. View Manager calls the vCenter API customizeVM_Task to customize the VM with the customization specifications. 
  3. View Manager powers on the linked clone.
  4. Inside the Guest OS on the linked clone, the View Composer Agent sees that it is starting for the first time and calls NetJoinDomain with the machine password cached on the internal disk. 
  5. The machine is now joined to the domain.
  6. Sysprep is now run on the linked clone from within the guest.
  7. The  View Composer Agent waits for Sysprep to finish before notifying the View Agent that customization is complete. Then the View Agent sends a message to the View Manager server.
  8. The View Manager Server powers off the clone and takes a snapshot of the customized, powered off clone (to give us our refresh state).
  9. View Manager puts the linked clone into the Provisioned state. If the VM is then powered on, it moves into the Available state.

Full details of these steps can be found on Andre Leibovici's blog.




Friday, 30 November 2012

Assigning ThinApps by group membership using the SDK

The SDK for ThinApp recently got an update to version 4.7.3 and this prompted me to revisit login scripts I had previously written using thinreg.exe

Download from here: http://communities.vmware.com/community/vmtn/developer/forums/thinapp

The SDK offers lots of advantages over thinreg and will be faster as it does not require Windows to shell out.

The one bit of preparation we need to do is for any desktop going to register ThinApps. With a View environment this is quite straightforward as you can do the following steps to the Master or Parent VM
  1. Copy the ThinAppSDK.DLL (from the SDK download) into the Windows\System32 directory
  2. In a CMD prompt (with Administrator rights) register the DLL with: REGSVR32.EXE THINAPPSDK.DLL
This now allows us to reference ThinApp objects and carry out different operations on them. Full details on the functions are in the PDF document that comes with the SDK download. The most common operations and the ones I was interested in to replace thinreg.exe are Register and UnRegister. In a VBScript we need the following:

First we need to create an object so we can call the ThinApp commands:
 Set TAManagement = CreateObject("ThinApp.Management")

We also need to create a  variable to hold the Package while we work with it.
 Dim Package

We can now set this variable to the thinapp we are going to work with:
 Set Package = TAManagement.OpenPackage(\\server\share\Adobe Reader 9.exe)

This now allows us to Register a package with: Package.Register 1

And Unregister a package with: Package.UnRegister

I put this together into this login script 
Here's a link to download the login script. just remove the .txt extension to leave this as a .vbs file - https://sites.google.com/site/vkiltblog/view_login_sdk.vbs.txt

Save the text down in a vbs file and add it into the GPO that you should have created and linked to the OU that houses the View desktops. See my previous post on details on setting up a GPO for View: GPO's for View

You may look at the script and ask why I'm not using wildcards, why I'm checking for group membership and why I'm checking for registry entries. The simple answer is to speed up the execution of the login script and provide minimal disruption to the user on login. If we use wildcards or don't check the registry then subsequent registers will always be attempted. This can cause the screen to flash and slow down the login. I prefer to specify the thinapp, the group entitled and the registry key so we don't even attempt a register or unregister if it's not necessary. It also makes unregister's cleaner.

To make this repeatable I put the register and unregister in functions and then defined the variables to call that with.

For each application we define the following:
 ADGroup = "Adobe Reader"
 FileName = "\\server\share\Adobe Reader 9.exe"
 RegKey = "Software\Thinstall\ThinReg\Adobe Reader 9_28503025"
 CheckReg = True
 DebugMsg = False

where:
 ADGroup = The AD Group that is entitled to the app
 FileName = "Full name and path of ThinApped exe"
 RegKey = "Registry Key created when registered under HKCU"
 CheckReg = True or False, where True will check the registry to see if the ThinApp has already been registered
 DebugMsg = True or False, where True will popup message on register or unregister

We can then call the function for each application to either register, unregister or do nothing.
 RegUnRegApp ADGroup, FileName, RegKey, CheckReg, DebugMsg

You can also change the DebugMsg variable to True and you will get a pop up message on each register or unregister. You can also turn off the Registry Check by changing CheckReg to False (this is useful when registering a new application and you don't know what registry key will get created by the register). Note that when we don't check the registry each time a user logs in, we will attempt to either register or unregister based on their group membership every time.

More scripting examples can be found here.


Thursday, 26 July 2012

Disable HotPlug from virtual desktops

I was talking to a customer yesterday who was running a pilot View environment. One of the questions that came up was how to stop end users right clicking on the remove hardware icon in the system tray and removing the NIC or hard disk. Obviously removing these from linked clones is not a good thing for the user on that desktop.

  • Right-click the virtual machine and click Edit Settings.
  • Click the Options tab.
  • Click General > Configuration Parameters > Add Row.
  • Insert a new row with the name devices.hotplug and value false.

I would normally do this to the master VM so all the linked clones have this setting.

There is a VMware KB article covering this (1012225): http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&docType=kc&externalId=1012225

Tuesday, 26 June 2012

Tuning PCoIP


I've been working with a few customers and partners recently on View deployments where we needed to tune PCoIP to particular network scenarios or to cope with limited bandwidth and try and squeeze the best performance out of the available resources. Normally I would start by tuning PCoIP parameters manually using the PCoIP tuning guide but I thought I would document the most common settings and what has worked well for many installations.


The bit to look at in the guide is from page 28 onwards with regard to tuning for the locations or sites with constrained bandwidth: http://www.vmware.com/files/pdf/view/VMware-View-5-PCoIP-Network-Optimization-Guide.pdf


One of the first changes I would have traditionally made was to reduce the frame rate to 15 (you can go considerably lower but test in increments to make sure you are still getting a good user experience) but there are lots more options and considerations that I will cover below.


Back to Basics: Tweak the User Interface Visual Effects

Before we get into tuning the protocol it’s worth starting with the desktop image and ensuring that we are not causing extra screen changes and thus additional traffic.

  • Set Visual Effect to Best Performance
  • Disable Desktop Wallpaper
  • Disable Screen Saver or set it to None
  • Revert back to the classic Start menu
  • Disable Themes (if possible)
  • Disable additional fading
  • System icon and text changes
  • Disable any unnecessary Windows services - Help and Support, Windows Audio (if you don't need sound), Wireless, Remote Registry (be careful, though: some applications need this service, so make sure you properly test), Error Reporting and any other service that is not needed

A good place to start on this is the Optimization Guide for Windows 7. This will help you tune down the visual effects and also disable unnecessary services that would otherwise consume resources. There are even a couple of attached scripts that you can use to make all the changes for you.




Using a GPO

There are a few ways that you can change the PCoIP parameters, but to be clear we are going to make these changes on the virtual desktop(s).
  1. Use a Group Policy (GPO)
    • For local isolated changes to a specific VM, copy this file to c:\windows\inf within the windows VM and implement using your group policy editor.
    • Larger deployments can apply the pcoip.adm to an Organizational Unit (OU), or apply the settings to the template prior to deployment
  1. Apply the setting directly to the registry.

Usually I would recommend using a GPO applied to an OU. The GPO files are located on the View Connection Server in C:\Program Files\VMware\VMware View\Server\Extras\GroupPolicyFiles. Copy them over to somewhere you can get to from your Group Policy Admin tool and add the ones you need into the group policy you are applying to your desktops.





Edit the Group Policy you want to apply these to and expand the Computer Configuration until you see the Administrative Templates. Right click on it and add in the templates you copied over.




If you want to make the changes directly to the registry of the virtual desktop (the master VM may make more sense), you can do so at the following location in the View desktop:
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Teradici\PCoIP\pcoip_admin_defaults\



PCoIP Tuneable Parameters

Build-to-Lossless - pcoip.enable_build_to_lossless

If you want to maximize bandwidth savings vs. lossless image quality, this gives you the option to disable PCoIP build to lossless in favour of build to perceptual lossless. 

When BTL is disabled, PCoIP rapidly builds the client image to a high quality, but lossy image. By default, if the image remains constant, PCoIP would continue to refine the image in the background until it reaches a fully lossless state. Stopping the build process when the image reaches the "perceptually lossless" stage can deliver significant bandwidth savings -- for typical office workflows, we are seeing around a 30% bandwidth reduction.

Be careful when disabling Build-to-Lossless if your users require high image quality or there is a need to provide lossless imaging (e.g. medical, graphic design).



PCoIP Network Parameters

Maximum PCoIP Session Bandwidth (Kbps) - pcoip.max_link_rate

Specifies the maximum bandwidth, in kilobits per second, in a PCoIP session. The bandwidth includes all imaging, audio, virtual channel, USB, and control PCoIP traffic.

When this setting is disabled or not configured on an endpoint, the endpoint imposes no bandwidth constraints. When this setting is configured, the setting is used as the endpoint's maximum bandwidth constraint in kilobits per second.

  • Set the maximum bandwidth on a user to prevent them from impeding other users productivity.
  • Be careful not to set too low since the ability to peak is key to desktop performance


  • Setting applies to the soft host only.
  • Value is in Kbps
  • Ranges between 100 and 1,000,000; and must be set in increments of 100
  • Default value is 900,000.
  • Setting to 0 = no bandwidth constraints

PCoIP Session Bandwidth Floor (Kbps) - pcoip.device_bandwidth_floor

This setting determines the lower bound PCoIP will throttle down to when bandwidth is required but there is congestion detected on the network. PCoIP will still concede bandwidth below this value when it is not needed. The default value is 0, which means that no minimum bandwidth is reserved.


PCoIP session MTU (bytes) - pcoip.mtu_size

Typically, you do not have to change the MTU size. Only change this value if are seeing packet fragmentation due to VPN or other encapsulation.  This setting applies to the server and client. If the two endpoints have different MTU size settings, the lowest size is used.

If this setting is disabled or not configured, the client uses the default value of 1300 bytes in the negotiation with the server.


PCoIP Image Quality Levels

Minimum Image Quality (30-100) - pcoip.minimum_image_quality

This determines the lower bounds of image quality “compression” when network congestion triggers increased build-to-lossless.
The default value here is 50 (from a range of 30 to 100) and in most deployments this value has worked well.
Use this to balance image quality and frame rate for limited-bandwidth scenarios. A lower value allows higher frame-rates, but with a potentially lower quality display. A higher value provides higher image quality, but with potentially lower frame rates when network bandwidth is constrained. When network bandwidth is not constrained, PCoIP maintains maximum quality regardless of this value. Find a good medium that works for you.

Maximum Initial Image Quality (30-100) - pcoip.maximum_initial_image_quality

A lower bound on the image quality that PCoIP tries to deliver “immediately” when screen updates occur. The higher this setting the more “pixel perfect” initial screen updates will be at the cost of higher bandwidth peaks.

The range is 30 to 100 and the default value is 90. In most deployments, values have varied between 70 and 90. This setting behaves as follows:
·         A higher initial image quality means that larger bandwidth bursts will be used when refreshing or updating a larger end-user screen change
·         A lower initial image quality means that less bandwidth bursts will be used when refreshing or updating a larger end-user screen change:


Maximum Frame Rate (1-120) - pcoip.maximum_frame_rate

This setting determines the maximum frequency of client screen updates. Lower values will reduce bandwidth when there are high rates of motion that need to be rendered.
·         A higher value can use more bandwidth but provides less jitter, which allows smoother transitions in changing images such as video.
·         A lower value uses less bandwidth but results in more jitter.

The default value is 30, but you could safely drop this to 15 unless you need an HD movie experience. This setting deals with the frequency of frames, or how many frames per second at which your end-user screen refreshes. Of course, the higher the rate the better the experience; the lower the rate the less data you send across the wire. So, be sure to test:

Audio

PCoIP Audio Policy (1/0) - pcoip.enable_audio

Determines whether audio is enabled in PCoIP sessions. Unless audio is explicitly needed, this setting should be disabled to save significant bandwidth and improve the user experience:

PCoIP Session Audio Bandwidth Limit (Kbps) - pcoip.audio_bandwidth_limit

This setting will limit the maximum bandwidth that audio traffic can consume. PCoIP can still dynamically adjust this setting down based upon current network conditions. Setting this value below 50Kbps may result in no audio being transmitted at all.


PCoIP Encryption Algorithm (1/0)

pcoip.enable_salsa20_256_round12
pcoip.enable_aes128
Some have had better performance setting this to Salsa256 than to AES128, but be sure to run your own tests and validate:


Client-side Cache - pcoip.image_cache_size_mb

This allows you to configure the PCoIP client image cache size (default of 250MB). The client uses image caching to store portions of the display that were previously transmitted and reduce the amount of data that is retransmitted (min 50 MB to a max of 300 MB.)


Network Best Practice


  • PCoIP is a real-time protocol so ensure that it gets proper QoS/CoS classification
    • Classify PCoIP traffic as real-time interactive, typically just below VoIP
    • Insure that QoS/CoS mappings are preserved across WAN links
  • Utilize the View Security Server for remote access as it is the most efficient remote access solution.
  • If you must use VPN, avoid SSL-based solutions. Use IPSEC, L2TP/IPSEC, GRE, DTLS VPN solution that support UDP tunnelling.
  • Insure that PCoIP is bypassed on all WAN acceleration devices.
  • Insure that PCoIP is bypassed or trusted on any IDS/IPS devices in the network path and in endpoint protection software.
  • Prefer fixed bandwidth WAN circuits over “burstable” circuits. Make sure you understand your use case well and perform accurate measurements to allow for proper circuit sizing.
  • If you must use “burstable” circuits insure that the CIR is high enough to cover all existing high priority traffic and the total average traffic for all PCoIP sessions.
    • PCoIP may see high packet loss when it consumes burst bandwidth.
      • Carriers tag burst packets as “out of contract” and low priority.
      • May artificially limit the total bandwidth PCoIP “sees” across the circuit.
  • Utilize WRED for congestion avoidance:
    • Avoid tail-drop.
    • Do not configure WRED on the physical interface as it will override all other QoS policies.
  •  Avoid use cases where round-trip latency is greater than 300ms.
  • Do not utilize per-packet load balancing as this will cause out of order packet delivery leading to PCoIP perceived packet loss.
  • Insure that affinity or session “stickiness” is enabled.


PCoIP Tuning Guidelines

  • Disable Build-to-lossless
    • First and easiest way to shave 10-15% bandwidth.
    • Only enable when there is a defined requirement for pixel perfect accuracy (Medical, CAD/CAM, Graphic Design)
  •  Configure the maximum session bandwidth
    • For low bandwidth links set the limit at or slightly below (10%) the maximum link rate.
    • Even on the LAN it may make sense to apply a limit.
  •  Configure the session floor when:
    • PCoIP is experiencing packet loss but the network link has plenty of headroom
      • May not always improve user experience
    • Packet loss is seen on WiFi or 3/4G networks
    • Be careful to avoid unintentional oversaturation
  • Configure the maximum frame rate
    • In almost all cases the maximum frame rate can be reduced to 18-20fps with little noticeable impact.
    • Settings below 15fps may be noticeable in use cases which require rich media
    • Task workers without media requirements can often utilize settings as low as 6-8fps without significant visual impact
    • Examine the PCoIP Server log files and WMI Image stats to determine average frame rate for desired use case:
  • Configure the maximum initial image quality
    • When on a WAN link with constrained bandwidth reduce this setting to 60-70%
    • For use cases that use large amounts of multimedia/video – large impact
    • Setting this value too low may result in noticeably “fuzzy” or “blurry” images
  • Configure the minimum image quality:
    • This value must be below the maximum initial image quality setting
    • The default value of 50% is acceptable for most cases
  •  Configure the audio bandwidth limit:
    • For use cases that utilize significant amounts of audio - legal/medical transcription for example – reducing audio bandwidth may increase user density
    • Audio bandwidth limit is a target, not a literal value
    • Vary the audio bandwidth limit between 450Kbps – 50Kbps until the desired mix of bandwidth savings and audio intelligibility is achieved
  •  Configure the Client-side cache size:
    • When using thin client devices with limited RAM using a larger cache size than the device can support may lead to dropped sessions
    • Reduce the cache size until connections are unaffected, typically 50-100MB

Summary


  • Always start with the basics before resorting to PCoIP tuning
    • Majority of PCoIP issues are external to the protocol
    • Optimize VDI Base image
    • Insure proper implementation of network configuration QoS/CoS, UDP tunneling through VPN, etc.
    • Proper network sizing for desired use case.
  • Utilize the information in the PCoIP logs and real-time WMI counters to determine where the trouble spots are:
  • Determine proper settings to adjust:
    • Vary one item at a time, make as few changes as possible
    • Test, test, and re-test against the intended use case. Utilize a repeatable set of user actions and/or a scripted set of actions to validate the impact of changes


Monday, 25 June 2012

PCoIP Ports and Traffic



[EDIT] I've updated this for View 5.1 which made one change in that the Security Servers and Connection Servers instances negotiate IPSec and respond on UDP 500. (I also made a typo on the USB port).

I’ve been asked by a few people recently what ports need to be opened between different components in a View environment using PCoIP.
All of this information is avaliable in the View Architecture Planning Guide but I have found it useful to boil this down to a couple of simple diagrams.
Internal LAN connections.



External Clients connecting through a PCoIP gateway.


Speeding Up Provisioning Linked Clones in View 5.1


I’m not going to go into detail on why changing the way that View provisions and creates linked clones with Composer is a good idea. If you are running on recent hardware with a well designed solution that provides good disk I/O you can benefit from increasing the number of operations Composer will do concurrently.
Wayne over on IT Blood Pressure covered this for View 5.0 in a Feb blog.
There is information on this is the Best Practices Whitepaper and instruction  on how to change the setting in View 5.0 and previous versions in KB article 1013760
What’s new is that changing this has become easier with View 5.1 as the setting for pae-SVICreationRampFactor can now be made through the View Administrator GUI
Under View Configuration and Servers, Edit your vCenter Server Settings. If you press Edit on the vCenter Server Settings box that appears you will get the following dialog. Change the last setting to increase the provisioning operations concurrency and speed up certain operations.


Change this in increments, test the effect and only do this if your hardware (and Composer) configuration can cope.