Messages in this thread | | | Date | Tue, 20 Jul 2010 00:48:39 +0200 | From | Johannes Weiner <> | Subject | Re: [PATCH 8/8] vmscan: Kick flusher threads to clean pages when reclaim is encountering dirty pages |
| |
On Mon, Jul 19, 2010 at 03:37:37PM +0100, Mel Gorman wrote: > On Mon, Jul 19, 2010 at 10:23:49AM -0400, Christoph Hellwig wrote: > > On Mon, Jul 19, 2010 at 02:11:30PM +0100, Mel Gorman wrote: > > > + /* > > > + * If reclaim is encountering dirty pages, it may be because > > > + * dirty pages are reaching the end of the LRU even though > > > + * the dirty_ratio may be satisified. In this case, wake > > > + * flusher threads to pro-actively clean some pages > > > + */ > > > + wakeup_flusher_threads(laptop_mode ? 0 : nr_dirty + nr_dirty / 2); > > > + > > > > Where is the laptop-mode magic coming from? > > > > It comes from other parts of page reclaim where writing pages is avoided > by page reclaim where possible. Things like this > > wakeup_flusher_threads(laptop_mode ? 0 : total_scanned);
Actually, it's not avoiding writing pages in laptop mode, instead it is lumping writeouts aggressively (as I wrote in my other mail, .nr_pages=0 means 'write everything') to keep disk spinups rare and make maximum use of them.
> although the latter can get disabled too. Deleting the magic is an > option which would trade IO efficiency for power efficiency but my > current thinking is laptop mode preferred reduced power.
Maybe couple your wakeup with sc->may_writepage? It is usually false for laptop_mode but direct reclaimers enable it at one point in do_try_to_free_pages() when it scanned more than 150% of the reclaim target, so you could use existing disk spin-up points instead of introducing new ones or disabling the heuristics in laptop mode.
| |