Windows and Linux machines in the Systems Lab and Showcase
EDHPC: Cluster of eight 4-way Linux machines (as used in Project 1):
- Enforcement of real-time constraints possible through ability to have priviledges akin to super-user.
- Ability to run on dedicated single (4 way shared memory multiprocessor) or multiple machines, networked via switched 100MB ethernet (Myrinet also available if needed).
- Ability to use experimental kernel-level real-time facilities
- Contact Neil Bright, Christian Poellabauer (chris@cc), Ivan Ganev (ganev@cc) for details on hardware/software setup and DWCS.
Compaq iPAQ handheld computers using wireless links (multiple machines available):
- Running Linux (multiple versions of Linux are available on these machines).
- Both Java and C/C++ programming possible.
- Ability to use dedicated base station and/or use campus wireless network, via 11MB WaveLAN wireless ethernet cards, if needed
- Contact Yuan Chen (yuanchen@cc), Matt Wolenetz (wolenetz@cc), or Dong Zhou (zhou@cc) for additional information.
"Skiff" boards running Linux (2 boards available):
- With StrongARM processor, attached cameras and network links available.
- Cross-development on Linux.
- Contact Phil Hutto (pwh@cc) for more information.
IXA Lab and machines: communication co-processors and network routers, associated with a cluster of eight dual Pentium IVs:
- You can use Intel IXP1200 routers, running VXWorks (not in current use) or Linux, with full cross- and on-platform development , debugging, and simulation support
- Contact Ada Gavrilovska (ada@cc), Ivan Ganev (ganev@cc), Jiantao Kong (jiantao@cc), Weidong Shi or Josh Fryman (fryman@cc) for more information on IXPs and the IXP cluster.
Whatever additional real-time or embedded system platforms available to you elsewhere (must have permission of instructor). WE CAN PURCHASE SELECTED HARDWARE, as well, including Lego robot and camera kits, etc.
Subject to slight changes following Karsten & Calton's Review!
Note: This can be a group project, maximum 3 people per group.
1) Proposal (Due sometime after Spring Break)...To propose your project for this class, you must submit a proposal detailing:
- brief project description
- purpose
- solution approach you intend to use (experimentation and evaluation must be part of this approach)
- expected outcome/results
- at least two different intermediate project steps, with delivery items and deadlines for each
- final project deadline sometime during the WEEK BEFORE finals
2) Intermediate Reports
Your intermediate and final deliverables should include delivery items and deadlines for:
3) Final Report
- Background work, such as producing a bibliography of relevant papers and having read them and having designed suitable algorithms/approaches and having learned or looked at suitable tools to be used for your project, including target platforms.
- Implementing and debugging the necessary software.
- Must include software testing and performance evaluation for the platforms you have chosen. Such evaluations may also be of a theoretical nature, if you chose to develop a novel algorithm, for instance, but your project must include experimental research in addition to algorithm development.
A) Submit an on-line report consisting of the following parts.
B) Submit a .tar file including the software produced. Note that any "company proprietary" software cannot be used for credit in this course. We will accept only "published" software, i.e., we won't sign any non-disclosure agreements to protect the software written for the course. (By software we mean the source code and documentation, including the testing/demo programs and their input/output.)
- A statement of your approach to the project and the technique used to solve it, including a list of references to and discussion of related research (in which you must argue how your work is new or differs from other work.) (4 pages minimum, 8 pages maximum.)
- An evaluation of your work, where you describe the performance characteristics / improvements you attained, typically experimentally, sometimes in theory or via simulation. (Please be prepared to defend your choice of evaluation as suitable for your project.) (4 pages minimum, 8 pages maximum.)
- A conclusion, stating the main results of your work. This conclusion must summarize your results and also indicate a list of next steps concerning your work (what might be interesting to do next). (2 pages minimum, 4 pages maximum.)
- A discussion relating the work you did to the topics we studied in class. Comment on what papers in class relate to what you did or to extensions of what you did. (Approx. 1 page.)
C) Deliver a presentation to the class about your project.
- Use multiple physical communication devices attached to one machine,but schedule their use such that certain real-time guarantees are met for applications. Build on existing packet scheduling support part of Linux releases. Contact ganev@cc for more information.
- Construct analysis functions that evaluate communication performance at runtime, then export such information to elsewhere in the kernel or to user level. Use such information to adapt protocols and/or application-level communications at runtime, to improve predictability or real-time performance. Contact chris@cc for more information. (/proc extensions)
- Port a heavily parameterized and instrumented reliable UDP protocol from user space to the Linux kernel, and experiment with effects of different reliability methods for wireless or for wide area communications (note: wireless vs. wide area constitute different projects). The goal is to develop adaptive protocols to improve predictability and/or performance for real-time applications. Contact Qi He (qhe@cc) for more information about RUDP. Contact chris@cc for more information about desired real-time performance. Contact Matt Wolf for more information about large data transfer performance in wide area nets.
- Develop an efficient communication layer using PCI for communication from Linux hosts to Linux-based IXP communication co-processors. Contact ada@cc or ganev@cc for more information.
- Develop novel kernel-level resource monitoring functions, deployed on cluster machines, includes Linux kernel hacking, working with kernel-to-kernel communications, remote extension of operating system kernels with monitoring functionality.
- Develop compiler support for alternative layout/organization/marshaling and unmarshaling of binary data (based on XML-level data descriptions), thus affecting performance and predictability of data movement via communication links. Contact Patrick Widener (pmw@cc) for more information.
- Extend an Apache-based real-time web server, using Apache to support streaming communications. This can also involve using and/or extending the Linux kernel's http stack (khttp). Contact chris@cc for more information.
- Start with publish/subscribe software written in Java or software written with C, used on wired, wireless or embedded Linux systems. Contact eisen@cc for more information on the C version, Dong Zhou (zhou@cc) for more information on the Java version. Add specific functionality geared to the embedded or real-time systems domains, including
- real-time scheduling for events (contact chris@cc for more information), or
- support for event routing and re-routing in self-organizing networks or for scalability for Internet-wide systems (contact yuanchen@cc for more information), or
- support for adapting application levels in response to changes at network level (contact eisen@cc for more information on building effective `attribute' support), or
- support for automatic replication of communications for improved reliability (contact ada@cc for more information).
- support for adhoc networking, that is support for peer to peer communications in environments that experience dis- and re-connection.
- Develop dynamic monitoring support to diagnose communication or platform performance for embedded/wireless systems, based on existing cluster-level monitoring facility (contact chris@cc for more information). Kernel ports of selected functionality are possible, as well.
- Develop sample distributed applications. Most interesting are:
- ubiquitous or embedded applications that involve both real-time sensing and reactions to sensor data and use wearable or portable machines,
- experimentation with entire control loops, such as remote real-time colloboration, tracking via cameras, or robot-based tracking and robot control,
- innovative distributed real-time applications including video games, telepresence applications, or any application that uses real-time feeds (e.g., gotten from Atlanta's traffic web pages or from sports actions), and/or using immersive equipment available in CoC (available equipment includes 3D headsets, video wall, Immersadesk) and large data sets (e.g., earth observational data).
- Propose to instructors and also contact mwolf@cc for more information on immersive equipment.
- Construct analysis functions that evaluate communication performance at runtime, then export such information to elsewhere in the kernel or to user level. Use such information to adapt protocols and/or application-level communications at runtime, to improve predictability or real-time performance. Contact chris@cc for more information. (/proc extensions)
- work on novel co-processor-based communication protocols, including R(emote)DMA. (Collaborate with two other graduate students doing a similar project for another class, schwan@cc for details.)
- develop co-processor - resident security functionality, such as tracking, snooping, and intrusion detection
Hardware/Software Facilities:
Possible projects:
- A WAP 1.2 compliant cell phone and needed services (planned, not available yet).
- OpenWave SDK, WAP Edition 5.0 (includes a WAP device emulator) and WAP Push Library (Java API) (free for download at openwave.com)
- Receiving large amount of irrelevant messages is a concern when cell phones are used for notification/paging purposes. Filtering out spams and refining notification triggers require customization support. This project will use JECh's eager handler facility to provide such support. (contact zhou@cc for support)
- Some future applications (such as speech to text message tranformation) for cell phones have most of their computation performed at remote service stations rather than locally on the cell phone. Cell phones, however, change their service stations when they roam around. Hence, future applications for cell phones should be able to seemlessly migrate around (with live communication) among service stations. This project will use JECho's communiction endpoint migration support but will improve on QoS aspects. (contact zhou@cc for support)
- XML (or its variation) is also used in wireless commmunications. Efficiency, however, is even more important in such environment than wired networks. ECho has an efficient XML transport mechanism which can be ported to wireless communication domain. (contact pmw@cc or eisen@cc for support)
Modify a Java-based multi-robot simulation to remove inefficient N^2 loops, etc. via parallelization or a distributed implementation. Contact: <tucker@cc.gatech.edu> One of the cool things about this simulation is that the control systems that run on the simulated robots can run (without recompiling) on real robots later on. The simulation provides two things: a prototyping environment, and a place to simulate at larger scales (100s of robots) that we can't to practically with real robots.
Look into the suggestions and the project proposals from CS 6235, Real Time Systems. These are examples of the kinds of projects that are acceptable and available to do.