230 likes | 417 Views
IO-Lite: A Unified I/O Buffering and Caching System. Vivek S. Pai, Peter Drusche Willy and Zwaenepoel 산업공학과 조희권. Contents. Introduction IO-Lite Design Implementation Performance Conclusion & Critique. Introduction.
E N D
IO-Lite: A Unified I/O Buffering and Caching System Vivek S. Pai, Peter Drusche Willy and Zwaenepoel 산업공학과 조희권
Contents • Introduction • IO-Lite Design • Implementation • Performance • Conclusion & Critique
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 Design • 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
Performance Figure 8. Various application runtimes
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