All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Huang, Ying" <ying.huang@linux.alibaba.com>
To: "Garg, Shivank" <shivankg@amd.com>
Cc: akpm@linux-foundation.org,  david@kernel.org,
	lorenzo.stoakes@oracle.com,  Liam.Howlett@oracle.com,
	 vbabka@kernel.org, willy@infradead.org,  rppt@kernel.org,
	 surenb@google.com, mhocko@suse.com,  ziy@nvidia.com,
	 matthew.brost@intel.com, joshua.hahnjy@gmail.com,
	 rakie.kim@sk.com,  byungchul@sk.com, gourry@gourry.net,
	 apopple@nvidia.com,  dave@stgolabs.net,
	Jonathan.Cameron@huawei.com,  rkodsara@amd.com,
	 vkoul@kernel.org, bharata@amd.com,  sj@kernel.org,
	 weixugc@google.com, dan.j.williams@intel.com,
	 rientjes@google.com,  xuezhengchu@huawei.com,
	yiannis@zptcorp.com,  dave.hansen@intel.com,  hannes@cmpxchg.org,
	jhubbard@nvidia.com,  peterx@redhat.com,  riel@surriel.com,
	shakeel.butt@linux.dev,  stalexan@redhat.com,  tj@kernel.org,
	nifan.cxl@gmail.com,  linux-kernel@vger.kernel.org,
	 linux-mm@kvack.org, Mike Day <michael.day@amd.com>
Subject: Re: [RFC PATCH v4 4/6] mm/migrate: add copy offload registration infrastructure
Date: Thu, 30 Apr 2026 09:23:36 +0800	[thread overview]
Message-ID: <875x59w89z.fsf@DESKTOP-5N7EMDA> (raw)
In-Reply-To: <4652f10e-1993-4151-a0f2-1d1623de79f7@amd.com> (Shivank Garg's message of "Tue, 28 Apr 2026 17:40:53 +0530")

"Garg, Shivank" <shivankg@amd.com> writes:

> On 4/3/2026 4:41 PM, Garg, Shivank wrote:
>> 
>> 
>> On 3/24/2026 4:24 PM, Huang, Ying wrote:
>>> Shivank Garg <shivankg@amd.com> writes:
>>>
>>>> Introduce CONFIG_MIGRATION_COPY_OFFLOAD, which lets offload driver
>>>
>>> Do we really need a new kconfig option?  IMHO, we have too many now.
>>> Because we have a jump label already, the performance difference should
>>> be trivial.  Can you measure the size difference?
>> 
>> BASELINE (offload=n)
>>    text    data     bss     dec  filename
>>   23577    1632      32   25241  mm/migrate.o
>> 39202900        14159750        6502152 59864802     vmlinux
>> 
>> WITH OFFLOAD (offload=y)
>>    text    data     bss     dec  filename
>>   24444    2568      32   27044  mm/migrate.o
>>     676      64       8     748  mm/migrate_copy_offload.o
>> 39208218        14163942        6498120 59870280     vmlinux
>> 
>> WITHOUT CONFIG (always-on)
>>    text    data     bss     dec  filename
>>   24444    2568      32   27044  mm/migrate.o
>>     676      64       8     748  mm/migrate_copy_offload.o
>> 39208405        14163942        6498120 59870467     vmlinux
>> 
>> It saves around 5.5KB of size, when offload support is disabled.
>> Is it meaningful savings? What do you think?
>> 
>>>
>>>> +#ifdef CONFIG_MIGRATION_COPY_OFFLOAD
>>>> +extern struct static_key_false migrate_offload_enabled;
>>>> +extern struct srcu_struct migrate_offload_srcu;
>>>> +bool migrate_should_batch_default(int reason);
>>>> +int migrate_offload_start(struct migrator *m);
>>>> +int migrate_offload_stop(struct migrator *m);
>>>
>>> Why not naming the function migrate_offload_register/unregister()?
>>> IMHO, that sounds more natural.
>> 
>> Ack. I'll rename to migrate_offload_register/unregister().
>> 
>>>
>>>>  
>>>> +#ifdef CONFIG_MIGRATION_COPY_OFFLOAD
>>>> +	/* Check if the offload driver wants to batch for this reason */
>>>> +	if (static_branch_unlikely(&migrate_offload_enabled))
>>>> +		do_batch = static_call(migrate_should_batch)(reason);
>>>
>>> Should batching based on "reason" be determined by the general migrate
>>> code instead of the migrator implementation?  For example, if we only
>>> batch copying for ASYNC migration, we should determine that in
>>> migrate_pages_batch() instead of the migreation implementation.  Or am I
>>> missed something?  If so, can you provide an example?
>>>
>> 
>> My idea was that different drivers may have different cost/benefit
>> profiles(e.g. setup cost, migrate batch-size, etc..) 
>> 
>> For instance, a DMA driver may want to target only bulk migration usecase.
>> And a CPU-thread based driver can be used more broadly, without worrying
>> about setup-costs.
>> 
>> But I agree it's premature with only one-driver.
>> I'll move the reason check with target usecases into migrate_pages_batch()
>> and drop the should_batch() callback. If a future driver needs different
>> filtering, we can add it back then.
>> 
>>>>  
>>>> +#ifdef CONFIG_MIGRATION_COPY_OFFLOAD
>>>>  	/* Batch-copy eligible folios before the move phase */
>>>>  	if (!list_empty(&src_batch)) {
>>>
>>> Guard with "static_branch_unlikely(&migrate_offload_enabled)" first?
>>> Better to define a inline function to shorten the expression.
>>>
>> 
>> Sure, will add the static_branch_unlikely guard and wrap in a helper
>> function. Thanks.
>
> Coming back to this while reworking the patch.
> I think the static branch guard here is actually redundant. We already check it at
> the per-folio classification that builds src_batch,
> so when offload is disabled src_batch stays empty and the list_empty() check
> short-circuits. I'll still wrap the SRCU + static_call into a helper at this call
> site, as you suggested. Sorry for the flip-flop.

Yes.  It's functionally redundant.  I just want to know whether it can
benefit performance (in a minor way).

---
Best Regards,
Huang, Ying



  reply	other threads:[~2026-04-30  1:26 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-09 12:07 [RFC PATCH v4 0/6] Accelerate page migration with batch copying and hardware offload Shivank Garg
2026-03-09 12:07 ` [RFC PATCH v4 1/6] mm: introduce folios_mc_copy() for batch folio copying Shivank Garg
2026-03-12  9:41   ` David Hildenbrand (Arm)
2026-03-15 18:09     ` Garg, Shivank
2026-03-09 12:07 ` [RFC PATCH v4 2/6] mm/migrate: skip data copy for already-copied folios Shivank Garg
2026-03-12  9:44   ` David Hildenbrand (Arm)
2026-03-15 18:25     ` Garg, Shivank
2026-03-23 12:20       ` David Hildenbrand (Arm)
2026-03-24  8:22   ` Huang, Ying
2026-04-03 11:08     ` Garg, Shivank
2026-04-07  6:52       ` Huang, Ying
2026-04-23 12:20         ` Garg, Shivank
2026-03-09 12:07 ` [RFC PATCH v4 3/6] mm/migrate: add batch-copy path in migrate_pages_batch Shivank Garg
2026-03-24  8:42   ` Huang, Ying
2026-04-03 11:09     ` Garg, Shivank
2026-03-09 12:07 ` [RFC PATCH v4 4/6] mm/migrate: add copy offload registration infrastructure Shivank Garg
2026-03-09 17:54   ` Gregory Price
2026-03-10 10:07     ` Garg, Shivank
2026-03-24 10:54   ` Huang, Ying
2026-04-03 11:11     ` Garg, Shivank
2026-04-07  7:40       ` Huang, Ying
2026-04-28 12:10       ` Garg, Shivank
2026-04-30  1:23         ` Huang, Ying [this message]
2026-03-09 12:07 ` [RFC PATCH v4 5/6] drivers/migrate_offload: add DMA batch copy driver (dcbm) Shivank Garg
2026-03-09 18:04   ` Gregory Price
2026-03-12  9:33     ` Garg, Shivank
2026-03-24  8:10   ` Huang, Ying
2026-04-03 11:06     ` Garg, Shivank
2026-04-23 12:10   ` Garg, Shivank
2026-04-23 14:13     ` Vinod Koul
2026-04-24 11:26       ` Garg, Shivank
2026-03-09 12:07 ` [RFC PATCH v4 6/6] mm/migrate: adjust NR_MAX_BATCHED_MIGRATION for testing Shivank Garg
2026-03-18 14:29 ` [RFC PATCH v4 0/6] Accelerate page migration with batch copying and hardware offload Garg, Shivank

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=875x59w89z.fsf@DESKTOP-5N7EMDA \
    --to=ying.huang@linux.alibaba.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=Liam.Howlett@oracle.com \
    --cc=akpm@linux-foundation.org \
    --cc=apopple@nvidia.com \
    --cc=bharata@amd.com \
    --cc=byungchul@sk.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.hansen@intel.com \
    --cc=dave@stgolabs.net \
    --cc=david@kernel.org \
    --cc=gourry@gourry.net \
    --cc=hannes@cmpxchg.org \
    --cc=jhubbard@nvidia.com \
    --cc=joshua.hahnjy@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=matthew.brost@intel.com \
    --cc=mhocko@suse.com \
    --cc=michael.day@amd.com \
    --cc=nifan.cxl@gmail.com \
    --cc=peterx@redhat.com \
    --cc=rakie.kim@sk.com \
    --cc=riel@surriel.com \
    --cc=rientjes@google.com \
    --cc=rkodsara@amd.com \
    --cc=rppt@kernel.org \
    --cc=shakeel.butt@linux.dev \
    --cc=shivankg@amd.com \
    --cc=sj@kernel.org \
    --cc=stalexan@redhat.com \
    --cc=surenb@google.com \
    --cc=tj@kernel.org \
    --cc=vbabka@kernel.org \
    --cc=vkoul@kernel.org \
    --cc=weixugc@google.com \
    --cc=willy@infradead.org \
    --cc=xuezhengchu@huawei.com \
    --cc=yiannis@zptcorp.com \
    --cc=ziy@nvidia.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.