Runtime support for effective memory management in large-scale applications
Anand Sivasubramaniam, Murali Vilayannur · 2005
As processor speeds continue to advance at a rapid pace, accesses to the I/O subsystem are increasingly becoming the bottleneck in the performance of large-scale applications. In spite of technological advances in peripheral devices, provisioning and maintenance of large buffers in memory remains a crucial technique for achieving good performance, but is only effective if we can achieve good hit rates. This thesis describes the runtime system support to determine what should go into a I/O cache and when to avoid accessing it, as well as techniques to improve the hit ratio itself by choosing appropriate candidate cache blocks for eviction/replacement. Such techniques are equally applicable for both explicitly and implicitly I/O intensive applications that access data either through a file-system interface or through the virtual memory interface. While the afore-mentioned techniques can boost the performance for a single I/O intensive application, an important consideration that needs to be addressed for practical reasons is the effects of multi-programming, where multiple applications are run simultaneously for better resource utilization. The thesis will conclude with the design and implementation of a runtime system scheduling strategy on top of an un-modified process scheduler in the operating system that can be used to ensure that performance of many large-scale applications does not get degraded in multi-programmed scenarios.