Re: Atomic operation for physically moving a page (for memory defragmentation)
From: Dave Hansen <hidden>
Date: 2004-06-19 04:25:54
Also in:
lkml
On Fri, 2004-06-18 at 20:15, Ashwin Rao wrote:
The problem is the memory fragmentation. The code i am writing is for the memory defragmentation as proposed by Daniel Phillips, my project partner Alok mooley has given mailed a simple prototype in the mid of feb.
Ahhh.... *That* code :) Do you have an updated version you'd like to share? I'm curious how you integrated the suggestions from February.
quoted
(*) Yes, I know the BKL isn't something you want to grab if you can help it.Isnt it a bad idea to take the BKL, the performance of SMP systems will drastically be hampered.
Only during a defragment operation. Are you planning to run the system under constant defragmentation?
quoted
However, if we're on an unlikely error path or similar and other options aren't suitable...Maintaining atomicity in uniprocessor systems is easy by preempt_enable and preempt_disable during the operation. This implementation cannot be used for SMP systems. Now during the time a page is copied/updatede if a page is accessed the copied contents become invalid, as updation is not done. Also during updation a similar situation might arise. The problem we are facing is to maintain the atomicity of this operation on SMP boxes.
I think what you really want to do is keep anybody else from making a new pte to the page, once you've invalidated all of the existing ones, right? Holding a lock_page() should do the trick. Anybody that goes any pulls the page out of the page cache has to do a lock_page() and check page->mapping before they can establish a pte to it, so you can stop that. Since you're invalidating page->mapping before you move the page (you *are* doing this, right?), it will end up working itself out. -- Dave -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"aart@kvack.org"> aart@kvack.org </a>