Transparent Contribution of Storage and Memory


Overview

The goal of our project is to demonstrate operating system modifications to provide services for contributory applications. Like CPU-prioritization, these services allow contributory applications to inform the operating system that they are less important than other processes on the machine, and that their resources should be managed accordingly.

What are Contributory Applications?

Contributory applications are programs which allow users to donate computing resources to someone else. These applications are designed to contribute a number of resources, including CPU cycles, space in the computer's RAM, on-disk storage, and network bandwidth.

A common trait among these applications is that the user is participating voluntarily. Because of this, if the application interferes with the user's own activity, the application will be disabled. As a result, contributory applications are written to be transparent to the user. That is, the behavior of the user's applications should be the same, whether or not they are running a contributory application.

Contributory Applications and Resource Management

Writers of such applications have been able to manage the use of some resources from user space. For instance, to avoid interfering with the user's use of the CPU, these applications use existing operating system features to either run at a lower (less important) priority, or to run as a screen saver when the user is not actively using the computer.

Other resources tend to be harder to manage. Main memory is a difficult resource to manage because it is unclear how much RAM the user can give up before noticing a performance impact. Furthermore, if memory resources are taken while the user is not active (e.g. by a screen saver), the time it takes to reallocate these resources when the user returns is noticeable.

Another such resource is disk space. Users are reluctant to give up more than a small portion of their disk, even if that storage is completely empty. Even when users are willing to sacrifice the storage, consuming large amounts of storage accelerates the effects of file system aging.