While the speed of CPU and semiconductor memory has been increasing rapidly over the years, the hard disks, limited by physical constraints of moving parts, haven't been enjoying the same kind of success in terms of speedups. This trend doesn't appear to change in the near future, and as program sizes get larger, paging overhead will be a more and more serious problems from the performance standpoint.
On the other hand, network performance has been improving very rapidly in the recent years, and the days when the local disk was faster than memory on a remote machine are over. On a fast network with Active Messages, fetching a page from a remote machine's main memory can be more than an order of magnitude faster getting the same amount of data from the local disk.
We are currently designing a system in which idle machines on a Network of Workstations (NOW) can supply their memory as a paging devices for busy machines. This memory, called Network RAM, will appear as an additional memory hierarchy between the local RAM and the paging space on disk.
The Network RAM system we are desgining is serverless, in that there is no dedicated Network RAM server - client relationship in the traditional sense. Any machine can be a server when it is idle, and a client when it needs more memory than the physical memory it has.
We are trying to avoid having a central point of failure, and make the system as scalable as possible. For instance, we don't have a central meta-server or inventory manager that keeps track of the amount of free memory on each machine on the network. Instead, each and every machine does the bookkeeping themselves. Also, we are trying to keep down the number of messages as low as possible.
Back to NOW