Publications

1997
Endo, Yasuhiro, and Margo I Seltzer. 1997. “Measuring Windows NT�Possibilities and Limitations.” First USENIX Windows NT Workshop.
Brown, Aaron B, and Margo I Seltzer. 1997. “Operating system benchmarking in the wake of lmbench: A case study of the performance of NetBSD on the Intel x86 architecture.” ACM SIGMETRICS Performance Evaluation Review 25 (1). ACM: 214–224.
Baker, Ellie, and Margo I Seltzer. 1997. “The mug-shot search problem”.
Manley, Stephen, and Margo Seltzer. 1997. “Web Facts and Fantasy.” 1997 USENIX Symposium on Internet Technologies and Systems. Publisher's Version Abstract
There is a great deal of research about improving Web server performance and building better, faster servers, but little research in characterizing servers and the load imposed upon them. While some tremendously popular and busy sites, such as netscape.com, playboy.com, and altavista.com, receive several million hits per day, most servers are never subjected to loads of this magnitude. This paper presents the analysis of internet Web server logs for a variety of different types of sites. We present a taxonomy of the different types of Web sites and characterize their access patterns and, more importantly, their growth. We then use our server logs to address some common perceptions about the Web. We show that, on a variety of sites, contrary to popular belief, the use of CGI does not appear to be increasing and that long latencies are not necessarily due to server loading. We then show that, as expected, persistent connections are generally useful, but that dynamic time-out intervals may be unnecessarily complex and that allowing multiple persistent connections per client may actually hinder resource utilization compared to allowing only a single persistent connection.
Seltzer, Margo, and Christopher Small. 1997. “Self-Monitoring and Self-Adapting Operating Systems.” Sixth Workshop on Hot Topics in Operating Systems. Publisher's Version Abstract

Extensible operating systems allow applications to modify kernel behavior by providing mechanisms for application code to run in the kernel address space. Extensibility enables a system to efficiently support a broader class of applications than is currently supported. This paper discusses the key challenge in making extensible systems practical: determining which parts of the system need to be extended and how. The determination of which parts of the system need to be extended requires self-monitoring, capturing a significant quantity of data about the performance of the system. Determing how to extend the system requires self-adaptation. In this paper, we describe how an extensible operating system (VINO) can use in situ simulation to explore the efficacy of policy changes. This automatic exploration is applicable to other extensible operating systems and can make these systems self-adapting to workload demands.

Small, Christopher. 1997. “A Tool For Constructing Safe Extensible C++ Systems.” 1997 Conference on Object-Oriented Technologies and Systems. Publisher's Version Abstract

The boundary between application and system is becoming increasingly permeable. Extensible applications, such as web browsers, database systems, and operating systems, demonstrate the value of allowing end-users to extend and modify the behavior of what was formerly considered to be a static, inviolate system. Unfortunately, flexibility often comes with a cost: systems unprotected from misbehaved end-user extensions are fragile and prone to instability.

Object-oriented programming models are a good fit for the development of this kind of system. An extension can be designed as a refinement of an existing class, and loaded into a running system. In our model, when code is downloaded into the system, it is used to replace a virtual function on an existing C++ object. Because our tool is source-language neutral, it can be used to build safe extensible systems written in other languages as well.

There are three methods commonly used to make end-user extensions safe: restict the extension language (e.g., Java), interpret the extension language (e.g., Tcl), or combine run-time checks with a trusted environment. The third technique is the one discussed here; it offers the twin benefits of the flexibility to implement extensions in an unsafe language, such as C++, and the performance of compiled code.

MiSFIT, the Minimal i386 Software Fault Isolation Tool, can be used as the central component of a tool set for building safe extensible systems in C++. MiSFIT transforms C++ code, compiled by g++, into safe binary code. Combined with a runtime support library, the overhead of MiSFIT is an order of magnitude lower than the overhead of interpreted Java, and permits safe extensible systems to be written in C++.

1996
Smith, Keith A, and Margo I Seltzer. 1996. “A Comparison of FFS Disk Allocation Policies.” USENIX annual technical conference, 15–26.
Seltzer, Margo. 1996. “James Gwertzman, Microsoft Corporation.” Proceedings of the.. USENIX Technical Conference. Usenix Association, 141.
Gwertzman, James, and Margo Seltzer. 1996. “People, places, and things: the next generation Web.” Proceedings of the 41st IEEE International Computer Conference, 65. IEEE Computer Society.
Chen, Bradley J, Yasuhiro Endo, Kee Chan, David Mazieres, Antonio Dias, Margo Seltzer, and Michael D Smith. 1996. “The measured performance of personal computer operating systems.” ACM Transactions on Computer Systems (TOCS) 14 (1). ACM: 3–40.
Endo, Yasuhiro, Zheng Wang, Bradley J Chen, and Margo I Seltzer. 1996. “Using latency to evaluate interactive system performance.” ACM SIGOPS Operating Systems Review 30 (si): 185–199.
Small, Christopher, and Margo Seltzer. 1996. “A Comparison of OS Extension Technologies.” 1996 USENIX Annual Technical Conference. Publisher's Version Abstract
The current trend in operating systems research is to allow applications to dynamically extend the kernel to improve application performance or extend functionality, but the most effective approach to extensibility remains unclear. Some systems use safe languages to permit code to be downloaded directly into the kernel; other systems provide in-kernel interpreters to execute extension code; still others use software techniques to ensure the safety of kernel extensions. The key characteristics that distinguish these systems are the philosophy behind extensibility and the technology used to implement extensibility. This paper presents a taxonomy of the types of extensions that might be desirable in an extensible operating system, evaluates the performance cost of various extension techniques currently being employed, and compares the cost of adding a kernel extension to the benefit of having the extension in the kernel. Our results show that compiled technologies (e.g. Modula-3 and software fault isolation) are good candidates for implementing general-purpose kernel extensions, but that the overhead of interpreted languages is sufficiently high that they are inappropriate for this use.
Seltzer, Margo, Christopher Small, and Michael D. Smith. 1996. “Symbiotic Systems Software.” 1996 Workshop on Compiler Support for Systems Software. Publisher's Version Abstract

Historically, advances in compiler technology have been driven by the characteristics of applications, particularly those that comprise the SPEC benchmark suite. To achieve high performance, many of the most promising compilation techniques rely on accurate profile information to direct the optimization and instruction scheduling process. Prior studies have shown that for these applications it is possible to generate representative data sets that are suitable for profile-based compilation algorithms. Though we would like to apply sophisticated compiler techniques to operating systems (and eventually other multi-threaded software systems such as database management systems), we are presented with two significant problems. First, the process of profiling the operating system is more difficult than profiling an application, because of the complexity of the operating system and the interaction between the operating system and its applications. Second, even when one can profile the operating system, there seems to be no general agreement of what constitutes a representative data set for such a large and complex system. This implies that the optimization of the operating system in isolation is not the correct approach. A better approach for improving the combined system and application performance is to allow the compiler to symbiotically optimize the operating system in the context of the applications that use it. This paper proposes a structuring of the compiler and operating system so that it is possible to perform this type of symbiotic, cross-address space compile-time optimization.

Gwertzman, James, and Margo Seltzer. 1996. “World Wide Web Cache Consistency.” 1996 USENIX Annual Technical Conference. Publisher's Version Abstract
The bandwidth demands of the World Wide Web continue to grow at a hyper-exponential rate. Given this rocketing growth, caching of web objects as a means to reduce network bandwidth consumption is likely to be a necessity in the very near future. Unfortunately, many Web caches do not satisfactorily maintain cache consistency. This paper presents a survey of contemporary cache consistency mechanisms in use on the Internet today and examines recent research in Web cache consistency. Using trace-driven simulation, we show that a weak cache consistency protocol (the one used in the Alex ftp cache) reduces network bandwidth consumption and server load more than either time-to-live fields or an invalidation protocol and can be tuned to return stale data less than 5% of the time.
Seltzer, Margo, Yasuhiro Endo, Christopher Small, and Keith A. Smith. 1996. “Dealing with Disaster: Surviving Misbehaved Kernel Extensions.” 1996 Symposium on Operating Systems Design and Implementation. Seattle, WA. Publisher's Version Abstract

Today’s extensible operating systems allow applications to modify kernel behavior by providing mechanisms for application code to run in the kernel address space. The advantage of this approach is that it provides improved application flexibility and performance; the disadvantage is that buggy or malicious code can jeopardize the integrity of the kernel. It has been demonstrated that it is feasible to use safe languages, software fault isolation, or virtual memory protection to safeguard the main kernel. However, such protection mechanisms do not address the full range of problems, such as resource hoarding, that can arise when application code is introduced into the kernel. In this paper, we present an analysis of extension mechanisms in the VINO kernel. VINO uses software fault isolation as its safety mechanism and a lightweight transaction system to cope with resource-hoarding. We explain how these two mechanisms are sufficient to protect against a large class of errant or malicious extensions, and we quantify the overhead that this protection introduces. We find that while the overhead of these techniques is high relative to the cost of the extensions themselves, it is low relative to the benefits that extensibility brings.

1995
Seltzer, Margo, Keith A Smith, Hari Balakrishnan, Jacqueline Chang, Sara McMains, and Venkata Padmanabhan. 1995. “File system logging versus clustering: A performance comparison.” Proceedings of the USENIX 1995 Technical Conference Proceedings, 21–21. USENIX Association.
Gwertzman, James, and Margo Seltzer. 1995. “Autonomous replication across wide-area internetworks.” ACM SIGOPS Operating Systems Review 29 (5): 234.
Gwertzman, James S, and Margo Seltzer. 1995. “The case for geographical push-caching.” Hot Topics in Operating Systems, 1995.(HotOS-V), Proceedings., Fifth Workshop on, 51–55. IEEE.
Chen, Bradley J, HT Kung, and Margo I Seltzer. 1995. “MOSS: A Mobile Operating System Substrate”.

Pages