System Services - Extended Discussion

The System Services session was chaired by Brad Chen from Harvard University. It consisted of two paper presentations, followed by a short round of questions.

The first talk, by Michael Franz from University of California at Irvine, was about having a run time code generator as an integral part of the OS that would constantly strive to improve the quality of already executing code.

In the second talk, Mark Day of Lotus Development Corporation argues about the need for using notification services for easy deployment and maintenance of different synchronous groupware applications.


Extended Discussion

The first speaker was Michael Franz (picture to the right) from University of California at Irvine. The title of his talk was "Run-Time Code Generation as a Central System Service".

The code generator has two modes. One, which does a quick and dirty translation so that the program can start running as soon as possible. In the other mode which runs in background, the already executing code is continually re-optimized.

Michael first talked about a platform-independent software distribution format called "slim binaries" that he had developed along with Thomas Kistler. This is based on adaptive compression of augmented syntax trees and Michael said that it gave better compression ratio than anything else he was aware of. It is more compact than running any standard data compression algorithm on Java byte codes.

The main thrust of Michael's doctoral thesis was to show that if the I/O overhead of loading is reduced by making the object code more compact, it could almost compensate for the time spent in regenerating the code at load time. With CPU performance increasing much more than I/O performance, and with wireless computing becoming more popular, these results become more interesting.

But all these code fragments, generated separately at load time, are not as good as the code generated by an optimizing compiler. Addressing this issue, the paper suggests that we have an OS function that recompiles parts of the already running system in the background, guided by the run-time profiling data, and that is able to substitute already executing code in situ. This recompilation would combine an application program with most of its dynamically loaded extentions and libraries into a single, fully cross-optimized, quasi-monolithic image. Giving some examples, Michael said that inlining can now be done across arbitrary boundaries between distribution units. Also, global register allocation, and global cache co-ordination would now be possible.

Michael concluded by saying that since hardware is becoming cheaper, we could just add another processor that only keeps generating code for the remaining processors in the system.

Discussion:


The next speaker was Mark Day from Lotus Development Corporation. The title of his talk was "What Synchronous Groupware Needs: Notification Services".

Mark started out by talking about the problem domain of synchronous groupware. Giving an analogy, he said that synchronous groupware is to meetings (where everything happens at the same time), as asynchronous groupware is to documents (where people create, read and modify them at different times.) Where there is a lot of asynchronous groupware available, like filesystems, databases etc., Mark said that synchronous groupware has been largely a research topic. Chat and network games are some examples of synchronous groupware applications.

Mark argued that the synchronous groupware apps have common co-ordination problems, and that a notification server is what is needed to provide that common service. A notification server basically provides a place to hold a small amount of shared data. It also provides a relatively simple service where the clients can get the shared data from the server, and any time a client updates the shared data, all the clients get informed about it.

Mark said that this service was very different from callbacks in AFS in terms of granularity and frequency of callbacks. He also said that this was different from Zephyr because Zephry did not include any notion of state and it was just pure multicast.

Finally, Mark talked about the particular design choices they made to build a protocol for notification services, namely, protocol NSTP. NSTP has a centralized state, but a decentrelized semantics. The servers maintain the shared state, but only the clients understand it. This offloads the server, and also makes the servers relatively easy to build. Also, the clients can use any encryption scheme, or any compression scheme, etc., and the server doesnot have to know about it.

Discussion: