All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vlastimil Babka <vbabka@suse.cz>
To: Mike Galbraith <efault@gmx.de>,
	Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Christoph Lameter <cl@linux.com>,
	David Rientjes <rientjes@google.com>,
	Pekka Enberg <penberg@kernel.org>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Mel Gorman <mgorman@techsingularity.net>,
	Jesper Dangaard Brouer <brouer@redhat.com>,
	Peter Zijlstra <peterz@infradead.org>,
	Jann Horn <jannh@google.com>
Subject: Re: [RFC v2 00/34] SLUB: reduce irq disabled scope and make it RT compatible
Date: Sun, 18 Jul 2021 09:41:49 +0200	[thread overview]
Message-ID: <ef4903e2-c2ce-9a64-68b0-c7ee483eb582@suse.cz> (raw)
In-Reply-To: <891dc24e38106f8542f4c72831d52dc1a1863ae8.camel@gmx.de>

On 7/3/21 9:24 AM, Mike Galbraith wrote:
> On Fri, 2021-07-02 at 20:29 +0200, Sebastian Andrzej Siewior wrote:
>> I replaced my slub changes with slub-local-lock-v2r3.
>> I haven't seen any complains from lockdep or so which is good. Then I
>> did this with RT enabled (and no debug):
> 
> Below is some raw hackbench data from my little i4790 desktop box.  It
> says we'll definitely still want list_lock to be raw.

Hi Mike, thanks a lot for the testing, sorry for late reply.

Did you try, instead of raw list_lock, not applying the last, local lock
patch, as I suggested in reply to bigeasy? I think the impact at
reducing the RT-specific overhead would be larger (than raw list_lock),
the result should still be RT compatible, and it would also deal with
the bugs you found there... (which I'll look into).

Thanks,
Vlastimil

> It also appears to be saying that there's something RT specific to
> stare at in addition to the list_lock business, but add a pinch of salt
> to that due to the config of the virgin(ish) tip tree being much
> lighter than the enterprise(ish) config of the tip-rt tree.
> 
> perf stat -r10 hackbench -s4096 -l500
> full warmup, record, repeat twice for elapsed
> 
> 5.13.0.g60ab3ed-tip-rt
>           8,898.51 msec task-clock                #    7.525 CPUs utilized            ( +-  0.33% )
>            368,922      context-switches          #    0.041 M/sec                    ( +-  5.20% )
>             42,281      cpu-migrations            #    0.005 M/sec                    ( +-  5.28% )
>             13,180      page-faults               #    0.001 M/sec                    ( +-  0.70% )
>     33,343,378,867      cycles                    #    3.747 GHz                      ( +-  0.30% )
>     21,656,783,887      instructions              #    0.65  insn per cycle           ( +-  0.67% )
>      4,408,569,663      branches                  #  495.428 M/sec                    ( +-  0.73% )
>         12,040,125      branch-misses             #    0.27% of all branches          ( +-  2.93% )
> 
>            1.18260 +- 0.00473 seconds time elapsed  ( +-  0.40% )
>            1.19018 +- 0.00441 seconds time elapsed  ( +-  0.37% ) (repeat)
>            1.18260 +- 0.00473 seconds time elapsed  ( +-  0.40% ) (repeat)
> 
> 5.13.0.g60ab3ed-tip-rt +slub-local-lock-v2r3 list_lock=raw_spinlock_t
>           9,642.00 msec task-clock                #    7.521 CPUs utilized            ( +-  0.46% )
>            462,091      context-switches          #    0.048 M/sec                    ( +-  4.79% )
>             44,411      cpu-migrations            #    0.005 M/sec                    ( +-  4.34% )
>             12,980      page-faults               #    0.001 M/sec                    ( +-  0.43% )
>     36,098,859,429      cycles                    #    3.744 GHz                      ( +-  0.44% )
>     25,462,853,462      instructions              #    0.71  insn per cycle           ( +-  0.50% )
>      5,260,898,360      branches                  #  545.623 M/sec                    ( +-  0.52% )
>         16,088,686      branch-misses             #    0.31% of all branches          ( +-  2.02% )
> 
>            1.28207 +- 0.00568 seconds time elapsed  ( +-  0.44% )
>            1.28744 +- 0.00713 seconds time elapsed  ( +-  0.55% ) (repeat)
>            1.28085 +- 0.00850 seconds time elapsed  ( +-  0.66% ) (repeat)
> 
> 5.13.0.g60ab3ed-tip-rt +slub-local-lock-v2r3 list_lock=spinlock_t
>          10,004.89 msec task-clock                #    6.029 CPUs utilized            ( +-  1.37% )
>            654,311      context-switches          #    0.065 M/sec                    ( +-  5.16% )
>            211,070      cpu-migrations            #    0.021 M/sec                    ( +-  1.38% )
>             13,262      page-faults               #    0.001 M/sec                    ( +-  0.79% )
>     36,585,914,931      cycles                    #    3.657 GHz                      ( +-  1.35% )
>     27,682,240,511      instructions              #    0.76  insn per cycle           ( +-  1.06% )
>      5,766,064,432      branches                  #  576.325 M/sec                    ( +-  1.11% )
>         24,269,069      branch-misses             #    0.42% of all branches          ( +-  2.03% )
> 
>             1.6595 +- 0.0116 seconds time elapsed  ( +-  0.70% )
>             1.6270 +- 0.0180 seconds time elapsed  ( +-  1.11% ) (repeat)
>             1.6213 +- 0.0150 seconds time elapsed  ( +-  0.93% ) (repeat)
> 
> virgin(ish) tip
> 5.13.0.g60ab3ed-tip
>           7,320.67 msec task-clock                #    7.792 CPUs utilized            ( +-  0.31% )
>            221,215      context-switches          #    0.030 M/sec                    ( +-  3.97% )
>             16,234      cpu-migrations            #    0.002 M/sec                    ( +-  4.07% )
>             13,233      page-faults               #    0.002 M/sec                    ( +-  0.91% )
>     27,592,205,252      cycles                    #    3.769 GHz                      ( +-  0.32% )
>      8,309,495,040      instructions              #    0.30  insn per cycle           ( +-  0.37% )
>      1,555,210,607      branches                  #  212.441 M/sec                    ( +-  0.42% )
>          5,484,209      branch-misses             #    0.35% of all branches          ( +-  2.13% )
> 
>            0.93949 +- 0.00423 seconds time elapsed  ( +-  0.45% )
>            0.94608 +- 0.00384 seconds time elapsed  ( +-  0.41% ) (repeat)
>            0.94422 +- 0.00410 seconds time elapsed  ( +-  0.43% )
> 
> 5.13.0.g60ab3ed-tip +slub-local-lock-v2r3
>           7,343.57 msec task-clock                #    7.776 CPUs utilized            ( +-  0.44% )
>            223,044      context-switches          #    0.030 M/sec                    ( +-  3.02% )
>             16,057      cpu-migrations            #    0.002 M/sec                    ( +-  4.03% )
>             13,164      page-faults               #    0.002 M/sec                    ( +-  0.97% )
>     27,684,906,017      cycles                    #    3.770 GHz                      ( +-  0.45% )
>      8,323,273,871      instructions              #    0.30  insn per cycle           ( +-  0.28% )
>      1,556,106,680      branches                  #  211.901 M/sec                    ( +-  0.31% )
>          5,463,468      branch-misses             #    0.35% of all branches          ( +-  1.33% )
> 
>            0.94440 +- 0.00352 seconds time elapsed  ( +-  0.37% )
>            0.94830 +- 0.00228 seconds time elapsed  ( +-  0.24% ) (repeat)
>            0.93813 +- 0.00440 seconds time elapsed  ( +-  0.47% ) (repeat)
> 


  parent reply	other threads:[~2021-07-18  7:42 UTC|newest]

Thread overview: 65+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-09 11:38 [RFC v2 00/34] SLUB: reduce irq disabled scope and make it RT compatible Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 01/34] mm, slub: don't call flush_all() from list_locations() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 02/34] mm, slub: allocate private object map for sysfs listings Vlastimil Babka
2021-06-09 13:29   ` Christoph Lameter
2021-06-09 13:29     ` Christoph Lameter
2021-06-09 11:38 ` [RFC v2 03/34] mm, slub: allocate private object map for validate_slab_cache() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 04/34] mm, slub: don't disable irq for debug_check_no_locks_freed() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 05/34] mm, slub: remove redundant unfreeze_partials() from put_cpu_partial() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 06/34] mm, slub: unify cmpxchg_double_slab() and __cmpxchg_double_slab() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 07/34] mm, slub: extract get_partial() from new_slab_objects() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 08/34] mm, slub: dissolve new_slab_objects() into ___slab_alloc() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 09/34] mm, slub: return slab page from get_partial() and set c->page afterwards Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 10/34] mm, slub: restructure new page checks in ___slab_alloc() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 11/34] mm, slub: simplify kmem_cache_cpu and tid setup Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 12/34] mm, slub: move disabling/enabling irqs to ___slab_alloc() Vlastimil Babka
2021-07-06  4:38   ` Mike Galbraith
2021-07-06  4:38     ` Mike Galbraith
2021-06-09 11:38 ` [RFC v2 13/34] mm, slub: do initial checks in ___slab_alloc() with irqs enabled Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 14/34] mm, slub: move disabling irqs closer to get_partial() in ___slab_alloc() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 15/34] mm, slub: restore irqs around calling new_slab() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 16/34] mm, slub: validate slab from partial list or page allocator before making it cpu slab Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 17/34] mm, slub: check new pages with restored irqs Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 18/34] mm, slub: stop disabling irqs around get_partial() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 19/34] mm, slub: move reset of c->page and freelist out of deactivate_slab() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 20/34] mm, slub: make locking in deactivate_slab() irq-safe Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 21/34] mm, slub: call deactivate_slab() without disabling irqs Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 22/34] mm, slub: move irq control into unfreeze_partials() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 23/34] mm, slub: discard slabs in unfreeze_partials() without irqs disabled Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 24/34] mm, slub: detach whole partial list at once in unfreeze_partials() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 25/34] mm, slub: detach percpu partial list in unfreeze_partials() using this_cpu_cmpxchg() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 26/34] mm, slub: only disable irq with spin_lock in __unfreeze_partials() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 27/34] mm, slub: don't disable irqs in slub_cpu_dead() Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 28/34] mm, slab: make flush_slab() possible to call with irqs enabled Vlastimil Babka
2021-06-09 11:38 ` [RFC v2 29/34] mm: slub: Move flush_cpu_slab() invocations __free_slab() invocations out of IRQ context Vlastimil Babka
2021-06-09 22:29   ` Cyrill Gorcunov
2021-06-10  8:32     ` Vlastimil Babka
2021-06-10  8:36       ` Cyrill Gorcunov
2021-07-07  6:33   ` Hillf Danton
2021-06-09 11:38 ` [RFC v2 30/34] mm: slub: Make object_map_lock a raw_spinlock_t Vlastimil Babka
2021-06-09 11:39 ` [RFC v2 31/34] mm, slub: optionally save/restore irqs in slab_[un]lock()/ Vlastimil Babka
2021-07-02 12:17   ` Sebastian Andrzej Siewior
2021-06-09 11:39 ` [RFC v2 32/34] mm, slub: make slab_lock() disable irqs with PREEMPT_RT Vlastimil Babka
2021-06-09 11:39 ` [RFC v2 33/34] mm, slub: use migrate_disable() on PREEMPT_RT Vlastimil Babka
2021-06-14 11:07   ` Vlastimil Babka
2021-06-14 11:16     ` Sebastian Andrzej Siewior
2021-06-14 11:33       ` Vlastimil Babka
2021-06-14 12:54         ` Vlastimil Babka
2021-06-14 14:01         ` Sebastian Andrzej Siewior
2021-06-09 11:39 ` [RFC v2 34/34] mm, slub: convert kmem_cpu_slab protection to local_lock Vlastimil Babka
2021-06-14  9:49 ` [RFC v2 00/34] SLUB: reduce irq disabled scope and make it RT compatible Mel Gorman
2021-06-14 11:31   ` Mel Gorman
2021-06-14 11:10 ` Vlastimil Babka
2021-07-02 18:29 ` Sebastian Andrzej Siewior
2021-07-02 20:25   ` Vlastimil Babka
2021-07-29 13:49     ` Sebastian Andrzej Siewior
2021-07-29 14:17       ` Vlastimil Babka
2021-07-29 14:37         ` Sebastian Andrzej Siewior
2021-07-03  7:24   ` Mike Galbraith
2021-07-03 15:47     ` Mike Galbraith
2021-07-04  5:37       ` Mike Galbraith
2021-07-18  7:41     ` Vlastimil Babka [this message]
2021-07-18  8:29       ` Mike Galbraith
2021-07-18 12:09         ` Mike Galbraith
2021-07-05 16:00   ` Mike Galbraith
2021-07-06 17:56     ` Mike Galbraith

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=ef4903e2-c2ce-9a64-68b0-c7ee483eb582@suse.cz \
    --to=vbabka@suse.cz \
    --cc=bigeasy@linutronix.de \
    --cc=brouer@redhat.com \
    --cc=cl@linux.com \
    --cc=efault@gmx.de \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=jannh@google.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mgorman@techsingularity.net \
    --cc=penberg@kernel.org \
    --cc=peterz@infradead.org \
    --cc=rientjes@google.com \
    --cc=tglx@linutronix.de \
    /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.