Recent studies on operating system support for concurrent server systems mostly target CPU-intensive workloads with light disk I/O activities. However, an important class of server systems that access a large amount of disk-resident data, such as the index searching server of large-scale Web search engines, has received limited attention. In this thesis work, we examine operating system techniques to improve the performance of data-intensive server systems under concurrent execution. We propose OS enhancements in three aspects of the operating system: file system prefetching, memory management, and disk I/O system. First, we propose a competitive prefetching strategy that can balance the overhead of disk I/O switching and the wasted I/O bandwidth on prefetching unnecessary data. Second, we explore a new memory management scheme for prefetched data, in order to reduce prefetching-incurred page thrashing at high execution concurrency. Third, we present five performance anomalies we identified in the Linux I/O system, and provide general discussions on operating system performance debugging.
We have implemented the proposed techniques in the Linux 2.6 kernel. Performance evaluation on microbenchmarks and real applications shows promising results.