Server computer systems are those that provide computing or storage services catering to a potentially large number of simultaneous clients. The ubiquity of computer networks and Internet services underlies the importance of servers in today's digital world. Further, the resurgence of thin-client computing promises to return many existing desktop applications into centrally managed services. Our research on server computer systems is guided by two high-level visions. First, complex systems like those hosting data-intensive services are particular areas of explosive growth. This is the result of the increasing trend that information (or data) rather than computing be the driving force behind new applications. Second, although past work has focused mostly on improving performance and quality-of-service of server system support, future work must additionally emphasize system manageability and dependability.
Data-intensive online services demand high-capacity data input/output (I/O). The complexity of efficient I/O support within the context of server computer systems makes it an interesting problem area. Our research has studied the fundamental tradeoff between I/O prefetching efficiency and its potential cost for the concurrent sequential I/O commonly seen in server environments. Based on an understanding of this tradeoff, we developed a new I/O prefetching technique (called competitive prefetching) which balances efficiency gain and resource waste [EuroSys'07]. Further, this project has uncovered and addressed deficiencies in the management of memory containing prefetched data in server systems [FAST'05]. Our recent work has also started looking into I/O issues (data access tracing in particular) on the virtual machine-based systems [USENIX'07].
Complex systems may perform anomalously due to various implementation problems, such as over-simplifications, mis-handling of special cases, or improper management of system component interactions. Our research investigates new approaches and techniques to examine comprehensively the large space of possible runtime conditions and to characterize performance anomalies in system software. In particular, our work has resulted in the identification of previously unknown I/O performance bugs in the Linux operating system [FAST'05, SIGMETRICS'09]. We also explored the general use of references in I/O performance characterization [SIGMETRICS'09].
An education component of this project is to develop an instruction platform for students to develop/evaluate various I/O system features in the operating systems course. Details of this effort can be found at Vesper: Realistic and simple instructional platform for student OS performance evaluation.
Relevant publications can be found here.