Re: [PATCH RFC v0 0/6] mm: proof-of-concept memory compaction without isolation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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>



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]