Decisions about how to design or configure storage software and hardware usually consider performance. Performance is degraded or improved as a result of trade-offs with other factors such as cost, reliability, availability, power, or ease of use. Trade-offs are made all along the path between application and disk media. File cache management, file system architecture, and volume management translate application calls into individual storage access requests. These requests traverse the storage driver stack and generate streams of commands that are presented to the disk storage subsystem. The sequence and quantity of calls, and the subsequent translation, can improve or degrade performance.