VMM: syscall for reordering pages in vm

From: Willibald Krenn
Date: Mon Nov 08 2004 - 06:30:49 EST

Quick Summary:

(Good or Bad?) Idea of implementing a syscall that allows
for virtual memory page exchange by modifying the physical<->virtual
page mapping. Intended usage: Moving pages in virtual memory without
the need to copy them. Feedback welcome!

Longer Version:

I need some advice from the Linux VMM-gurus on following idea: Suppose
a user-land program wants to re-order memory it has allocated and
suppose further that this program has done allocations in a way that the
reordering can be done by exchanging whole pages in virtual memory, as
indicated below.

Page5 Program.. (part 2)
Page4 swappedout/"free"
Page3 Program.. (part 3)
Page2 Program.. (part 4)
Page1 swappedout/"free"
Page0 Program.. (part 1)

How about implementing a system call that allows the user-program to
exchange pages? In the example above e.g. Page 5/Page 1 and
Page 3/Page 2.
As far as I understand, the system call would 'just' have to change the
physical<->virtual mapping of these pages and the exchange would be done
without having to copy -in the example above- 4*PageSize bytes in userland. (Of course there are some additional benefits in the given example, as there is no need to swap in a page as a buffer for the copy-operation...)

However, before investigating this idea any further, I figured it would be best to ask for comments from the experts here.. (I've barely any knowledge about the Linux-VMM and therefore my idea might be complete and utter nonsense.)
Any kind of feedback is greatly appreciated!

Thanks for all your time,
Willibald Krenn

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/