Marking PG_writeback pages as PG_rotated once they're chosen candidates
for eviction increases the number of rotated pages dramatically, but
that does not necessarily increase performance (I was unable to see any
performance increase under the limited testing I've done, even though
the pgrotated numbers were _way_ higher).
Another issue is that increasing the number of rotated pages increases
lru_lock contention, which might not be an advantage for certain
workloads.
So, any change in this area needs careful study under a varied,
meaningful set of workloads and configurations (which has not been
happening very often).
diff --git a/mm/vmscan.c b/mm/vmscan.c
index 5a61080..26319eb 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -447,8 +447,14 @@ static int shrink_list(struct list_head if (page_mapped(page) || PageSwapCache(page))
sc->nr_scanned++;
- if (PageWriteback(page))
+ if (PageWriteback(page)) {
+ /* mark writeback, candidate for eviction pages as + * PG_reclaim to free them immediately once they're + * laundered.
+ */
+ SetPageReclaim(page);
goto keep_locked;
+ }
referenced = page_referenced(page, 1);
/* In active use or really unfreeable? Activate it. */