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