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.