CSE 551 Project Ideas, Spring 2006

[Almost by definition, any idea of your own trumps any idea of ours! Don't feel constrained by these!]
Suggestion on how to think of a project. Don't. Think about a computer systems problem that really interests you, or a problem that is driving you nuts. Eg, "why can't I...?" or "wouldn't it be great if...?" Then, think about what the blockers are in solving that problem. Then, define your project in terms of removing those blockers.

Here's a list of project ideas from last year's 551.

Here's some more project ideas that you can think about or use as a starting point.

File System Performance on a Virtual Machine

An OS running in a VM implements a file system on top of a virtual disk which is in turn implemented as a file system on top of a physical disk. In general, a file system attempts to deliver good performance through careful placement strategies. However, in the virtual world, placement becomes tricky, since there are one or two layers of indirection between the virtual OS and the underlying physical disk.

Evaluate the cost and opportunities of using various file systems at the virtual and host layer in a virtual machine environment. Eg, consider combinations of various file system types in order to determine where the real costs are and to identify the "optimal" configuration.

Virtual Disks Over a Wide Area Network

Suppose you wanted to run a virtual machine against a virtual disk that was being provided by a far-away storage server. The virtual disk can be provided as a remote file, a remote block device, a check-in/check-out storage server, or other possibilities. The tricky thing here is to make things run fast and efficiently considering that the objects being moved manipulated (virtual disk blocks) aren't really files, but are instead being used to define files.

Networking on Multicore

A Multicore processor has two or more independent CPUs on it that share one or more caches. They look like a shared memory multiprocessor.

What opportunities exist to increase the throughput of a communications protocol such as TCP on a multicore system?

The Synchronization Implications of Multicore Architectures

The title says it all. What special new synchronization problems/opportunities are created by multicore systems?

Passive Asynchronous Mirroring

The cost of transporting a computer or disk filled with data is substantially less than transferring the data electronically for very large data sets. Construct a system in which there is an active mobile agent, such as a computer in your car, which serves as the transport for data to be mirrored across multiple sites. When you arrive home in the evening, the car automatically uploads into your home network whatever changes are oustanding. Similarly, when you arrive at work, the same thing happens. Use available low bandwidth links to ensure eventual consistency.

A key requirement of your system is that it must be 100% transparent. A user can define the volumes or files to be replicated, but everything else needs to run on its own. The migrating machine has to take care of all of the work and recover from all errors.

Places where this kind of system would be particularly useful include: remote locations such as Antartica, regions with poor or pricey wide area networks, or in application domains that require the migration of massive data sets.

VM Load Balancing

Develop a Load Balancing Infrastructure for Virtual Machines. Your system should turn networks of idle workstations into a virtual computing cluster capable of running long-running sequential, parallel and distributed applications. It should contain a resource scheduler that is able to match the demands of a virtual machine (memory, disk, cpu) with the capabilities of a candidate host. Past behavior can be used to predict future requirements. Passivation and virtual machine migration can be used to migrate a computation in place.

Idea generator