The ECOSystem approach is based upon a unifying currentcy model. The key feature of this model is the use of a common unit--currentcy--for energy accounting and allocation across a variety of hardware components and tasks. Currentcy is an abstraction for explicitly representing energy as a resource, precisely specifying energy-related goals, and capturing the interactions among energy consumers in the system. It is the basis for characterizing the application power requirements and gaining access to any of the managed hardware resources. Currentcy is the mechanism for establishing a particular level of power consumption and for sharing the available energy among competing tasks.
Originally, the primary goal of ECOSystem was to achieve a target battery lifetime. Not only is this a well-defined metric to adopt as a starting point for explicitly managing energy, but there are also interesting application scenarios for which this is an appropriate objective. Exploiting battery properties that relate lifetime and discharge rate, ECOSystem expresses this goal in terms of the currentcy model and allocation strategies.
There are two levels to the energy allocation strategy. The first level allocation determines the amount of currentcy to collectively allocate among all tasks system-wide. We divide time into energy-epochs. At the start of each epoch, ECOSystem allocates a specific total amount of currentcy. For our original purpose, the overall currentcy allocation is determined by the discharge rate necessary to achieve the target battery lifetime. By distributing less than 100% of the currentcy required to drive a fully active system during an epoch, components are idled or throttled.
The second level of currentcy allocation is distribution among competing tasks. When the available currentcy is limited, it is divided among the competing tasks according to user-specified proportions. During each epoch, an allowance is granted to each task according to its specified proportional share of currentcy. There are constraints on the accumulation of unspent currentcy so that epochs of low demand do not amass a wealth of currentcy that could result in very high future power consumption peaks that would violate our battery assumptions. Consequently, there is a cap on the maximum amount of currentcy any individual application can save. Thus, the per-task allocation represents income in each epoch, whereas the cap represents a limit on the balance accumulated within the task's account.
ECOSystem uses a reimplementation of the Resource Containers  abstraction to capture the activity of an application or task as it consumes energy throughout the system. Resource containers are the abstraction to which currentcy allocations are granted and the entities to be debited for energy consumption. They are also the basis for proportional sharing of available energy. Resource Containers address variations in program structure that typically complicate accounting. For example, an application constructed of multiple processes can be represented by a single Resource Container for the purposes of energy accounting. We use the terms ``task'' and ``resource container'' interchangeably.
The energy accounting challenge of tracking energy use and attributing it to the responsible task is addressed through a power states model maintained within the framework. This model allows us to track interactions among tasks through their use of energy in device access. For example, tasks may be consuming energy in devices even when they are inactive in the CPU (or blocked). A process waiting for completion of a disk request is responsible for the energy consumption of the disk access. Ready-to-run processes may also be consuming energy in other devices (e.g., due to asynchronous I/O) while competing for the CPU.
The ECOSystem prototype  is a modified RedHat Linux version 2.4.0-test9 running on an IBM ThinkPad T20 laptop. This platform has a 655MHz PIII processor and we assume an active power consumption of 15.55W. The disk is an IBM travelstar that we model in ECOSystem with costs of 1.65mJ per block access and 6000mJ for both spinup and spindown, and with progressive costs/timeouts for levels of idle power states. The wireless network is an Orinoco Silver PC card supporting IEEE 802.11b, it has three power modes: Doze (0.045W), Receive (0.925W) and Transmit (1.425W). All other devices contribute to the base power consumption, measured to be 13W for the platform.
ECOSystem supports a simple interface to manually set the target battery lifetime and to prioritize among competing tasks. These values are translated into appropriate units for use with our currentcy model. The target battery lifetime is used to determine how much total currentcy can be allocated in each energy epoch. The task shares are used to distribute this available currentcy to the various tasks. To perform the per-epoch currentcy allocation, we introduce a new kernel thread kenrgd that wakes up periodically and distributes currentcy appropriately.
Initial experience and experiments with the prototype show that it can successfully deliver its goal of achieving a target battery lifetime and proportionally sharing available energy among competing applications using different devices in the system. It has also identified some drawbacks including a disproportionate impact on performance. This work refines energy goals beyond the simple battery lifetime metric. The purpose of this paper is to explore the power of the currentcy model to express more subtle and sophisticated desired behaviors. This effort represents a move from developing the framework and mechanisms toward exploring the policy space.