Monday, 2 August 2010

Don’t Forget System Cache when using Provisioning Services

System cache is a powerful feature allowing a server to service requests extremely fast because instead of accessing disks, blocks of data are retrieved from RAM. Provisioning services relies on fast access to the blocks within the disk image (vDisk) to stream to the target devices. The faster the requests are serviced, the faster the target will receive. Allocating the largest possible size for the system cache should allow Provisioning services to store more of the vDisk into RAM as opposed to going to the physical disk.

Not planning system cache appropriately is the 8th mistake made when deploying virtual desktops, others are:

10. Not calculating user bandwidth requirements

9.   Not considering the user profile

8.   Lack of Application Virtualisation Strategy

7.   Improper Resource Allocation

6.   Protection from Anti-Virus

5.   Managing the incoming storm

4.   Not Optimising the Desktop Image

Unfortunately, many environments are not configured optimally. Simply adding RAM to a Provisioning services server is not enough; the system must be configured appropriately.

Operating System

The operating system plays a large role in how large the system cache can become.

  • Windows Server 2003/2008 x32: 960 MB
  • Windows Server 2003/2008/2008 R2 x64: 1 TB

Because the 64 bit operating system can have a larger system cache, a larger portion of the vDisk can be stored in RAM, which is recommended.
Windows 2008 is recommended over 2003 because of the improvements in the memory manager subsystem, which has shown some improvements.

RAM

8-32GB of RAM
The more RAM allocated for the server, the larger the system cache can become. The larger the cache means vDisks reads will be faster. If you have more vDisks, you will need more RAM. A quick estimate is to plan for 2GB of RAM/Cache for each vDisk you will host.

vDisk Storage

The vDisk can be stored on just about any type of storage (iSCSI, Fiber, local, NFS, CIFS, etc). However, there are a few instances where the storage selected will have an impact on how the Provisioning services server's operating system caches the vDisk blocks.

1. Network Drive: If the Provisioning services server sees the vDisk drive as a network drive via a UNC path, the server will not cache the file.
2. CIFS Share: If the storage infrastructure is a network CIFS share, Provisioning services will not cache the vDisk in memory.

Optimisations

In Windows Server 2003, large system cache must be enabled by configuring the server's performance options.
In Windows Server 2008, this setting is not required due to the enhancements in the memory allocation system. Windows 2008 utilises a dynamic kernel memory assignment that reallocates portions of memory on-the-fly, while previous versions had these values hard set during start-up. As Windows 2008 requires more system cache, the operating system will dynamically allocate.