Patent ID: 9600187
Date: 2017-03-21
CPC Classifications: G06F

Claim:
1. A method for using a processor to manage a memory system, the memory system including a plurality of memory controllers, each memory controller coupled to a separate plurality of DIMMs via a separate memory channel, the method comprising: initializing, by the processor, the memory system; collecting, upon initialization of the memory system and by the processor, product data from the DIMMs; determining, by the processor and based on the collected product data, a capacity of each of the DIMMs; determining, by the processor and based on a comparison of the determined capacities of the DIMMs to each other, a smallest DIMM capacity; determining, by the processor, performance and power consumption characteristics for each of the DIMMs; creating, by the processor and based on the smallest DIMM capacity determination and further based on the determined performance and power consumption characteristics, a plurality of virtual memory groups for the DIMMs, wherein a first virtual memory group includes DIMMs from at least two of the separate memory channels, wherein a second virtual memory group includes other DIMMs from the at least two of the separate memory channels and at least one additional of the separate memory channels such that memory of the second virtual memory group is accessible via more memory channels than the first virtual memory group, and wherein the total memory capacity of the first virtual memory group and second virtual memory group are the same, and wherein the first virtual memory group is configured for being accessed by non-critical applications and the second virtual memory group is configured for being accessed by critical applications; identifying, by the processor, characteristics of a plurality of applications; determining, by the processor and based the characteristics, that a first application is a non-critical application; allocating, by the processor and in response to the determination that the first application is non-critical, memory from the first virtual memory group to the first application, wherein as allocated the first application has equal access to all of the at least two of the separate memory channels; determining, by the processor and based the characteristics, that a second application is a critical application that utilizes memory access for parallel processes; and allocating, by the processor and in response to the determination that the second application is a critical application that utilizes memory access for parallel processes, memory from the second virtual memory group to the second application, wherein as allocated the second application has equal access to all of the at least two of the separate memory channels and the at least one additional of the separate memory channels.