Currently we are considering only the userspace anonymous pages for movement. As of yet, we have not considered kernel pages for movement due to the 3GB rule. Since userspace allocations are by page-faults, we consider only single pages (0th order) for movement. Thus, only the pages which are not file-backed & are on LRU lists are currently being considered for movement. We now want to broaden our definition of a movable page, & consider kernel pages & file-backed pages also for movement. Do file-backed pages also obey the 3GB rule? In order to move such pages, we will have to patch macros like "virt_to_phys" & other related macros, so that the address translation for pages moved by us will take place vmalloc style, i.e., via page tables, instead of direct +-3GB. Is it worth introducing such an overhead for address translation (vmalloc does it!)? If no, then is there another way out, or is it better to stick to our current definition of a movable page? Identifying pages moved by us may involve introducing a new page-flag. A new page-flag for per-cpu pages would be great, since we have to traverse the per-cpu hot & cold lists in order to identify if a page is on the pcp lists. As of now, we have adopted a failure based approach, i.e, we defragment only when a higher order allocation failure has taken place (just before kswapd starts swapping). We now want to defragment based on thresholds kept for each allocation order. Instead of a daemon kicking in on a threshold violation (as proposed by Mr. Daniel Phillips), we intend to capture idle cpu cycles by inserting a new process just above the idle process. Now, when we are scheduled, we are sure that the cpu is idle, & this is when we check for threshold violation & defragment. One problem with this would be when to reschedule ourselves (allow our preemption)? We do not want the memory state to change beneath us, so right now we are not allowing our preemption. This will ofcourse hog the cpu, & we may not be able to reschedule just by checking the need_resched flag. Any advice or suggestions regarding this problem? Also, will the idle cpu approach be better or will the daemon based approach be better? Any suggestions,advice & comments will be highly appreciated. Thanking you, -Alok __________________________________ Do you Yahoo!? Yahoo! SiteBuilder - Free web site building tool. Try it! http://webhosting.yahoo.com/ps/sb/