linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Anshuman Khandual <khandual@linux.vnet.ibm.com>
To: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>, Zi Yan <zi.yan@sent.com>
Cc: "linux-mm@kvack.org" <linux-mm@kvack.org>,
	"dnellans@nvidia.com" <dnellans@nvidia.com>,
	"apopple@au1.ibm.com" <apopple@au1.ibm.com>,
	"paulmck@linux.vnet.ibm.com" <paulmck@linux.vnet.ibm.com>,
	"khandual@linux.vnet.ibm.com" <khandual@linux.vnet.ibm.com>,
	"zi.yan@cs.rutgers.edu" <zi.yan@cs.rutgers.edu>
Subject: Re: [RFC PATCH 07/14] migrate: Add copy_page_lists_mthread() function.
Date: Thu, 9 Mar 2017 18:32:30 +0530	[thread overview]
Message-ID: <051b8789-f88b-0fdb-f150-7ef389fddae1@linux.vnet.ibm.com> (raw)
In-Reply-To: <20170223085419.GA28246@hori1.linux.bs1.fc.nec.co.jp>

On 02/23/2017 02:24 PM, Naoya Horiguchi wrote:
> On Fri, Feb 17, 2017 at 10:05:44AM -0500, Zi Yan wrote:
>> From: Zi Yan <ziy@nvidia.com>
>>
>> It supports copying a list of pages via multi-threaded process.
>> It evenly distributes a list of pages to a group of threads and
>> uses the same subroutine as copy_page_mthread()
> The new function has many duplicate lines with copy_page_mthread(),
> so please consider factoring out them into a common routine.
> That makes your code more readable/maintainable.

Though it looks very similar to each other. There are some
subtle differences which makes it harder to factor them out
in common functions.

int copy_pages_mthread(struct page *to, struct page *from, int nr_pages)

* This takes a single source page and single destination
  page and copies contiguous address data between these
  two pages. The size of the copy can be a single page
  for normal page or it can be multi pages if its a huge
  page.

* The work is split into PAGE_SIZE * nr_pages / threads and
  assigned to individual threads which is decided based on
  number of CPUs present on the target node. A single thread
  takes a single work queue job and executes it.

int copy_page_list_mt(struct page **to, struct page **from, int nr_pages)

* This takes multiple source pages and multiple destination
  pages and copies contiguous address data between two pages
  in a single work queue job. The size of the copy is decided
  based on type of page whether normal or huge.

* Each job does a single copy of a source page to destination
  page and we create as many jobs as number of pages though
  they are assigned to number of thread based on the number
  of CPUs present on the destination node. So one CPU can
  get more than one page copy job scheduled.

- Anshuman

 

  


--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2017-03-09 13:02 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-17 15:05 [RFC PATCH 00/14] Accelerating page migrations Zi Yan
2017-02-17 15:05 ` [RFC PATCH 01/14] mm/migrate: Add new mode parameter to migrate_page_copy() function Zi Yan
2017-02-17 15:05 ` [RFC PATCH 02/14] mm/migrate: Make migrate_mode types non-exclussive Zi Yan
2017-02-17 15:05 ` [RFC PATCH 03/14] mm/migrate: Add copy_pages_mthread function Zi Yan
2017-02-23  6:06   ` Naoya Horiguchi
2017-02-23  7:50     ` Anshuman Khandual
2017-02-23  8:02       ` Naoya Horiguchi
2017-03-09  5:35         ` Anshuman Khandual
2017-02-17 15:05 ` [RFC PATCH 04/14] mm/migrate: Add new migrate mode MIGRATE_MT Zi Yan
2017-02-23  6:54   ` Naoya Horiguchi
2017-02-23  7:54     ` Anshuman Khandual
2017-02-17 15:05 ` [RFC PATCH 05/14] mm/migrate: Add new migration flag MPOL_MF_MOVE_MT for syscalls Zi Yan
2017-02-17 15:05 ` [RFC PATCH 06/14] sysctl: Add global tunable mt_page_copy Zi Yan
2017-02-17 15:05 ` [RFC PATCH 07/14] migrate: Add copy_page_lists_mthread() function Zi Yan
2017-02-23  8:54   ` Naoya Horiguchi
2017-03-09 13:02     ` Anshuman Khandual [this message]
2017-02-17 15:05 ` [RFC PATCH 08/14] mm: migrate: Add concurrent page migration into move_pages syscall Zi Yan
2017-02-24  8:25   ` Naoya Horiguchi
2017-02-24 15:05     ` Zi Yan
2017-02-17 15:05 ` [RFC PATCH 09/14] mm: migrate: Add exchange_page_mthread() and exchange_page_lists_mthread() to exchange two pages or two page lists Zi Yan
2017-02-17 15:05 ` [RFC PATCH 10/14] mm: Add exchange_pages and exchange_pages_concur functions to exchange two lists of pages instead of two migrate_pages() Zi Yan
2017-02-17 15:05 ` [RFC PATCH 11/14] mm: migrate: Add exchange_pages syscall to exchange two page lists Zi Yan
2017-02-17 15:05 ` [RFC PATCH 12/14] migrate: Add copy_page_dma to use DMA Engine to copy pages Zi Yan
2017-02-17 15:05 ` [RFC PATCH 13/14] mm: migrate: Add copy_page_dma into migrate_page_copy Zi Yan
2017-02-17 15:05 ` [RFC PATCH 14/14] mm: Add copy_page_lists_dma_always to support copy a list of pages Zi Yan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=051b8789-f88b-0fdb-f150-7ef389fddae1@linux.vnet.ibm.com \
    --to=khandual@linux.vnet.ibm.com \
    --cc=apopple@au1.ibm.com \
    --cc=dnellans@nvidia.com \
    --cc=linux-mm@kvack.org \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=paulmck@linux.vnet.ibm.com \
    --cc=zi.yan@cs.rutgers.edu \
    --cc=zi.yan@sent.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox