Most disk array controllers on servers include a piece of RAM that can be utilized to temporarily buffer data being written to or read from disk. Since access to RAM is significantly faster than disk access, this cache can enhance overall server performance. With respect to Citrix XenApp servers, improved server performance can lead to much higher user density per server.
Unlike writing to disk, writing to RAM is volatile, which means it needs power to maintain the stored information. Array controllers usually come with a battery pack that allows them to cache write data safely. In the event of a power disruption, the battery would provide enough power to safely write all data to disk. The majority of hardware vendors won’t even allow you to enable write cache until a battery is attached. They will also often automatically disable write cache when there is a battery fault.
Having a battery fault or no battery at all can cause significant performance degradation on your servers during times of heavy writes. This typically occurs on a Citrix XenApp server during the loading of profiles and the use of applications that require heavy writing of temporary files (e.g., browsing websites in Internet Explorer). During these times of heavy writes, users may report sessions freezing and delayed logons. System administrators may see disk queue alerts on the Windows performance counters. However, if the problem is extreme enough, the system can enter a temporary hung state, and no performance data will be collected, so you may not receive any alerts at all.
The lesson to be learned is if you are using physical servers in your Citrix XenApp environment, make sure you check the batteries on your array controllers on a regular basis. It can be a small fix for a much larger problem.