Many computationally intensive parallel applications are also memory intensive.
Even when the memory required for a particular application is larger than the
available memory, the virtual memory system permits the program to run, but the
substantial cost of taking expensive PageFaults involving disk accesses. Since
the application developers will have a better idea of the application's memory
usage than the OS, Out-of-core techniques are often developed for each application
seperately.
We present a generic, application dependent techniques that automatically improve
paging performance. The 3 methods we explore are:
Prefetching:
In this method the converse scheduler creates a extra thread in which the
page faults are taken by effectively overlapping the pagefault time with
the application's computation time
Multi-threaded Object Memory Management:
In this scheme the new thread in the Converse scheduler effectivelt does the
complete object memory management i.e; the Converse scheduler will decide
which objects will be in memory and which should be kicked out of memory.
Essentially, we are exploiting the Converse Scheduler's look ahead Queue to
guess the applications's memory access pattern and use it as the
"working set" for the memory management. So all the "Page Replacement Algorithms"
are effectively useful here.
This method is similar to the previous method, except that to avoid the
overhead involved in the extra thread (context switching time, synchronization
issues), using Asynchronou I/O in a single thread of converse to do the
Object Memory Management.
|