Introduction General-purpose operating systems provide inadequate support for server applications One of the problem is lack of integration among the various input-output (I/O) subsystems
Introduction The Problems of separate buffering /caching: Redundant data copying Multiple buffering Lack of cross-subsystem optimization IO-Lite: unifies all buffering and caching in the system for general purposing OS.
IO-Lite Design: Principles Immutable Buffers All I/O data buffers are immutable. Page Based Control Buffer Aggregates Buffer aggregates are instances of an abstraction data type (ADT) that represent I/O data To modify the I/O data, buffer aggregates are used
IO-Lite Design Interprocess Communication (IPC) IO-Lite uses an IPC mechanism similar to fbufs to support safe concurrent sharing from network subsystem to the file system from x-kernel to a general-purpose operating system IO-Lite and the Filesystem The filesystem itself remains unchanged
IO-Lite Design Access Control IO-Lite maintains cached pools of buffers with a common access control list (ACL). Data objects with the same ACL can be allocated in the same IO-Lite buffer
IO-Lite and Applications To take full advantage of IO-Lite, application programs can use an extended I/O API that is based on buffer aggregates. IO-Lite I/O API Size_t IOL _read (int fd, IOL_Agg **aggr, size_t size) Size_t IOL_write (int fd, IOL_Agg *aggr)
IO-Lite Design IO-Lite and the Network Some modifications are required to network device drivers Programs using IO-Lite must determine the ACL of a data object prior to storing the object in memory With IO-Lite, early demultiplexing is necessary for best performance
IO-Lite Design Cache Replacement Cache replacement in a unified caching /buffering system is difficult from that of a conventional file cache Cache entries are maintained in a list ordered first by current use, then by time of last access. (eg. read, write,.. )
IO-Lite Design Impact of Immutable I/O buffers All data is modified Only additional cost is a buffer allocation Only a subset of the data is modified Chaining, indexing, buffer allocation cost Widely scattered Use mmap of UNIX system
IO-Lite Design Cross-Subsystem Optimization A unified buffering/caching system enables certain optimizations across applications and OS subsystems not possible in conventional I/O systems. Eg. Checksum Generation number and address identify uniquely data contents
IO-Lite Design Operation in a Web server IO-Lite’s ability to eliminate data copying and multiple buffering can dramatically reduce the cost of serving static and dynamic content The impact is particularly strong in the case when a cached copy of the request content exists
Implementation Network System BSD Network system File System Some modification of 4.4 BSD derived system VM System BSD VM system IPC System Modified BSD IPC System
Conclusion & Critique Conclustion This paper presents the design, implementation, and evaluation of IO-Lite IO-Lite shows good performance Critique Well described and considered system Idea is simple and excellent
Your consent to our cookies if you continue to use this website.