Re: Ask help about this patch b951aaff5035 " mm: enable page allocation tagging"

From: Carlos Song
Date: Thu Mar 27 2025 - 07:03:33 EST


Hi,

I get the function calling step log, I hope it can help debug little.

The spinlock_irqsave from 136.725021 to 136.966962_raw_spin_unlock_irqrestore.
Around 260ms? It is Just one case, sometimes it will spend more time.

dd-828 [000] ..... 136.724980: fdget_pos <-ksys_write
dd-828 [000] ..... 136.724982: vfs_write <-ksys_write
dd-828 [000] ..... 136.724983: blkdev_write_iter <-vfs_write
dd-828 [000] ..... 136.724984: I_BDEV <-blkdev_write_iter
dd-828 [000] ..... 136.724985: file_update_time <-blkdev_write_iter
dd-828 [000] ..... 136.724986: inode_needs_update_time <-file_update_time
dd-828 [000] ..... 136.724987: ktime_get_coarse_real_ts64 <-inode_needs_update_time
dd-828 [000] ..... 136.724989: timestamp_truncate <-inode_needs_update_time
dd-828 [000] ..... 136.724990: iomap_file_buffered_write <-blkdev_write_iter
dd-828 [000] ..... 136.724992: iomap_iter <-iomap_file_buffered_write
dd-828 [000] ..... 136.724993: blkdev_iomap_begin <-iomap_iter
dd-828 [000] ..... 136.724994: I_BDEV <-blkdev_iomap_begin
dd-828 [000] ..... 136.724995: balance_dirty_pages_ratelimited_flags <-iomap_file_buffered_write
dd-828 [000] ..... 136.724996: inode_to_bdi <-balance_dirty_pages_ratelimited_flags
dd-828 [000] ..... 136.724997: I_BDEV <-inode_to_bdi
dd-828 [000] ..... 136.724998: preempt_count_add <-balance_dirty_pages_ratelimited_flags
dd-828 [000] ...1. 136.725000: preempt_count_sub <-balance_dirty_pages_ratelimited_flags
dd-828 [000] ..... 136.725001: fault_in_readable <-fault_in_iov_iter_readable
dd-828 [000] ..... 136.725003: iomap_write_begin <-iomap_file_buffered_write
dd-828 [000] ..... 136.725004: iomap_get_folio <-iomap_write_begin
dd-828 [000] ..... 136.725005: __filemap_get_folio <-iomap_write_begin
dd-828 [000] ..... 136.725006: filemap_get_entry <-__filemap_get_folio
dd-828 [000] ..... 136.725007: __rcu_read_lock <-filemap_get_entry
dd-828 [000] ..... 136.725008: __rcu_read_unlock <-filemap_get_entry
dd-828 [000] ..... 136.725009: inode_to_bdi <-__filemap_get_folio
dd-828 [000] ..... 136.725010: I_BDEV <-inode_to_bdi
dd-828 [000] ..... 136.725012: __folio_alloc_noprof <-__filemap_get_folio
dd-828 [000] ..... 136.725013: __alloc_pages_noprof <-__folio_alloc_noprof
dd-828 [000] ..... 136.725014: get_page_from_freelist <-__alloc_pages_noprof
dd-828 [000] ..... 136.725015: node_dirty_ok <-get_page_from_freelist
dd-828 [000] ..... 136.725016: preempt_count_add <-get_page_from_freelist
dd-828 [000] ...1. 136.725018: _raw_spin_trylock <-get_page_from_freelist
dd-828 [000] ...1. 136.725019: preempt_count_add <-_raw_spin_trylock
dd-828 [000] ...2. 136.725021: _raw_spin_lock_irqsave <-__rmqueue_pcplist
dd-828 [000] d..2. 136.725022: preempt_count_add <-_raw_spin_lock_irqsave
dd-828 [000] d..3. 136.725025: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725028: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725029: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725031: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725032: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725034: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725036: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725037: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725038: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725039: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725040: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725042: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725043: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725044: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725046: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725047: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725048: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725050: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725051: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725052: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725053: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725055: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725056: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725057: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725058: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725060: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725061: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725062: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725063: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725065: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725066: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725067: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725068: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725070: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725071: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725072: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725073: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725075: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725076: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725077: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725079: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725080: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725081: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725082: __mod_zone_page_state <-__rmqueue_pcplist
dd-828 [000] d..3. 136.725083: __mod_zone_page_state <-__rmqueue_pcplist
...
dd-828 [000] d..3. 136.820279: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820280: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820281: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820282: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820283: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820284: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820285: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820286: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820287: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820289: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820290: steal_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.820525: __mod_zone_page_state <-steal_suitable_fallback
...
dd-828 [000] d..3. 136.966945: __mod_zone_page_state <-steal_suitable_fallback
dd-828 [000] d..3. 136.966946: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966947: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966948: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966950: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966951: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966952: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966953: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966954: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966955: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966956: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966957: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966958: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966959: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966961: find_suitable_fallback <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966962: _raw_spin_unlock_irqrestore <-__rmqueue_pcplist
dd-828 [000] d..3. 136.966965: irq_enter <-generic_handle_arch_irq
dd-828 [000] d..3. 136.966966: irq_enter_rcu <-generic_handle_arch_irq
dd-828 [000] d..3. 136.966967: preempt_count_add <-irq_enter_rcu
dd-828 [000] d.h3. 136.966969: gic_handle_irq <-generic_handle_arch_irq
dd-828 [000] d.h3. 136.966970: generic_handle_domain_irq <-gic_handle_irq
dd-828 [000] d.h3. 136.966971: __irq_resolve_mapping <-generic_handle_domain_irq
dd-828 [000] d.h3. 136.966972: __rcu_read_lock <-__irq_resolve_mapping
dd-828 [000] d.h3. 136.966974: __rcu_read_unlock <-__irq_resolve_mapping
dd-828 [000] d.h3. 136.966975: handle_irq_desc <-gic_handle_irq
dd-828 [000] d.h3. 136.966976: handle_percpu_devid_irq <-handle_irq_desc
dd-828 [000] d.h3. 136.966978: ipi_handler <-handle_percpu_devid_irq
dd-828 [000] d.h3. 136.966979: do_handle_IPI <-ipi_handler
dd-828 [000] d.h3. 136.966981: generic_smp_call_function_single_interrupt <-do_handle_IPI
dd-828 [000] d.h3. 136.966982: __flush_smp_call_function_queue <-do_handle_IPI
dd-828 [000] d.h3. 136.966986: sched_ttwu_pending <-__flush_smp_call_function_queue
dd-828 [000] d.h3. 136.966987: preempt_count_add <-sched_ttwu_pending
dd-828 [000] d.h4. 136.966990: _raw_spin_lock <-sched_ttwu_pending
dd-828 [000] d.h4. 136.966991: preempt_count_add <-_raw_spin_lock
dd-828 [000] d.h5. 136.966993: preempt_count_sub <-sched_ttwu_pending
dd-828 [000] d.h4. 136.966994: update_rq_clock.part.0 <-sched_ttwu_pending
dd-828 [000] d.h4. 136.966996: ttwu_do_activate <-sched_ttwu_pending
dd-828 [000] d.h4. 136.966997: activate_task <-ttwu_do_activate
dd-828 [000] d.h4. 136.966998: enqueue_task_fair <-activate_task
dd-828 [000] d.h4. 136.967000: update_curr <-enqueue_task_fair
dd-828 [000] d.h4. 136.967001: update_min_vruntime <-update_curr
dd-828 [000] d.h4. 136.967003: __cgroup_account_cputime <-update_curr

BR
Carlos Song

> > On Thu, Mar 20, 2025 at 11:07:41AM +0000, Carlos Song wrote:
> > > Hi, all
> > >
> > > I found a 300ms~600ms IRQ off when writing 1Gb data to mmc device at
> > I.MX7d SDB board at Linux-kernel-v6.14.
> > > But I test the same case at Linux-kernel-v6.7, this longest IRQ off
> > > time is only
> > 1ms~2ms. So the issue is introduced from v6.7~v6.14.
> > >
> > > Run this cmd to test:
> > > dd if=/dev/zero of=/dev/mmcblk2p4 bs=4096 seek=12500 count=256000
> > > conv=fsync
> > >
> > > This issue looks from blkdev_buffered_write() function. Because when
> > > I run this cmd with "oflag=direct" to use blkdev_direct_write(), I
> > > can not see
> > any long time IRQ off.
> > >
> > > Then I use Ftrace irqoff tracer to trace the longest IRQ off event,
> > > I found some
> > differences between v6.7 and v6.14:
> > > In iomap_file_buffered_write(), __folio_alloc (in v6.7) is replaced
> > > by
> > _folio_alloc_noprof (in v6.14) by this patch.
> > > The spinlock disabled IRQ ~300ms+. It looks there are some fixes for
> > > this patch,
> > but I still can see IRQ off 300ms+ at 6.14.0-rc7-next-20250319.
> > >
> > > Do I trigger one bug? I know little about mem so I have to report it
> > > and hope I
> > can get some help or guide.
> > > I put my ftrace log at the mail tail to help trace and explain.
> >
> > Did you track down which spinlock?
> >
> > >
>
> Hi,
>
> Sorry for my late reply and thank you for your quick reply!
> From the trace log, I think the spinlock is from here like this:
>
> __alloc_frozen_pages_noprof ==> get_page_from_freelist==>spinclok
>
> Do you need other log not only this?
>
> > > => get_page_from_freelist"
> > > => __alloc_frozen_pages_noprof
> > > => __folio_alloc_noprof
> > > => __filemap_get_folio
>
>
> > > commit b951aaff503502a7fe066eeed2744ba8a6413c89
> > > Author: Suren Baghdasaryan
> > surenb@xxxxxxxxxx<mailto:surenb@xxxxxxxxxx>
> > > Date: Thu Mar 21 09:36:40 2024 -0700
> > >
> > > mm: enable page allocation tagging
> > >
> > > Redefine page allocators to record allocation tags upon their
> invocation.
> > > Instrument post_alloc_hook and free_pages_prepare to modify
> current
> > > allocation tag.
> > >
> > > [surenb@xxxxxxxxxx: undo _noprof additions in the documentation]
> > > Link:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml
> > .kern
> >
> el.org%2Fr%2F20240326231453.1206227-3-surenb%40google.com&data=05%
> >
> 7C02%7Ccarlos.song%40nxp.com%7Cdf027bbb97074fc2cde808dd67a1d6c5%7
> >
> C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638780666983046738%
> >
> 7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDA
> >
> wMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C
> >
> &sdata=Aby13KyQjF5pcbYW%2BkfsEJLiaPmS2ZiJLUHJ%2BCr2JXM%3D&reserve
> > d=0
> > > Link:
> > https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flkml
> > .kern
> >
> el.org%2Fr%2F20240321163705.3067592-19-surenb%40google.com&data=05
> > %7C02%7Ccarlos.song%40nxp.com%7Cdf027bbb97074fc2cde808dd67a1d6c5
> %
> >
> 7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C638780666983065790
> > %7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuM
> D
> >
> AwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7
> >
> C&sdata=n0hjs2fhjYs%2BcnbrxHy4vFK6D4GFVL4%2Fu72anOOLiEI%3D&reserve
> > d=0
> > > Signed-off-by: Suren Baghdasaryan
> > surenb@xxxxxxxxxx<mailto:surenb@xxxxxxxxxx>
> > > Co-developed-by: Kent Overstreet
> > kent.overstreet@xxxxxxxxx<mailto:kent.overstreet@xxxxxxxxx>
> > > Signed-off-by: Kent Overstreet
> > kent.overstreet@xxxxxxxxx<mailto:kent.overstreet@xxxxxxxxx>
> > > Reviewed-by: Kees Cook
> > keescook@xxxxxxxxxxxx<mailto:keescook@xxxxxxxxxxxx>
> > > Tested-by: Kees Cook
> > keescook@xxxxxxxxxxxx<mailto:keescook@xxxxxxxxxxxx>
> > > Cc: Alexander Viro
> > viro@xxxxxxxxxxxxxxxxxx<mailto:viro@xxxxxxxxxxxxxxxxxx>
> > > Cc: Alex Gaynor
> > alex.gaynor@xxxxxxxxx<mailto:alex.gaynor@xxxxxxxxx>
> > > Cc: Alice Ryhl aliceryhl@xxxxxxxxxx<mailto:aliceryhl@xxxxxxxxxx>
> > > Cc: Andreas Hindborg
> > a.hindborg@xxxxxxxxxxx<mailto:a.hindborg@xxxxxxxxxxx>
> > > Cc: Benno Lossin
> > benno.lossin@xxxxxxxxx<mailto:benno.lossin@xxxxxxxxx>
> > > Cc: "Björn Roy Baron"
> > bjorn3_gh@xxxxxxxxxxxxxx<mailto:bjorn3_gh@xxxxxxxxxxxxxx>
> > > Cc: Boqun Feng
> > boqun.feng@xxxxxxxxx<mailto:boqun.feng@xxxxxxxxx>
> > > Cc: Christoph Lameter cl@xxxxxxxxx<mailto:cl@xxxxxxxxx>
> > > Cc: Dennis Zhou dennis@xxxxxxxxxx<mailto:dennis@xxxxxxxxxx>
> > > Cc: Gary Guo gary@xxxxxxxxxxx<mailto:gary@xxxxxxxxxxx>
> > > Cc: Miguel Ojeda ojeda@xxxxxxxxxx<mailto:ojeda@xxxxxxxxxx>
> > > Cc: Pasha Tatashin
> > pasha.tatashin@xxxxxxxxxx<mailto:pasha.tatashin@xxxxxxxxxx>
> > > Cc: Peter Zijlstra
> peterz@xxxxxxxxxxxxx<mailto:peterz@xxxxxxxxxxxxx>
> > > Cc: Tejun Heo tj@xxxxxxxxxx<mailto:tj@xxxxxxxxxx>
> > > Cc: Vlastimil Babka vbabka@xxxxxxx<mailto:vbabka@xxxxxxx>
> > > Cc: Wedson Almeida Filho
> > wedsonaf@xxxxxxxxx<mailto:wedsonaf@xxxxxxxxx>
> > > Signed-off-by: Andrew Morton
> > > akpm@xxxxxxxxxxxxxxxxxxxx<mailto:akpm@xxxxxxxxxxxxxxxxxxxx>
> > >
> > >
> > > Ftrace irqoff tracer shows detail:
> > > At v6.14:
> > > # tracer: irqsoff
> > > #
> > > # irqsoff latency trace v1.1.5 on 6.14.0-rc7-next-20250319 #
> > > --------------------------------------------------------------------
> > > # latency: 279663 us, #21352/21352, CPU#0 | (M:NONE VP:0, KP:0, SP:0
> > > HP:0
> > #P:2)
> > > # -----------------
> > > # | task: dd-805 (uid:0 nice:0 policy:0 rt_prio:0)
> > > # -----------------
> > > # => started at: __rmqueue_pcplist
> > > # => ended at: _raw_spin_unlock_irqrestore
> > > #
> > > #
> > > # _------=> CPU#
> > > # / _-----=> irqs-off/BH-disabled
> > > # | / _----=> need-resched
> > > # || / _---=> hardirq/softirq
> > > # ||| / _--=> preempt-depth
> > > # |||| / _-=> migrate-disable
> > > # ||||| / delay
> > > # cmd pid |||||| time | caller
> > > # \ / |||||| \ | /
> > > dd-805 0d.... 1us : __rmqueue_pcplist
> > > dd-805 0d.... 3us : _raw_spin_trylock
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 7us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 10us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 12us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 15us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 17us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 19us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > ...
> > > dd-805 0d.... 1535us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1538us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1539us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1542us+: try_to_claim_block
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1597us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1599us+: try_to_claim_block
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1674us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1676us+: try_to_claim_block
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1716us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1718us+: try_to_claim_block
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1801us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 1803us+: try_to_claim_block
> > <-__rmqueue_pcplist
> > > ...
> > > dd-805 0d.... 279555us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279556us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279558us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279560us+: try_to_claim_block
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279616us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279618us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279620us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > ...
> > > dd-805 0d.... 279658us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279660us : _raw_spin_unlock_irqrestore
> > <-__rmqueue_pcplist
> > > dd-805 0d.... 279662us : _raw_spin_unlock_irqrestore
> > > dd-805 0d.... 279666us+: trace_hardirqs_on
> > <-_raw_spin_unlock_irqrestore
> > > dd-805 0d.... 279712us : <stack trace>
> > > => get_page_from_freelist
> > > => __alloc_frozen_pages_noprof
> > > => __folio_alloc_noprof
> > > => __filemap_get_folio
> > > => iomap_write_begin
> > > => iomap_file_buffered_write
> > > => blkdev_write_iter
> > > => vfs_write
> > > => ksys_write
> > > => ret_fast_syscall
> > >
> > > At v6.7:
> > > # tracer: irqsoff
> > > #
> > > # irqsoff latency trace v1.1.5 on 6.7.0 #
> > > --------------------------------------------------------------------
> > > # latency: 2477 us, #146/146, CPU#0 | (M:server VP:0, KP:0, SP:0 HP:0 #P:2)
> > > # -----------------
> > > # | task: dd-808 (uid:0 nice:0 policy:0 rt_prio:0)
> > > # -----------------
> > > # => started at: _raw_spin_lock_irqsave
> > > # => ended at: _raw_spin_unlock_irqrestore
> > > #
> > > #
> > > # _------=> CPU#
> > > # / _-----=> irqs-off/BH-disabled
> > > # | / _----=> need-resched
> > > # || / _---=> hardirq/softirq
> > > # ||| / _--=> preempt-depth
> > > # |||| / _-=> migrate-disable
> > > # ||||| / delay
> > > # cmd pid |||||| time | caller
> > > # \ / |||||| \ | /
> > > dd-808 0d.... 1us!: _raw_spin_lock_irqsave
> > > dd-808 0d.... 186us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 189us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 191us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 192us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 194us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 196us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 199us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 203us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 330us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 332us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 334us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 336us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 338us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 339us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 341us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 343us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 479us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 481us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 483us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 485us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 486us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 488us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 490us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 492us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 630us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 632us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 634us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 636us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 638us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 640us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 642us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 644us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 771us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 773us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 775us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 777us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 778us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 780us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 782us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 784us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 911us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 913us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 915us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 916us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 918us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 920us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 922us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 924us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 1055us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1058us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1059us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1061us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1063us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1065us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1066us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1068us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 1194us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1196us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1198us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1200us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1202us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1203us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1205us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1208us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 1333us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1335us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1337us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1339us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1341us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1342us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1344us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1346us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 1480us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1482us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1484us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1486us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1488us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1490us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1492us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1494us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 1621us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1623us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1625us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1627us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1629us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1630us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1632us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1634us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 1761us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1763us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1765us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1766us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1768us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1770us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1772us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1774us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 1900us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1902us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1903us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1905us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1907us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1909us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1911us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 1913us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 2038us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2040us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2042us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2044us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2046us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2047us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2049us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2051us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2053us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2055us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 2175us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2176us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2178us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2180us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2182us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2183us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2185us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2187us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2189us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2191us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2192us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2194us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2196us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 2323us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2325us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2327us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2328us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2330us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2332us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2334us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2335us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2337us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2339us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2341us : find_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2343us : steal_suitable_fallback
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2345us!: move_freepages_block
> > <-steal_suitable_fallback
> > > dd-808 0d.... 2470us : __mod_zone_page_state
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2473us : _raw_spin_unlock_irqrestore
> > <-__rmqueue_pcplist
> > > dd-808 0d.... 2476us : _raw_spin_unlock_irqrestore
> > > dd-808 0d.... 2479us+: tracer_hardirqs_on
> > <-_raw_spin_unlock_irqrestore
> > > dd-808 0d.... 2520us : <stack trace>
> > > => get_page_from_freelist
> > > => __alloc_pages
> > > => __folio_alloc
> > > => __filemap_get_folio
> > > => iomap_write_begin
> > > => iomap_file_buffered_write
> > > => blkdev_write_iter
> > > => vfs_write
> > > => ksys_write
> > > => ret_fast_syscall
> > >
> > > Best Regard
> > > Carlos Song
> > >