On 06/15/2015 09:50 AM, Konstantin Khlebnikov wrote:
This is incomplete implementation of non-isolating memory migration and compaction. It's alive! The main reason -- it can preserve lru order during compaction.
That's nice, and there's also another benefit - no lru_lock taken during migration scanner.
So I think it's worth pursuing. But after brief checking, I'm not sure it can work as it is (but maybe I just overlooked something). What prevents somebody else to isolate the old page from the lru while you are migrating it? Especially in Patch 6, it appears that a PageLRU() is tested without any lock and only then insert_lru_page() takes the lru_lock to do something. This seems racy to me.
Also it makes implementation of migration for various types of pages: zram, balloon, ptes, kernel stacks [ Why not? I've already migrated them accidentally and kernel have crashed in very funny places ] much easier: owner just have to set page->mappingw with valid method a_ops->migratepage. --- Konstantin Khlebnikov (6): pagevec: segmented page vectors mm/migrate: move putback of old page out of unmap_and_move mm/cma: repalce reclaim_clean_pages_from_list with try_to_reclaim_page mm/migrate: page migration without page isolation mm/compaction: use migration without isolation mm/migrate: preserve lru order if possible include/linux/migrate.h | 4 + include/linux/mm.h | 1 include/linux/pagevec.h | 48 ++++++++- include/trace/events/compaction.h | 12 +- mm/compaction.c | 205 +++++++++++++++++++++---------------- mm/filemap.c | 20 ++++ mm/internal.h | 12 +- mm/migrate.c | 141 +++++++++++++++++++++---- mm/page_alloc.c | 35 ++++-- mm/swap.c | 69 ++++++++++++ mm/vmscan.c | 42 +------- 11 files changed, 410 insertions(+), 179 deletions(-) -- Konstantin -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>
-- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>