linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RT] lockdep munching nr_list_entries like popcorn
@ 2017-02-16  6:03 Mike Galbraith
  2017-02-16  8:37 ` Thomas Gleixner
  0 siblings, 1 reply; 11+ messages in thread
From: Mike Galbraith @ 2017-02-16  6:03 UTC (permalink / raw)
  To: RT; +Cc: LKML, Sebastian Andrzej Siewior, Thomas Gleixner

4.9.10-rt6-virgin on 72 core +SMT box.

Below is 1 line per minute, box idling along daintily nibbling, I fire
up a parallel kbuild loop at 40465, and box gobbles greedily.

I have entries bumped to 128k, and chain bits to 18 so box will get
booted and run for a while before lockdep says "I quit".  With stock
settings, this box will barely get booted.  Seems the bigger the box,
the sooner you're gonna run out.  A NOPREEMPT kernel seems to nibble
entries too, but nowhere remotely near as greedily as RT.

           <...>-100309 [064] d....13  2885.873312: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40129
           <...>-104320 [116] dN..211  2959.633630: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40155
 btrfs-transacti-1955  [043] d...111  3021.073949: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40183
           <...>-118865 [120] d....13  3086.146794: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40209
  systemd-logind-4763  [068] d....11  3146.953001: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40239
           <...>-123725 [032] dN..2..  3215.735774: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40285
           <...>-33968 [031] d...1..  3347.919001: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40409
           <...>-130886 [143] d....12  3412.586643: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40465
           <...>-138291 [037] d....11  3477.816405: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 42825
           <...>-67678 [137] d...112  3551.648282: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 47899
    ksoftirqd/45-421   [045] d....13  3617.926394: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 48751
         ihex2fw-24635 [035] d....11  3686.899690: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 49345
           <...>-76041 [047] d...111  3758.230009: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 49757
            stty-10772 [118] d...1..  3825.626815: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 50115
  kworker/u289:4-13376 [075] d....12  3896.432428: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 51189
           <...>-92785 [047] d....12  3905.137578: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 51287

With stacktrace on, buffer contains 1010 __lru_cache_add+0x4f...

(gdb) list *__lru_cache_add+0x4f
0xffffffff811dca9f is in __lru_cache_add (./include/linux/locallock.h:59).
54
55      static inline void __local_lock(struct local_irq_lock *lv)
56      {
57              if (lv->owner != current) {
58                      spin_lock_local(&lv->lock);
59                      LL_WARN(lv->owner);
60                      LL_WARN(lv->nestcnt);
61                      lv->owner = current;
62              }
63              lv->nestcnt++;

...which seems to be this.

0xffffffff811dca80 is in __lru_cache_add (mm/swap.c:397).
392     }
393     EXPORT_SYMBOL(mark_page_accessed);
394
395     static void __lru_cache_add(struct page *page)
396     {
397             struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvec);
398
399             get_page(page);
400             if (!pagevec_add(pvec, page) || PageCompound(page))
401                     __pagevec_lru_add(pvec);

swapvec_lock?  Oodles of 'em?  Nope.

	-Mike

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16  6:03 [RT] lockdep munching nr_list_entries like popcorn Mike Galbraith
@ 2017-02-16  8:37 ` Thomas Gleixner
  2017-02-16  8:50   ` Mike Galbraith
  0 siblings, 1 reply; 11+ messages in thread
From: Thomas Gleixner @ 2017-02-16  8:37 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: RT, LKML, Sebastian Andrzej Siewior

On Thu, 16 Feb 2017, Mike Galbraith wrote:

> 4.9.10-rt6-virgin on 72 core +SMT box.
> 
> Below is 1 line per minute, box idling along daintily nibbling, I fire
> up a parallel kbuild loop at 40465, and box gobbles greedily.
> 
> I have entries bumped to 128k, and chain bits to 18 so box will get
> booted and run for a while before lockdep says "I quit".  With stock
> settings, this box will barely get booted.  Seems the bigger the box,
> the sooner you're gonna run out.  A NOPREEMPT kernel seems to nibble
> entries too, but nowhere remotely near as greedily as RT.

Right. RT adds a bunch of locks through the local lock mechanism.

>            <...>-100309 [064] d....13  2885.873312: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 40129
>            <...>-92785 [047] d....12  3905.137578: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 51287

That's odd.

> With stacktrace on, buffer contains 1010 __lru_cache_add+0x4f...
> 
> (gdb) list *__lru_cache_add+0x4f
> 0xffffffff811dca9f is in __lru_cache_add (./include/linux/locallock.h:59).
> 54
> 55      static inline void __local_lock(struct local_irq_lock *lv)
> 56      {
> 57              if (lv->owner != current) {
> 58                      spin_lock_local(&lv->lock);
> 59                      LL_WARN(lv->owner);
> 60                      LL_WARN(lv->nestcnt);
> 61                      lv->owner = current;
> 62              }
> 63              lv->nestcnt++;
> 
> ...which seems to be this.
> 
> 0xffffffff811dca80 is in __lru_cache_add (mm/swap.c:397).
> 392     }
> 393     EXPORT_SYMBOL(mark_page_accessed);
> 394
> 395     static void __lru_cache_add(struct page *page)
> 396     {
> 397             struct pagevec *pvec = &get_locked_var(swapvec_lock, lru_add_pvec);
> 398
> 399             get_page(page);
> 400             if (!pagevec_add(pvec, page) || PageCompound(page))
> 401                     __pagevec_lru_add(pvec);
> 
> swapvec_lock?  Oodles of 'em?  Nope.

Well, it's a per cpu lock and the lru_cache_add() variants might be called
from a gazillion of different call chains, but yes, it does not make a lot
of sense. We'll have a look.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16  8:37 ` Thomas Gleixner
@ 2017-02-16  8:50   ` Mike Galbraith
  2017-02-16  9:01     ` Thomas Gleixner
  0 siblings, 1 reply; 11+ messages in thread
From: Mike Galbraith @ 2017-02-16  8:50 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: RT, LKML, Sebastian Andrzej Siewior

On Thu, 2017-02-16 at 09:37 +0100, Thomas Gleixner wrote:
> On Thu, 16 Feb 2017, Mike Galbraith wrote:
> 
...
> > swapvec_lock?  Oodles of 'em?  Nope.
> 
> Well, it's a per cpu lock and the lru_cache_add() variants might be called
> from a gazillion of different call chains, but yes, it does not make a lot
> of sense. We'll have a look.

Adding explicit local_irq_lock_init() makes things heaps better, so
presumably we need better lockdep-foo in DEFINE_LOCAL_IRQ_LOCK().

	-Mike

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16  8:50   ` Mike Galbraith
@ 2017-02-16  9:01     ` Thomas Gleixner
  2017-02-16  9:27       ` Mike Galbraith
  2017-02-16 11:06       ` Peter Zijlstra
  0 siblings, 2 replies; 11+ messages in thread
From: Thomas Gleixner @ 2017-02-16  9:01 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: RT, LKML, Sebastian Andrzej Siewior

On Thu, 16 Feb 2017, Mike Galbraith wrote:

> On Thu, 2017-02-16 at 09:37 +0100, Thomas Gleixner wrote:
> > On Thu, 16 Feb 2017, Mike Galbraith wrote:
> > 
> ...
> > > swapvec_lock?  Oodles of 'em?  Nope.
> > 
> > Well, it's a per cpu lock and the lru_cache_add() variants might be called
> > from a gazillion of different call chains, but yes, it does not make a lot
> > of sense. We'll have a look.
> 
> Adding explicit local_irq_lock_init() makes things heaps better, so
> presumably we need better lockdep-foo in DEFINE_LOCAL_IRQ_LOCK().

Bah.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16  9:01     ` Thomas Gleixner
@ 2017-02-16  9:27       ` Mike Galbraith
  2017-02-16 11:06       ` Peter Zijlstra
  1 sibling, 0 replies; 11+ messages in thread
From: Mike Galbraith @ 2017-02-16  9:27 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: RT, LKML, Sebastian Andrzej Siewior

On Thu, 2017-02-16 at 10:01 +0100, Thomas Gleixner wrote:
> On Thu, 16 Feb 2017, Mike Galbraith wrote:
> 
> > On Thu, 2017-02-16 at 09:37 +0100, Thomas Gleixner wrote:
> > > On Thu, 16 Feb 2017, Mike Galbraith wrote:
> > > 
> > ...
> > > > swapvec_lock?  Oodles of 'em?  Nope.
> > > 
> > > Well, it's a per cpu lock and the lru_cache_add() variants might be called
> > > from a gazillion of different call chains, but yes, it does not make a lot
> > > of sense. We'll have a look.
> > 
> > Adding explicit local_irq_lock_init() makes things heaps better, so
> > presumably we need better lockdep-foo in DEFINE_LOCAL_IRQ_LOCK().
> 
> Bah.

Hm, "bah" sounds kinda like it might be a synonym for -EDUMMY :)  Fair
enough, I know spit about about lockdep, so that's likely the case, but
the below has me down to ~17k (and climbing, but not as fast).

berio:/sys/kernel/debug/tracing/:[0]# grep -A 1 'stack trace' trace|grep '=>'|sort|uniq
 => ___slab_alloc+0x171/0x5c0
 => __percpu_counter_add+0x56/0xd0
 => __schedule+0xb0/0x7b0
 => __slab_free+0xd8/0x200
 => cgroup_idr_alloc.constprop.39+0x37/0x80
 => hrtimer_start_range_ns+0xe6/0x400
 => idr_preload+0x6c/0x300
 => jbd2_journal_extend+0x4c/0x310 [jbd2]
 => lock_hrtimer_base.isra.28+0x29/0x50
 => rcu_note_context_switch+0x2b8/0x5c0
 => rcu_report_unblock_qs_rnp+0x6e/0xa0
 => rt_mutex_slowunlock+0x25/0xc0
 => rt_spin_lock_slowlock+0x52/0x330
 => rt_spin_lock_slowlock+0x94/0x330
 => rt_spin_lock_slowunlock+0x3c/0xc0
 => swake_up+0x21/0x40
 => task_blocks_on_rt_mutex+0x42/0x1e0
 => try_to_wake_up+0x2d/0x920

berio:/sys/kernel/debug/tracing/:[0]# grep nr_list_entries: trace|tail -1
 irq/66-eth2-TxR-3670  [115] d....14  1542.321173: add_lock_to_list.isra.24.constprop.42+0x20/0x100: nr_list_entries: 17839

Got rid of the really pesky growth anyway.

--- a/kernel/workqueue.c
+++ b/kernel/workqueue.c
@@ -5522,6 +5522,7 @@ static int __init init_workqueues(void)
 
 	pwq_cache = KMEM_CACHE(pool_workqueue, SLAB_PANIC);
 
+	local_irq_lock_init(pendingb_lock);
 	wq_numa_init();
 
 	/* initialize CPU pools */
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -1677,5 +1677,6 @@ void __init radix_tree_init(void)
 			SLAB_PANIC | SLAB_RECLAIM_ACCOUNT,
 			radix_tree_node_ctor);
 	radix_tree_init_maxnodes();
+	local_irq_lock_init(radix_tree_preloads_lock);
 	hotcpu_notifier(radix_tree_callback, 0);
 }
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -5786,6 +5786,7 @@ static int __init mem_cgroup_init(void)
 	int cpu, node;
 
 	hotcpu_notifier(memcg_cpu_hotplug_callback, 0);
+	local_irq_lock_init(event_lock);
 
 	for_each_possible_cpu(cpu)
 		INIT_WORK(&per_cpu_ptr(&memcg_stock, cpu)->work,
--- a/mm/swap.c
+++ b/mm/swap.c
@@ -681,6 +681,14 @@ static inline void remote_lru_add_drain(
 	local_unlock_on(swapvec_lock, cpu);
 }
 
+static int __init lru_init(void)
+{
+	local_irq_lock_init(swapvec_lock);
+	local_irq_lock_init(rotate_lock);
+	return 0;
+}
+early_initcall(lru_init);
+
 #else
 
 /*
--- a/net/netfilter/core.c
+++ b/net/netfilter/core.c
@@ -525,6 +525,7 @@ int __init netfilter_init(void)
 {
 	int ret;
 
+	local_irq_lock_init(xt_write_lock);
 	ret = register_pernet_subsys(&netfilter_net_ops);
 	if (ret < 0)
 		goto err;

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16  9:01     ` Thomas Gleixner
  2017-02-16  9:27       ` Mike Galbraith
@ 2017-02-16 11:06       ` Peter Zijlstra
  2017-02-16 14:42         ` Mike Galbraith
  1 sibling, 1 reply; 11+ messages in thread
From: Peter Zijlstra @ 2017-02-16 11:06 UTC (permalink / raw)
  To: Thomas Gleixner; +Cc: Mike Galbraith, RT, LKML, Sebastian Andrzej Siewior

On Thu, Feb 16, 2017 at 10:01:18AM +0100, Thomas Gleixner wrote:
> On Thu, 16 Feb 2017, Mike Galbraith wrote:
> 
> > On Thu, 2017-02-16 at 09:37 +0100, Thomas Gleixner wrote:
> > > On Thu, 16 Feb 2017, Mike Galbraith wrote:
> > > 
> > ...
> > > > swapvec_lock?  Oodles of 'em?  Nope.
> > > 
> > > Well, it's a per cpu lock and the lru_cache_add() variants might be called
> > > from a gazillion of different call chains, but yes, it does not make a lot
> > > of sense. We'll have a look.
> > 
> > Adding explicit local_irq_lock_init() makes things heaps better, so
> > presumably we need better lockdep-foo in DEFINE_LOCAL_IRQ_LOCK().
> 
> Bah.


#ifdef CONFIG_DEBUG_LOCK_ALLOC
#define PER_CPU_DEP_MAP_INIT(lockname)                          \
        .dep_map = {                                            \
                .key = ({ static struct lock_class_key __key; &__key }), \
                .name = #lockname,                              \
        }
#else
#define PER_CPU_DEP_MAP_INIT(lockname)
#endif

#define DEFINE_LOCAL_IRQ_LOCK(lvar)                             \
        DEFINE_PER_CPU(struct local_irq_lock, lvar) = {         \
                .lock = { .rlock = {                            \
                        .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED,  \
                        SPIN_DEBUG_INIT(lvar)                   \
                        PER_CPU_DEP_MAP_INIT(lvar)              \
                } }                                             \
        }

That's fairly horrible for poking inside all the internals, but it might
just work ;-)

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16 11:06       ` Peter Zijlstra
@ 2017-02-16 14:42         ` Mike Galbraith
  2017-02-16 14:53           ` Sebastian Andrzej Siewior
  0 siblings, 1 reply; 11+ messages in thread
From: Mike Galbraith @ 2017-02-16 14:42 UTC (permalink / raw)
  To: Peter Zijlstra, Thomas Gleixner; +Cc: RT, LKML, Sebastian Andrzej Siewior

On Thu, 2017-02-16 at 12:06 +0100, Peter Zijlstra wrote:
> On Thu, Feb 16, 2017 at 10:01:18AM +0100, Thomas Gleixner wrote:
> > On Thu, 16 Feb 2017, Mike Galbraith wrote:
> > 
> > > On Thu, 2017-02-16 at 09:37 +0100, Thomas Gleixner wrote:
> > > > On Thu, 16 Feb 2017, Mike Galbraith wrote:
> > > > 
> > > ...
> > > > > swapvec_lock?  Oodles of 'em?  Nope.
> > > > 
> > > > Well, it's a per cpu lock and the lru_cache_add() variants might be called
> > > > from a gazillion of different call chains, but yes, it does not make a lot
> > > > of sense. We'll have a look.
> > > 
> > > Adding explicit local_irq_lock_init() makes things heaps better, so
> > > presumably we need better lockdep-foo in DEFINE_LOCAL_IRQ_LOCK().
> > 
> > Bah.
> 
> 
> #ifdef CONFIG_DEBUG_LOCK_ALLOC
> #define PER_CPU_DEP_MAP_INIT(lockname)                          \
>         .dep_map = {                                            \
>                 .key = ({ static struct lock_class_key __key; &__key }), \
>                 .name = #lockname,                              \
>         }
> #else
> #define PER_CPU_DEP_MAP_INIT(lockname)
> #endif
> 
> #define DEFINE_LOCAL_IRQ_LOCK(lvar)                             \
>         DEFINE_PER_CPU(struct local_irq_lock, lvar) = {         \
>                 .lock = { .rlock = {                            \
>                         .raw_lock = __ARCH_SPIN_LOCK_UNLOCKED,  \
>                         SPIN_DEBUG_INIT(lvar)                   \
>                         PER_CPU_DEP_MAP_INIT(lvar)              \
>                 } }                                             \
>         }
> 
> That's fairly horrible for poking inside all the internals, but it might
> just work ;-

Weeell, I'm trying to cobble something kinda like that together using
__RT_SPIN_INITIALIZER() instead, but seems mean ole Mr. Compiler NAKs
the PER_CPU_DEP_MAP_INIT() thingy.

  CC      mm/swap.o
mm/swap.c:54:689: error: braced-group within expression allowed only
inside a function

	-Mike

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16 14:42         ` Mike Galbraith
@ 2017-02-16 14:53           ` Sebastian Andrzej Siewior
  2017-02-16 18:06             ` Mike Galbraith
  0 siblings, 1 reply; 11+ messages in thread
From: Sebastian Andrzej Siewior @ 2017-02-16 14:53 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: Peter Zijlstra, Thomas Gleixner, RT, LKML

On 2017-02-16 15:42:59 [+0100], Mike Galbraith wrote:
> 
> Weeell, I'm trying to cobble something kinda like that together using
> __RT_SPIN_INITIALIZER() instead, but seems mean ole Mr. Compiler NAKs
> the PER_CPU_DEP_MAP_INIT() thingy.
> 
>   CC      mm/swap.o
> mm/swap.c:54:689: error: braced-group within expression allowed only
> inside a function

so this is what I have now. I need to get the `static' symbol working
again and PER_CPU_DEP_MAP_INIT but aside from that it seems to do its
job.

diff --git a/include/linux/locallock.h b/include/linux/locallock.h
index 845c77f1a5ca..36201b37012d 100644
--- a/include/linux/locallock.h
+++ b/include/linux/locallock.h
@@ -22,9 +22,27 @@ struct local_irq_lock {
 	unsigned long		flags;
 };
 
+#ifdef CONFIG_DEBUG_LOCK_ALLOC
+#define PER_CPU_DEP_MAP_INIT(lockname)					\
+	.dep_map = {							\
+		.key = ({ static struct lock_class_key __key; &__key }),\
+		.name = #lockname,					\
+	}
+#else
+#define PER_CPU_DEP_MAP_INIT(lockname)
+#endif
+
 #define DEFINE_LOCAL_IRQ_LOCK(lvar)					\
+	struct lock_class_key lvar##__key;			\
 	DEFINE_PER_CPU(struct local_irq_lock, lvar) = {			\
-		.lock = __SPIN_LOCK_UNLOCKED((lvar).lock) }
+		.lock = {	\
+			.lock = __RT_SPIN_INITIALIZER(lvar.lock),	\
+			.dep_map = {				\
+				.key = &lvar##__key,		\
+				.name = #lvar,			\
+			}					\
+		}							\
+	}
 
 #define DECLARE_LOCAL_IRQ_LOCK(lvar)					\
 	DECLARE_PER_CPU(struct local_irq_lock, lvar)

> 	-Mike

Sebastian

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16 14:53           ` Sebastian Andrzej Siewior
@ 2017-02-16 18:06             ` Mike Galbraith
  2017-02-16 18:16               ` Mike Galbraith
  2017-02-17 20:55               ` Mike Galbraith
  0 siblings, 2 replies; 11+ messages in thread
From: Mike Galbraith @ 2017-02-16 18:06 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: Peter Zijlstra, Thomas Gleixner, RT, LKML

On Thu, 2017-02-16 at 15:53 +0100, Sebastian Andrzej Siewior wrote:
> On 2017-02-16 15:42:59 [+0100], Mike Galbraith wrote:
> > 
> > Weeell, I'm trying to cobble something kinda like that together using
> > __RT_SPIN_INITIALIZER() instead, but seems mean ole Mr. Compiler NAKs
> > the PER_CPU_DEP_MAP_INIT() thingy.
> > 
> >   CC      mm/swap.o
> > mm/swap.c:54:689: error: braced-group within expression allowed only
> > inside a function
> 
> so this is what I have now. I need to get the `static' symbol working
> again and PER_CPU_DEP_MAP_INIT but aside from that it seems to do its
> job.

...

Yeah, works, I should be able to do an ltp run with stock lockdep
settings without it taking it's toys and going home in a snit. 

berio:/sys/kernel/debug/tracing/:[0]# !while
while sleep 60; do tail -1 trace; done
           <...>-10315 [064] d...1..   226.953935: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14223
               w-13148 [120] d...111   287.414978: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14465
               w-16492 [089] d...111   347.128742: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14653
(starts kbuild loop)
 btrfs-transacti-1964  [016] d...1..   411.101549: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 17011
           <...>-100268 [127] d...112   472.271769: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18153
               w-18864 [011] d...1..   534.386443: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18543
           <...>-50390 [035] dN..2..   597.794164: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18765
           <...>-80098 [127] d...111   659.912145: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18977
       checkproc-11123 [017] d...1..   721.483463: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 19247
          <idle>-0     [055] d..h5..   782.685953: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 19383
           <...>-93632 [055] d...111   835.527817: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 19441

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16 18:06             ` Mike Galbraith
@ 2017-02-16 18:16               ` Mike Galbraith
  2017-02-17 20:55               ` Mike Galbraith
  1 sibling, 0 replies; 11+ messages in thread
From: Mike Galbraith @ 2017-02-16 18:16 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: Peter Zijlstra, Thomas Gleixner, RT, LKML


BTW, this ain't gone.  I'll take a peek.  It doesn't happen in my tree,
seems likely to be because whether running sirqs fully threaded or not,
I don't let one any thread handle what another exists to handle.

[  638.107293] NOHZ: local_softirq_pending 80
[  939.729684] NOHZ: local_softirq_pending 80
[  945.600869] NOHZ: local_softirq_pending 80
[ 1387.101178] NOHZ: local_softirq_pending 80
[ 1387.101343] NOHZ: local_softirq_pending 80
[ 1387.101549] NOHZ: local_softirq_pending 80
[ 1413.313212] NOHZ: local_softirq_pending 80
[ 1413.313305] NOHZ: local_softirq_pending 80
[ 1413.313347] NOHZ: local_softirq_pending 80
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [RT] lockdep munching nr_list_entries like popcorn
  2017-02-16 18:06             ` Mike Galbraith
  2017-02-16 18:16               ` Mike Galbraith
@ 2017-02-17 20:55               ` Mike Galbraith
  1 sibling, 0 replies; 11+ messages in thread
From: Mike Galbraith @ 2017-02-17 20:55 UTC (permalink / raw)
  To: Sebastian Andrzej Siewior; +Cc: Peter Zijlstra, Thomas Gleixner, RT, LKML

On Thu, 2017-02-16 at 19:06 +0100, Mike Galbraith wrote:
> On Thu, 2017-02-16 at 15:53 +0100, Sebastian Andrzej Siewior wrote:
> > On 2017-02-16 15:42:59 [+0100], Mike Galbraith wrote:
> > > 
> > > Weeell, I'm trying to cobble something kinda like that together using
> > > __RT_SPIN_INITIALIZER() instead, but seems mean ole Mr. Compiler NAKs
> > > the PER_CPU_DEP_MAP_INIT() thingy.
> > > 
> > >   CC      mm/swap.o
> > > mm/swap.c:54:689: error: braced-group within expression allowed only
> > > inside a function
> > 
> > so this is what I have now. I need to get the `static' symbol working
> > again and PER_CPU_DEP_MAP_INIT but aside from that it seems to do its
> > job.
> 
> ...
> 
> Yeah, works, I should be able to do an ltp run with stock lockdep
> settings without it taking it's toys and going home in a snit. 
> 
> berio:/sys/kernel/debug/tracing/:[0]# !while
> while sleep 60; do tail -1 trace; done
>            <...>-10315 [064] d...1..   226.953935: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14223
>                w-13148 [120] d...111   287.414978: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14465
>                w-16492 [089] d...111   347.128742: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14653
> (starts kbuild loop)
>  btrfs-transacti-1964  [016] d...1..   411.101549: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 17011
>            <...>-100268 [127] d...112   472.271769: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18153
>                w-18864 [011] d...1..   534.386443: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18543
>            <...>-50390 [035] dN..2..   597.794164: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18765
>            <...>-80098 [127] d...111   659.912145: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 18977
>        checkproc-11123 [017] d...1..   721.483463: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 19247
>           -0     [055] d..h5..   782.685953: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 19383
>            <...>-93632 [055] d...111   835.527817: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 19441

And now Thomas's patch.  Spiffiness.  Now to start ltp.

berio:/sys/kernel/debug/tracing/:[0]# !while 
while sleep 60; do tail -1 trace; done
           <...>-12462 [105] d...1..   211.489528: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 12847
 btrfs-transacti-3136  [002] d...211   272.672777: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 12947
 irq/155-eth2-Tx-4495  [096] dN..213   332.035236: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 13001
(starts kbuild loop)
           <...>-44245 [087] d...114   396.892748: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 13917
           <...>-105411 [067] dN..211   457.708259: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14367
               w-21800 [113] dN..2..   519.231735: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14449
         modpost-31558 [020] d....11   576.065855: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14601
   kworker/dying-11860 [133] d...112   637.170497: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14679
           <...>-118853 [055] d....11   703.884755: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14759
           <...>-52143 [090] d...1..   767.624735: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14813
           <...>-71788 [126] d...1..   829.160330: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14857
  kworker/u289:5-2991  [002] d...1..   892.402939: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14883
              sh-15106 [008] d...211   953.172196: add_lock_to_list.isra.24.constprop.42: nr_list_entries: 14937
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2017-02-17 20:56 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-16  6:03 [RT] lockdep munching nr_list_entries like popcorn Mike Galbraith
2017-02-16  8:37 ` Thomas Gleixner
2017-02-16  8:50   ` Mike Galbraith
2017-02-16  9:01     ` Thomas Gleixner
2017-02-16  9:27       ` Mike Galbraith
2017-02-16 11:06       ` Peter Zijlstra
2017-02-16 14:42         ` Mike Galbraith
2017-02-16 14:53           ` Sebastian Andrzej Siewior
2017-02-16 18:06             ` Mike Galbraith
2017-02-16 18:16               ` Mike Galbraith
2017-02-17 20:55               ` Mike Galbraith

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).