|
In addition to getting involved in our
current research projects,
several other projects are available for undergraduate, MS, and PhD
students. These involve work in multiprocessor operating systems,
resource management for interactive multimedia systems, WWW
performance evaluation, and thin-client and network computing.
Candidates should have a working knowledge of C, Java, or Tcl/Tk.
Background in operating systems
(COMS W4118)
and/or networks
(COMS W4119)
is desirable. Undergraduates must have taken data structures
and algorithms
(COMS W3139).
Projects can be taken for credit
(COMS W3998,
COMS W4901,
and
COMS E6901)
and, in exceptional cases,
for remuneration. Contact Professor
Nieh for further information.
Current projects available include:
- Evaluating Thin-client Computing Performance:
Much fanfare has surrounded the introduction of thin client computing
from Citrix, Microsoft, Sun, SCO, and others. Application service
providers (ASPs) are using thin-client computing to enable desktop
machines, web browsing terminals, and other low-cost embedded devices
to function as simple user interface devices for accessing
computational services over the Internet. To assess the viability of
the thin-client computing model, design, develop, and conduct a series
of experiments to quantify the performance of thin-client platforms
for various application workloads. An isolated network testbed, as
used for previous thin-client performance
measurements, will be available for this project.
- Shrinking and Automatically Configuring Linux:
An installation of RedHat Linux takes up several hundred megabytes of
disk space, even without installing the window system. Can you
develop a version of Linux that compiles itself and fits on a floppy
disk or two? What is the minimum space requirement of a Linux system that
can compile itself? How can Linux be automatically configured to
trade off resource and functionality requirements?
- Stackable File Systems under Windows NT:
NT has a different file system interface than Unix's vnode interface.
NT's I/O subsystem defines its file system interface. NT Filter
Drivers are optional software modules that can be inserted above or
below existing file systems. The task of these Filter Drivers is to
intercept and possibly extend file system functionality. One example
of an NT filter driver is its virus signature detector. It is
therefore possible to emulate file system stacking under NT, the way
it is done in BSD4.4 or through other work such as the
Wrapfs
stackable templates (Solaris, Linux, and FreeBSD). Create
a stackable template layer for Windows NT, and use it to implement a
transparent encryption file system. Existing stackable templates
(Wrapfs, Cryptfs) for Unix systems will be provided in doing this project.
- Decomposition of Functionality for Distributed Systems:
The client/server model is used for many distributed applications and
systems. An interesting question is how does one decide on the
decomposition of application functionality between the client and the
server? Is the goal to minimize network bandwidth because networks
are slow, or maximize client computation because desktop systems are
fast, or something else? For instance, thin client systems such as
VNC move all
computations to the server and just send pixel updates to the client.
As a result, clients do not have much computing power but networks
need to have more bandwidth and less latency for the system to run
well. Select a client/server distributed system or application and
examine how the resource requirements of the system change depending
on how the functionality is partitioned.
- Middleware Resource Management:
Management of machine resources such as CPU, memory, disk, etc. is
traditionally done within the operating system. However, this
typically requires operating system kernel source code modifications,
which may be difficult to deploy. An alternative is to implement
resource management functionality at the middleware level in user
space outside of the kernel. A device driver may also be implemented
to provide access to lower level hardware information, such as
interrupts. Design a proportional share middleware resource
management framework that does as much resource management as possible
outside of the kernel.
- Distributed Middleware Management:
Suppose you have a set of applications and a set of machines that you can
use to run them. What is the best way to allocate the applications to
the machines to make the best use of available machine resources?
Design a distributed middleware framework that can assign applications
to distributed machines to provide good load balancing behavior across
the machines. As a further step, enable this framework to function
effectively across a heterogeneous set of machines with different
operating systems.
- OS Benchmarking:
Operating system performance can be measured in many different ways.
One can measure its interactive performance, how well it supports a
web server, how reliable the system is, how well databases run on it,
etc. Conduct an exhaustive survey of operating system benchmarking
techniques and discuss the tradeoffs of the different approaches.
What aspects of operating system performance are hard to measure?
Select a representative set of these techniques and benchmark several
operating system platforms. Discuss your results.
- OS Scalability:
Future data centers will provide computational services for thousands
of users. How well do existing operating systems scale in meeting the
demands of large numbers of activities? For instance, does scheduling
overhead grow linearly or worse so that systems that are heavily
loaded waste time in the operating system exactly when they don't have
the time to spare? Compare the scalability of commercial operating systems
by measuring their performance under heavy workloads.
- Real-time Performance:
Real-time multimedia services are the wave of the future, but
can today's operating systems support them effectively? A number of
commercial operating systems (Linux, NT, Solaris) claim to provide
support for real-time applications. Measure and compare the real-time
performance of commercial operating systems. For instance, if a
process has the highest priority in the system, how does its dispatch
latency change as the number of other processes running in the system
increases?
- Proportional Share Linux:
Design and implement a complete proportional share resource management
system for Linux, including management of CPU, memory, locks, and network
resources. Particular attention should be focused on when to
time-multiplex vs space-multiplex resources. Enable your system to
assign shares to groups of processes as well as individual processes.
The share assignment mechanisms and policies should provide similar
functionality to the ticket mechanisms and policies of Lottery scheduling.
- Real-time Multiprocessor Scheduling:
Much work has been done dealing with uniprocesor scheduling for
real-time processes, but hardware vendors are moving toward
multiprocessor platforms and the work in multiprocessor scheduling is
more more limited. Quantitatively evaluate the effectiveness of
Solaris running on a 4-processor multiprocessor in meeting the time
constraints of real-time processes.
- WWW Performance:
Why does it sometimes take so long to be able to load a web page?
Where does the time go? To help answer this question, instrument an
Apache web server and build a browser plugin that together measure the
total amount of time it takes to download web pages for viewing in a
browser. Determine how server, client, and network delays contribute
to overall user-perceived response time.
- QoS Policies for Audio and Video Applications:
Lots of folks have talked about adaptive audio and video applications
that can adjust their resource requirements depending on QoS. Little
work has been done on how such applications actually adapt and whether
users would actually find such adaptations qualitatively acceptable.
Using an existing video player application, conduct a series of experiments
to evaluate what adaptation policies are best for different levels of
resource constraints.
- Marketplace for Reusable Software Components:
This project will be conducted with two Columbia Business School
students who are forming an online marketplace that enables
application developers to buy and sell reusable software components.
The business students have a strong background in venture capital but
require a third person with technical experience in software
development. The technical issues that need to be addressed
include: (1) What components are being developed that can be most
easily reused, (2) What components are in demand within the
development and IT industries, (3) Validation and testing requirements,
(4) Licensing, secure delivery, and pricing of the components (5) What
service level is required for various components, (6) How much
customization is required by the sellers of different components in
order to facilitate reuse? In addition to the technical component of
the project, students will learn about the business side of building a
new business.
- Hardware Interactivity Recorder:
What is the interactivity rate between users and computers? To answer
this question, build a hardware device that records keyboard and mouse
events and plays them back with the exact same timing characteristics.
Use the device to measure user interactivity on a desktop computer.
|