[linus:master] [maple_tree] 280b792cac: will-it-scale.per_process_ops 6.0% regression
Oliver Sang
oliver.sang at intel.com
Mon May 25 00:23:32 PDT 2026
hi, Liam,
On Sat, May 23, 2026 at 11:12:24AM -0400, Liam R. Howlett wrote:
[...]
> >
> > I appled your patch upon below mainline tip commit when I checked.
> > 6779b50faa562 ("Merge tag 'pci-v7.1-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci")
> >
> > then build kernels with attached config.
> >
> > but found a big regression introduced by your patch.
> >
> > =========================================================================================
> > compiler/cpufreq_governor/kconfig/mode/nr_task/rootfs/tbox_group/test/testcase:
> > gcc-14/performance/x86_64-rhel-9.4/process/100%/debian-13-x86_64-20250902.cgz/lkp-ivb-2ep2/mmap2/will-it-scale
> >
> > commit:
> > 6779b50faa562 ("Merge tag 'pci-v7.1-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci")
> > 942596e1c1037 ("maple_tree: Restore old tree layout using new scatter-gather node copy")
> >
> > 6779b50faa562e6c 942596e1c1037f014638541bce4
> > ---------------- ---------------------------
> > %stddev %change %stddev
> > \ | \
> > 7023559 -42.9% 4007886 will-it-scale.48.processes
> > 146323 -42.9% 83497 will-it-scale.per_process_ops
> > 7023559 -42.9% 4007886 will-it-scale.workload
>
>
> How many runs did you do? The same 6 runs with 48 processes on a 48
> thread machine? My results vary from this dramatically (+13% increase,
> minus the 6% regression so 7% gain over what existed before).
right, on same machine, and with same test. run 8 times for both 6779b50faa562
and 942596e1c1037 (your patch), the data is stable:
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json: "will-it-scale.per_process_ops": [
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 146187,
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 146227,
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 146559,
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 147168,
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 146561,
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 145606,
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 146257,
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- 146025
6779b50faa562e6cca1aa6a4649a4d764c6c7e28/matrix.json- ],
942596e1c1037f014638541bce448b5926be4fb6/matrix.json: "will-it-scale.per_process_ops": [
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83600,
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83477,
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83510,
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83335,
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83700,
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83361,
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83761,
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- 83233
942596e1c1037f014638541bce448b5926be4fb6/matrix.json- ],
>
> >
> >
> > full comparison is as below [1]
> >
> > however, it seems the performance regression is really recovered at commit
> > 6779b50faa562, though the configs are not same.
>
> I do not understand your statement here.
>
> Are you saying that the current code isn't producing the regression
> after 6779b50faa562? Because 6779b50faa562 has nothing to do with my
> code, so I don't understand why that affects the results at all.
this is kind of out of our report criteria. when our bisect point to a 'fbc'
in mainline which causing performance regression comparing to its parent, we
will further check mainline and linux-next/master tip to see if the data is
still similar to 'fbc', i.e. if the regression is still persistent in latest
code. so in our original report, you could see statements as below:
[still regression on linus/master 5d6919055dec134de3c40167a490f33c74c12581]
[still regression on linux-next/master e98d21c170b01ddef366f023bbfcf6b31509fa83]
in order to avoid wrong report as much as possible, if the regression didn't
exist on mainline or linux-next/master tip, we wouldn't report at all.
since you said to apply your patch to latest mainline, 6779b50faa562 when I
check, we tested the performance on 6779b50faa562 as well, and found it's data
is almost similar to 11e7f22f5e (parent of 280b792cac), that's the reason I
say we cannot see regression on latest mainline for now.
>
> > list the regression we reported
> > for refererence.
>
> Are you listing the regression in the applied patch for reference, or
> was the initial report for reference?
I listed both.
below is from what you requested us to test.
=========================================================================================
compiler/cpufreq_governor/kconfig/mode/nr_task/rootfs/tbox_group/test/testcase:
gcc-14/performance/x86_64-rhel-9.4/process/100%/debian-13-x86_64-20250902.cgz/lkp-ivb-2ep2/mmap2/will-it-scale
commit:
6779b50faa562 ("Merge tag 'pci-v7.1-fixes-2' of git://git.kernel.org/pub/scm/linux/kernel/git/pci/pci")
942596e1c1037 ("maple_tree: Restore old tree layout using new scatter-gather node copy")
6779b50faa562e6c 942596e1c1037f014638541bce4
---------------- ---------------------------
%stddev %change %stddev
\ | \
7023559 -42.9% 4007886 will-it-scale.48.processes
146323 -42.9% 83497 will-it-scale.per_process_ops
7023559 -42.9% 4007886 will-it-scale.workload
below is just from original report that I think maybe easier to compare with
above.
=========================================================================================
compiler/cpufreq_governor/kconfig/mode/nr_task/rootfs/tbox_group/test/testcase:
gcc-14/performance/x86_64-rhel-9.4/process/100%/debian-13-x86_64-20250902.cgz/lkp-ivb-2ep2/mmap2/will-it-scale
commit:
11e7f22f5e ("maple_tree: add cp_converged() helper")
280b792cac ("maple_tree: use maple copy node for mas_wr_split()")
11e7f22f5e85058b 280b792cac62ddadca2935766ca
---------------- ---------------------------
%stddev %change %stddev
\ | \
6885401 -6.0% 6472359 will-it-scale.48.processes
143445 -6.0% 134840 will-it-scale.per_process_ops
6885401 -6.0% 6472359 will-it-scale.workload
>
> This also means that I don't need to work on this now, right? Because
> there is no regression?
just from our test results perspective, you are right.
> I'd like to clarify that before I spend more
> time trying to fix this, especially since I saw nether of these
> regressions in my testing - that is, I cannot reproduce your findings in
> either code base.
[...]
>
> > 0.00 +14.8 14.81 perf-profile.calltrace.cycles-pp.mas_wr_split.mas_store_prealloc.__mmap_new_vma.__mmap_region.do_mmap
> > 8.17 -8.2 0.00 perf-profile.children.cycles-pp.mas_wr_node_store
>
> It looks like the slow path is taken 100% of the time in your run, for
> all processes, always.
>
> I understand why that is happening and I can work to avoid it (nudging
> the write deeper into a split node), but I'd like clarification of my
> questions above before I keep going here.
sorry that we cannot supply deep enough technical analysis such like why
mainline tip (at least 6779b50faa562) has no regression already.
but in case you want to dig this deep, you could request us to test any
fix/debug patch, whatever upon your last patch, current mainline tip, or
280b792cac. we just want to be able to supply any assistant to improve
linux kernel code quality. thanks
>
> ...
>
> Thanks,
> Liam
>
More information about the maple-tree
mailing list