FEIT IT Virtual Desktop Infrastructure Getting Started

vmware horizon logo

Thank you for your interest in Virtual Desktop Infrastructure (VDI) provided by FEIT IT. We've leveraged VMware Horizon and NVIDIA GRID to provide vGPU-accelerated Windows 10 and Ubuntu 18.04 virtual desktops for the use of our staff and students. We hope you'll find this technology useful and encourage you to provide us with feedback to improve the experience.

Working from home update: VMware Horizon should work more-or-less the same way from home as it does when you're on campus. Keep in mind that you will need to connect to the University VPN service before you can use Horizon and for the duration. Also note that your experience will be affected by the quality of your Internet connection. If you're working with low-bandwidth and would like some advice on how to improve the performance of your remote virtual desktop, please contact FEIT IT and we will try to help.

System Specification

Our standard virtual desktop offering is as follows:

nvidia grid logo
  • Windows 10 20H2 or Ubuntu 18.04.5
  • 2 vCPUs 16GB RAM 512GB disk
  • NVIDIA P40_1Q (1GB VRAM)
  • Internet access

Requesting a Virtual Desktop

Access to virtual desktops is enabled on request. Please contact us via our Services Request Form stating your use-case, preferred OS and an estimate of the duration for which you'll need the resource. If you would like FEIT IT staff to pre-install particular applications for you, please mention those also and please be specific with versions. If licensing is required for that software please provide as much detail as possible so that we can help you as fast as possible.

Installing and Launching the Horizon Client

Once your request for access has been approved you'll need to download, install and launch the software.

  1. Visit horizon8.eng.unimelb.edu.au
  2. Click the link to Install VMware Horizon Client you'll be redirected to the VMware web site (NOTE: do not install the VMware Horizon Client from the Microsoft Store it does not work with our systems)
  3. Download, install and launch the VMware Horizon Client software
  4. Click to add a New Server and connect to the Connection Server horizon8.eng.unimelb.edu.au and login with your university credentials, make sure to prefix your username with the domain UNIMELB if using a staff account or STUDENT if using a student account, e.g. UNIMELB\username or STUDENT\username
  5. Double-click to launch the connection from an available pool of machines. Note that Single Sign-On will work for your Ubuntu virtual desktop but you might need to just wait a few seconds after connecting for the system to initialise.

Warning! Full screen mode! By default the VMware Horizon Client will launch your remote desktop session in full-screen mode taking over all monitors, use the key combination Ctrl-Alt-f (Windows) or Ctrl-Command-f (MacOS) to switch to windowed mode. You can also simply logout of the remote session.

The first time that you request a connection to a virtual machine pool a spare system will be assigned to you. This machine will then remain exclusively available to you until unassigned by an administrator.

Nightly Backup

Your virtual desktop will be protected by a nightly backup. FEIT IT should be able to recover either your entire system or select files for up to 60 days. For the best chance of a successful recovery, contact us as early as possible after an accidental deletion or corruption of your data.

We recommend you consider restoring from backup to be a last resort option. To best protect your data, consider syncing with OneDrive which should be very simple to setup on your Windows virtual desktop and only slightly complicated on Ubuntu. FEIT IT also provide Horizon users with 50GB of personal storage on our Silo storage cluster, this will be automatically mapped to your Windows virtual desktop but will need to be manually mapped to Ubuntu, the CIFS UNC path to your Silo home should be \\shares.eng.unimelb.edu.au\username (Windows) or smb://shares.eng.unimelb.edu.au/username (Ubuntu).

Lifecycle Management

FEIT IT Horizon virtual desktops are a limited resource that run on expensive hardware and require costly software licenses. We appreciate it if you can let us know when you're no longer using the Horizon system so that we can archive your virtual desktop and free its resources for other users. If we notice your machine has been idle for some time, it could be manually powered-off by FEIT IT staff. When you next attempt to connect to your virtual desktop via the Horizon Client, there will be a brief delay while it boots up again.

If your virtual desktop has been powered-off and unused for an extended period, FEIT IT may choose to move it to archive storage. In this case, you will need to contact us to have it restored.

Software Updates

FEIT IT have made the choice not to try to restrict the ways in which you can install and manage the operating system and software on your virtual desktop. Having said that, we strongly recommend that you follow these guidelines:

  • Do install available security updates and patches at your earliest convenience
  • Do make use of the Microsoft Store or Ubuntu Software application to install and manage software
  • DO NOT upgrade your operating system to a new release
  • Do TAKE CARE when working with packages that your system relies on to function e.g. making changes to the base system Python install, Xorg, GNOME/GDM3, etc... can cause Horizon to stop working

In particular, Ubuntu users should be aware that VMware Horizon does not support Ubuntu 20.04 or later releases and you should not attempt to upgrade to that release or later. FEIT IT will notify Horizon users when a newer release of Ubuntu or Windows 10 is approved for use with our Horizon infrastructure.

If a sofware install or reconfiguration makes your system unusable, generally FEIT IT can help you recover it although in some cases it may be necessary to restore from backup or rebuild the virtual desktop.

Hardware Upgrades

If you would benefit from an upgrade to the default hardware spec, please contact FEIT IT stating your use case and we'll proceed accordingly. In general we are able to apply upgrades from 1Q to 4Q NVIDIA GRID profiles along with an equivalent increase in CPU cores and RAM. We have a limtited number of 8Q NVIDIA GRID profiles available and we're also working to enable other GPU configurations on a time-limited basis. Additional local storage can also be arranged on request. Please contact FEIT IT and we will try to help.

Tips & Tricks Windows

If you have a question not answered here, please feel free to contact us.

Administrator privileges

In general, you should have been granted Administrator privileges by FEIT IT staff when processing your request for a virtual desktop by granting your domain login account membership of the local Administrators group on the virtual desktop through Group Policy Restricted Groups. If this did not happen please contact us and we'll correct that.

Logging off vs disconnecting

When you logoff your virtual desktop it will close all running programs and applications and return the system to its login screen, waiting for your next connection. If instead you would like to leave things the way they are, rather than using Windows Sign out, simply close the window where your virtual desktop is running. This will leave everything running in the background, the next time you connect, all your programs and applications should still be running the way they were when you left. Perfect for long-running simulations or other work that should be left un-interrupted.

Transferring files

There are several ways to transfer files between your own computer and the virtual desktop. First, when you open My Computer on the virtual desktop you should see a mapped network drive Silo Home (H:) which is your FEIT home drive hosted on the FEIT IT file server Silo. You can map this same home drive on your local computer to access that online storage from both locations. The path to map on your own computer is \\shares.eng.unimelb.edu.au\username. If you don't have a FEIT home drive, please contact FEIT IT and we'll arrange that for you.

University of Melbourne staff have access to Microsoft OneDrive for Business which is an excellent way to store files in the cloud and have them be available on many devices.

The VMware Horizon Client also allows you to share a local folder from your computer that will appear as a Mapped Network Drive on the virtual desktop. You can configure this in the Sharing section of the VMware Horizon Client Settings.

Copy and Paste

Directly from the VMware web site: "The default clipboard redirection group policy setting allows you to copy from client systems and paste into the remote desktop or application only. The policy setting must be enabled in both directions to be able to copy from your remote desktop or application to your client system. Contact your Horizon administrator for assistance."

At time of writing, changing this behaviour can only be done through editing the system registry, if you need to, you can lookup how to do this, or you can contact FEIT IT and we can help.

Tips & Tricks Ubuntu

Please refer to the Windows section on logging off vs disconnecting and on transferring files those instructions are also relevant to Ubuntu. Folders shared from your local machine to your remote desktop via the Horizon Client will appear on your desktop inside a mounted volume named TSClient. Mounting your FEIT IT Silo home drive won't be done automatically, you can connect this network drive as shown in the screenshot below.

ubuntu cifs mount
Ubuntu CIFS mount example

H.264 Encoding vs Lossless PNG mode

The Horizon View Agent can take advantage of the virtual GPU in your virtual desktop to encode and compress the remote desktop display before sending it to your client. This enables Horizon to provide smooth video playback over the network, however it comes at the expense of some desktop responsiveness, particularly when typing. On a high-bandwidth connection (e.g. when you're on campus) you will probably experience a more responsive desktop and more accurate image representation by enabling lossless compression for the View Agent at the expense of smooth video playback. If you'd like to try this, edit the file /etc/vmware/config $ sudo nano /etc/vmware/config and uncomment the line RemoteDisplay.buildToPNG=TRUE then reboot the virtual desktop.

Docker warning

If you install Docker it will create a virtual network device that can confuse the View Agent, which now won't know which network to use for its communcations. To have your Horizon desktop continue to work after installing Docker, you'll need to specify the correct network for it to use. Edit the file /etc/vmware/viewagent-custom.conf $ sudo nano /etc/vmware/viewagent-custom.conf and add the following: Subnet=172.23.48.0/24

Sudo privileges

Your account should have been granted Sudo privileges by FEIT IT staff when processing your request for a virtual desktop by granting your domain login account membership of the 4000GG-Horizon8Administrators group which is part of the Sudoers configuration on the virtual desktop. If this did not happen please contact us and we'll correct that. Please note that some parts of the Ubuntu desktop (e.g. software installs via Ubuntu Software, printer configuration) expect the current user to also be a member of the local sudo group on the virtual desktop. You can add your account to this group by issuing the following command from the Terminal: $ sudo usermod -a -G sudo username

SSH access

If you'd like to be able to access your virtual desktop with Secure Shell we recommend the following: 1. Add your login account to the local ssh group, 2. Add the local ssh group to sshd_config AllowGroups, e.g.:

$ sudo usermod -a -G ssh username ; sudo nano /etc/ssh/sshd_config

Locate the AllowGroups line and check that it contains these groups::

AllowGroups 4000gg-serveroperators 4000gg-workstationadmins root ssh

If you have changed the ssh_config file, restart the SSH daemon

$ sudo systemctl restart ssh

NVIDIA GRID Guest Driver and Horizon Agent

Danger! Upgrading kernel or X Server! Some updates to your system can interfere with the normal operation of the virtual desktop. In particular, if a new kernel is installed, the third-party NVIDIA graphics driver might not load on the next reboot. Similarly the Horizon Agent software may be unable to take control of your Xorg server.

You'll be able to tell that your GPU isn't working properly if you find that the Horizon desktop Window is stuck in a 640x480 resolution and can't be scaled-up.

To fix this:

  1. SSH to your virtual desktop at its IP number (you must have enabled SSH access as per the instructions on this page)
  2. Make sure the nouveau driver is blacklisted in initramfs, check /etc/modprobe.d/blacklist-nouveau.conf exists then run $ sudo update-initramfs -u and $ sudo reboot
  3. SSH to your virtual desktop at its IP number
  4. Stop the display server $ sudo telinit 3
  5. Re-run the NVIDIA driver installer found in root's home $ sudo bash /root/NVIDIA-Linux-x86_64-450.89-grid.run you should answer "Yes" to all the questions it's only important that the driver is rebuilt and that the license system is reinstalled propery, check the nvidia-gridd service is running afterwards $ systemctl status nvidia-gridd
  6. Reboot again $ sudo reboot, wait a minute and try the Horizon client, things should hopefully be back to normal
  7. OPTIONAL: If it's still not working, you can reinstall the Horizon View Agent. Again, use SSH then $ sudo telinit 3 then $ sudo -i bash -c 'cd /root ; gunzip -c VMware-horizonagent-linux-x86_64-8.0.0-16523578.tar.gz | tar -xf - ; cd VMware-horizonagent-linux-x86_64-8.0.0-16523578 ; ./install_viewagent.sh -A yes' and $ sudo reboot

If you're still stuck, or if you'd prefer someone else do this for you, contact FEIT IT for help.

NVIDIA GRID and CUDA

As implied above, in general, you should not upgrade or change the NVIDIA driver that is provided with your Ubuntu virtual desktop. This is because the guest driver for the virtual GPU must be compatible with the driver installed on the hypervisor where it runs. In previous versions of NVIDIA GRID, the driver versions had to exactly match. With NVIDIA GRID 11 it should be possible for the hypervisor driver to support current and older guest drivers, but FEIT IT haven't confirmed yet exactly which versions will work. It is safest not touch change the guest vGPU driver provided with your system. If you have need of a newer version, contact FEIT IT and we'll see how we can support it if possible.

If you want to use CUDA you should take care to install a CUDA toolkit that's compatible with the installed NVIDIA driver and you should also take care not to install a monolithic CUDA package that includes an NVIDIA driver that will overwrite your currently installed driver. At the time of writing we're at NVIDIA driver verson 4.50.89 and the supported CUDA version is 11.0. You can refer to the NVIDIA documenation for more detail. The nvidia-smi command will give you information about your currently loaded vGPU driver.


# nvidia-smi
...
# nvidia-smi
Tue Dec  1 14:58:25 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.89       Driver Version: 450.89       CUDA Version: 11.0     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GRID P40-1Q         On   | 00000000:02:00.0  On |                    0 |
| N/A   N/A    P8    N/A /  N/A |    495MiB /  1024MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1249      G   /usr/lib/xorg/Xorg                 19MiB |
|    0   N/A  N/A      1634      G   /usr/lib/xorg/Xorg                238MiB |
|    0   N/A  N/A      1710      G   /usr/bin/gnome-shell               87MiB |
+-----------------------------------------------------------------------------+

The following steps will help you safely install CUDA Toolkit 11.0 for your Ubuntu virtual desktop.

  1. Follow the steps for Linux x86_64 Ubuntu 18.04 deb (network) from https://developer.nvidia.com/cuda-downloads but stop before the last step that will install the latest CUDA toolkit and driver
  2. Install the CUDA Toolkit 11.0 meta package that contains CUDA compilers, libraries and documentation, but won't change your installed NVIDIA driver $ sudo apt install cuda-toolkit-11-0

You'll find CUDA installed at /usr/local/cuda-11.0. You'll probably want to setup your environment $ export PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}} and $ export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64 ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}, it's probably best to add these lines to the end of your ~/.profile. Fore more detail see CUDA Toolkit Documentation. Confirm for yourself that you have a working CUDA install:


lucasjb@4000v-vdu0011-l:~$ cd /usr/local/cuda-11.0/samples/1_Utilities/deviceQuery
lucasjb@4000v-vdu0011-l:/usr/local/cuda-11.0/samples/1_Utilities/deviceQuery$ sudo make
/usr/local/cuda-11.0/bin/nvcc -ccbin g++ -I../../common/inc  -m64    -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_80,code=compute_80 -o deviceQuery.o -c deviceQuery.cpp
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
/usr/local/cuda-11.0/bin/nvcc -ccbin g++   -m64      -gencode arch=compute_35,code=sm_35 -gencode arch=compute_37,code=sm_37 -gencode arch=compute_50,code=sm_50 -gencode arch=compute_52,code=sm_52 -gencode arch=compute_60,code=sm_60 -gencode arch=compute_61,code=sm_61 -gencode arch=compute_70,code=sm_70 -gencode arch=compute_75,code=sm_75 -gencode arch=compute_80,code=sm_80 -gencode arch=compute_80,code=compute_80 -o deviceQuery deviceQuery.o 
nvcc warning : The 'compute_35', 'compute_37', 'compute_50', 'sm_35', 'sm_37' and 'sm_50' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
mkdir -p ../../bin/x86_64/linux/release
cp deviceQuery ../../bin/x86_64/linux/release
lucasjb@4000v-vdu0011-l:/usr/local/cuda-11.0/samples/1_Utilities/deviceQuery$ ./deviceQuery
./deviceQuery Starting...

 CUDA Device Query (Runtime API) version (CUDART static linking)

Detected 1 CUDA Capable device(s)

Device 0: "GRID P40-1Q"
  CUDA Driver Version / Runtime Version          11.0 / 11.0
  CUDA Capability Major/Minor version number:    6.1
  Total amount of global memory:                 1024 MBytes (1073741824 bytes)
  (30) Multiprocessors, (128) CUDA Cores/MP:     3840 CUDA Cores
  GPU Max Clock rate:                            1531 MHz (1.53 GHz)
  Memory Clock rate:                             3615 Mhz
  Memory Bus Width:                              384-bit
  L2 Cache Size:                                 3145728 bytes
  Maximum Texture Dimension Size (x,y,z)         1D=(131072), 2D=(131072, 65536), 3D=(16384, 16384, 16384)
  Maximum Layered 1D Texture Size, (num) layers  1D=(32768), 2048 layers
  Maximum Layered 2D Texture Size, (num) layers  2D=(32768, 32768), 2048 layers
  Total amount of constant memory:               65536 bytes
  Total amount of shared memory per block:       49152 bytes
  Total number of registers available per block: 65536
  Warp size:                                     32
  Maximum number of threads per multiprocessor:  2048
  Maximum number of threads per block:           1024
  Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
  Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
  Maximum memory pitch:                          2147483647 bytes
  Texture alignment:                             512 bytes
  Concurrent copy and kernel execution:          Yes with 2 copy engine(s)
  Run time limit on kernels:                     Yes
  Integrated GPU sharing Host Memory:            No
  Support host page-locked memory mapping:       Yes
  Alignment requirement for Surfaces:            Yes
  Device has ECC support:                        Enabled
  Device supports Unified Addressing (UVA):      Yes
  Device supports Managed Memory:                No
  Device supports Compute Preemption:            Yes
  Supports Cooperative Kernel Launch:            Yes
  Supports MultiDevice Co-op Kernel Launch:      Yes
  Device PCI Domain ID / Bus ID / location ID:   0 / 2 / 0
  Compute Mode:
     < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >

deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 11.0, CUDA Runtime Version = 11.0, NumDevs = 1
Result = PASS

Horizon 7 Migration FAQ

Many of our Horizon 8 users will be migrating from Horizon 7 also operated by FEIT IT.

How do I migrate from Horizon 7 to Horizon 8?

  1. Request a new Horizon 8 virtual desktop from FEIT IT
  2. Copy any data that you might need from your Horizon 7 virtual desktop to your new Horizon 8 virtual desktop or ask FEIT IT staff to help you
  3. Notify FEIT IT that you're finished with your Horizon 7 virtual desktop so that we can archive it

Can't you just move my Horizon 7 virtual desktop over to Horizon 8?

Unfortunately, no. There is no built-in process for this and it would create a lot of work for individual FEIT IT staff to carefully move, upgrade and reconfigure so many virtual desktops. As a user you would also miss out on the benefit of the new software and drivers available on the new platform

How can I copy my files from Horizon 7 to Horizon 8?

Windows users: Copy your files to either your Silo home (50GB maximum) or OneDrive, it will be availble on both platforms.

Ubuntu users: Your Silo home can also be used, however you'll need to manually connect it. Another simple option would be to enable SSH at both ends and then SCP your data from one system to the other.

If you have a lot of data to copy, FEIT IT can help you.

The default system spec for Horizon 8 is lower than it was with Horizon 7 what gives?

There are two reasons for this. The first is that our experience shows that many of our colleagues who request a virtual desktop only use it once or twice and then decide it's not for them or they just occasionally use the system and rarely to its full capacity. Because of the nature of vGPUs, this means we lock up a lot of valuable resources in virtual desktops that aren't being used. We've decided to lower the default spec somewhat to get better value and utilisation of our servers.

The second reason is that during the migration from Horizon 7 to Horizon 8 our servers might need to accommodate more than their original planned capacity while we have users with virtual desktops on both platforms. It will help us get through the migration period if we can fit more users on fewer servers, at least temporarily. After migrations are complete we can re-evaulate.

If you have a specific need for increased resources on your virtual desktop, please let us know as part of your migration.