Printable Version of this page

Project List

  • Measurement
    • Measure the cost / benefit of dynamically loaded librarie vs. statics librarie.
    • Measure the AFS file system in our department and compare its performance for our workload against NFS V4, a newly available file system.
    • Measure the experienced performance loss of running our standard workload on top of a virtual machine, to see whether we would notice.
    • Measure the isolation capabilites of different isolation techniques and virtual machine monitors, such as processes, vservers, jails, Xen, and VMware.
  • OS kernels
    • Given that people are running OSs on top of a virtual machine, are there any services that can be removed because of redundancies? E.g. device detection, file systems, drivers, memory management? What is the resulting performance?
  • File Systems
    • Build a file system specific to virtual machines
    • Inject disk faults into Sun's ZFS to test its reliability and performance
    • Magnetic RAM, or MRAM, is finally making it to market. This is a form of non-volatile memory that is faster than DRAM and almost as fast as SRAM. It has no seek or access latency, unlike Flash. Design a file system optimized for this storage technology.
      Freescale presentation
      Wikipedia
  • Security
    • Build a rootkit detection system based hibernation or portable USB devices. This device has access to DMA right out of memory, allowing it to bypass any mechanism a rootkit uses for hiding.
      Wikipedia on rootkits
    • Build a system using Microsoft's restricted tokens to isolate applications with the appropriate permissions - you will need to figure out a good policy and how to test the system for security. This system should be able to prevent malicious attachments or downloads from compromising files of other applications.
      Access control in Windows
  • Reliability
    • Measure what fails within an OS kernel, and figure out why and how often. This provides guidance to OS designers in how to structure error handling code, by figuring out what is commonly exercised and must be fast, and what is not. In addition, figure out how the OS responds to different error conditions, for examply by ignoring the error, retrying, crashing, or returning an error code.
  • Scheduling and Synchronization
    • Multi-core scheduling
      Computer architects believe that future chip multiprocessors will have hetergeneous processors, in that some will be more powerful than others. This allows code that can't use a powerful processor, because it has poor memory or branch locality, to execute more efficiently. A major problem is figuring out which thread to schedule on which cores. Design (1) a way of figuring out which threads don't need a high-performance processor (perhaps using processor performance counters, and (2) a scheduling algorithm that executes those on the lower-performing processors.
    • Compare the synchronization code in Solaris to Linux (e.g. low level locks) to measure which kernel does a better job at fine-grained locking. For example, measure how many locks must be acquired to perform a task (to measure locking overhead) and how many memory locations are protected by a single lock.

Previous project lists: