Abstract:
I am planning to add support for adaptive and application-controlled memory management in Windows NT.
Several application areas need support for application-controlled memory management. They include out-of-core visualization of large data sets (e.g., NASA), scientific simulations, and enterprise level application servers (e.g., web proxy servers and database servers). Many applications also benefit from an adaptive memory management scheme, where the kernel automatically discovers patterns in applications' memory references and adjusts paging policies.
To support these non-traditional memory management schemes, I plan to investigate:
1) methods to log page faults made by an application and to detect patterns in them;
2) methods to implement application-specific paging policies by using a separate thread to adjust reference frequencies to different pages, instead of changing the page replacement policy inside NT;
3) methods to support application-specific prefetching by using asynchronous I/O;
4) methods to increase the spatial locality in paging traffic to disks by affecting the on-disk layout of swap space.
The end product would be a package for application developers that allows them to make advisory calls on page replacement and prefetching to improve the paging performance of their applications.
I believe it is possible to achieve some of goals. NT has good performance monitoring support that provides traces of system activities. NT's cache manager attempts to keep frequently used pages in memory, therefore having a thread reference a set of pages frequently is likely to increase the caching priority of those pages.
The layered driver structure in NT allows me to add additional functionalities through drivers on top of disk device drivers or even file system drivers. I would like to learn more about these features inside Windows NT.
I am quite inexperienced with system development on Windows NT, so I would be very interested in getting feedback from other workshop attendees on the project.
Pei Cao
University of Wisconsin-Madison
Computer Science Department
1210 West Dayton Street
Madison, WI 53706
cao@cs.wisc.edu
(608)262-2252
http://www.cs.wisc.edu/~cao/