Abstract:
Memory pages that are allocated to a memory consumer and continue to be accessed by the memory consumer are included in a free list, so that they may be immediately allocated to another memory consumer as needed during the course of normal operation without preserving the original contents of the memory page. When a memory page in the free list is accessed to perform a read, a generation number associated with the memory page is compared with a stored copy. If the two match, the read is performed on the memory page. If the two do not match, the read is not performed on the memory page.
Abstract:
In one embodiment, a method receives current latency values from a plurality of host computers where a current latency value is calculated by a respective host computer based on an amount of time spent in the respective host computer's issue queue by an IO request most recently removed from the issue queue of the respective host computer. The issue queue of the respective host computer is used to transmit IO requests from the respective host computer to a storage system. The method then calculates a combined average latency value based on the current latency values and sends the combined average latency value to the plurality of host computers. Each respective host computer adjusts a size of the respective host computer's issue queue based on the combined average latency value, and the size controls a number of IO requests that are added to the respective host computer's issue queue.
Abstract:
A method for managing an amount of IO requests transmitted from a host computer to a storage system is described. A current latency value of an IO request most recently removed from an issue queue maintained by a host bus adapter of the host computer in order to transmit IO requests from the host computer to the storage system is periodically determined. An average latency value is the calculated based on the current latency value and a size limit of the issue queue is adjusted based in part on the average latency value. Upon receiving an IO request from one of a plurality of client applications running on the host computer, it can then be determined whether a number of pending IO requests in the issue queue has reached the size limit and the IO request can be transmitted to the issue queue if the number of pending IO request falls within the size limit.