Performing power management based on 's, we can ensure that processes do not suffer any performance losses. However, this does not guarantee energy savings. In particular, if the size of the active set, , for each process is close to the total number of nodes in the system, power is not significantly reduced. So, to further reduce power dissipated by the memory, we need to minimize the total number of active nodes used per process for all processes in the system. This can be formally expressed as a minimization problem. Specifically, we want to minimize the summation, ( ), where the number of active nodes, , for each process is weighted by its CPU utilization (fraction of processing capacity/time spent executing the process), denoted by . Allocating pages for all processes among the nodes to minimize this sum is a difficult problem even with a static set of tasks, let alone in a dynamic system.
For simplicity, we assume that an approximate solution can be obtained by minimizing the number of active nodes for each process. To this end, a simple heuristic can be applied using the concept of a preferred node and maintaining a set of preferred nodes, , for each process . All processes start with an empty set . When a process allocates its first page, this page is taken from the node with the most free memory available, which is then added to . Future memory allocations by this process are first tried on nodes in . If all nodes in are full, the allocation is again made from the node which currently has the most free memory available, and this new node is then added to . By using this worst-fit algorithm to generate , each process's memory footprint is packed into a small number of nodes, thereby decreasing each process's energy footprint.