Messages in this thread | | | Date | Mon, 26 Apr 2004 18:12:37 -0700 (PDT) | From | Shantanu Goel <> | Subject | 2.6.6-rc{1,2} bad VM/NFS interaction in case of dirty page writeback |
| |
Hi,
During page reclamation when the scanner encounters a dirty page and invokes writepage(), if the FS layer returns WRITEPAGE_ACTIVATE as NFS does, I think the page should not be placed on the active as is presently done. This can cause a lot of extraneous swapout activity because in the presence of a large active list, the pages being written out will not be reclaimed quickly enough. It also seems counter intuitive since the scanner has just determined that the page has not been recently referenced.
Shouldn't the following code from shrink_list():
res = mapping->a_ops->writepage(page, &wbc); if (res < 0) handle_write_error(mapping, page, res); if (res == WRITEPAGE_ACTIVATE) { ClearPageReclaim(page); goto activate_locked; }
read:
res = mapping->a_ops->writepage(page, &wbc); if (res < 0) handle_write_error(mapping, page, res); if (res == WRITEPAGE_ACTIVATE) { ClearPageReclaim(page); goto keep_locked; }
I can observe the benefit of this change if I run a dd on an NFS mount with the active list full of mostly mapped pages. The stock kernel ends up paging out quite a bit of memory whereas the modified kernel does not.
Comments?
Thanks, Shantanu
__________________________________ Do you Yahoo!? Win a $20,000 Career Makeover at Yahoo! HotJobs http://hotjobs.sweepstakes.yahoo.com/careermakeover - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |