An apparatus and method to allocate memory in a storage
system.
Firmware running the method uses an iterative approach to find the best optimal memory configuration for a particular storage
system given a variety of configuration data parameters stored as persistent data in non-volatile
flash memory. The configuration data relates to resources in the environment that the storage
system is found in, such as the number of virtual ports, targets and initiators supported by a storage system IOC. The configuration data is alterable, to allow flexibility in updating and changing parameters, and is employed at runtime when the storage system powers on, to enable the most flexible
resource allocation. In a preferred method of determining the most optimal memory configuration for a given set of parameters corresponding to a given set of resources, an
iterative method is employed to decrement parameter values from their maximum values, taking into account the minimums, and then testing the configuration by performing a memory allocation. If the allocation fails, because for example the wrong type memory or size of memory for any of the resources found, then the
firmware resets the memory areas back to predetermined Start of Day (SOD) parameter values, decrements the values until a successful configuration of memory is found for the given set of parameters, and tries again, or until the
firmware is caused to fault, whichever comes first.