Hard disks are often the cause of system bottlenecks as they are typically the slowest part of any computer system. This is exacerbated in SBC (Microsoft Terminal Server & Citrix XenApp) and VDI (Citrix XenDesktop & VMware View) environments as multiple users and applications simultaneously request disk access. When such bottlenecks occur, all users and applications on the server experience a prolonged wait as their disk access request is queued. This results in the application or desktop session hanging, and in some cases, becoming completely inoperable.
Disk bottlenecks occur when users or applications require disk access faster than what the disk can support. Before considering how best to remedy this common problem, let’s first detail what causes a disk bottleneck.
An application running on a server is enabled by a process, which typically includes a plurality of threads. These processes have a requirement to read and write to and from a disk, commonly referred to as an input/output (I/O) device (for the purposes of this paper, we will refer to the I/O device as a ‘disk’). The operating system creates an I/O Request Packet (IRP) for every thread read/ write request which is passed through the driver stack to be processed by the disk.
Everyday situations require disk read/write operations to be performed at a level greater than the disk can support. This is especially true when the server allows multiple processes or applications to run in parallel. When the number of IRP’s is greater than the number of IRP’s the disk can process, the disk is in a state of overload and IRP’s are queued to be processed.
As with CPU, individual applications, processes and threads can monopolize a disk and cause resource contention between the IRP’s. These IRP’s then become stuck in a queue, waiting to access the disk. During this time the user experiences a poor quality of service as the application or desktop session takes an unacceptable length of time to complete the task.
AppSense Performance Manager prevents disk I/O IRP bottlenecks from impacting mission critical applications. Disk I/O control prioritizes IRP’s in accordance to business policy, enabling Administrators to assign priorities to individual applications on a per user basis. To achieve this, AppSense Performance Manager uses a kernel level filter driver, through which all IRP’s are then passed. The driver monitors and compares the number of IRP’s passed down the driver stack against the number of completed I/O operations to determine if the disk is in a state of overload and a bottleneck is present.
When a bottleneck is present, AppSense Performance Manager then intercepts all IRP’s before they reach the target disk, and controls the flow rate by re-ordering the IRP’s in accordance to the priorities assigned to them. For example, an application with a higher priority than a second application will have preferential access to the disk if a bottleneck is present.
By assigning higher priorities to important applications, they no longer have to wait in a queue while less important processes consume disk activity. Ensuring key applications have priority access to the disk eliminates inconsistency in application response times, reduces the user’s time to wait, improves quality of service and maximizes the efficiency of hardware resources.
This proactive approach to disk resource management is used by thousands of organizations around the globe to ensure applications and desktops respond and perform at an optimal level.