Re: [PATCH v7 1/4] spinlock: A new lockref structure for locklessupdate of refcount

From: Waiman Long
Date: Wed Sep 04 2013 - 10:53:25 EST


On 09/03/2013 03:09 PM, Linus Torvalds wrote:
On Tue, Sep 3, 2013 at 8:34 AM, Linus Torvalds
<torvalds@xxxxxxxxxxxxxxxxxxxx> wrote:
I suspect the tty_ldisc_lock() could be made to go away if we care.
Heh. I just pulled the tty patches from Greg, and the locking has
changed completely.

It may actually fix your AIM7 test-case, because while the global
spinlock remains (it got renamed to "tty_ldiscs_lock" - there's an
added "s"), the common operations now take the per-tty lock to get the
ldisc for that tty, rather than that global spinlock (which just
protects the actual ldisk array now).

That said, I don't know what AIM7 really ends up doing, but your
profile seems to have every access through tty_ldisc_[de]ref() that
now uses only the per-tty lock. Of course, how much that helps ends up
depending on whether AIM7 uses lots of tty's or just one shared one.

Anyway, it might be worth testing my current -git tree.

Linus

The latest tty patches did work. The tty related spinlock contention is now completely gone. The short workload can now reach over 8M JPM which is the highest I have ever seen.

The perf profile was:

5.85% reaim reaim [.] mul_short
4.87% reaim [kernel.kallsyms] [k] ebitmap_get_bit
4.72% reaim reaim [.] mul_int
4.71% reaim reaim [.] mul_long
2.67% reaim libc-2.12.so [.] __random_r
2.64% reaim [kernel.kallsyms] [k] lockref_get_not_zero
1.58% reaim [kernel.kallsyms] [k] copy_user_generic_string
1.48% reaim [kernel.kallsyms] [k] mls_level_isvalid
1.35% reaim [kernel.kallsyms] [k] find_next_bit
1.23% reaim [kernel.kallsyms] [k] system_call
1.21% reaim libc-2.12.so [.] memcpy
1.19% reaim [kernel.kallsyms] [k] _raw_spin_lock
1.06% reaim [kernel.kallsyms] [k] avc_has_perm_flags
1.04% reaim libc-2.12.so [.] __srandom_r
1.02% reaim reaim [.] newton_raphson
1.01% reaim [kernel.kallsyms] [k] update_cfs_rq_blocked_load
0.98% reaim [kernel.kallsyms] [k] fsnotify
0.94% reaim [kernel.kallsyms] [k] avtab_search_node
0.91% reaim libm-2.12.so [.] __sincos

I have a patch in linux-next that should eliminate ebitmap_get_bit, mls_leve_isvalid and find_next_bit from the list top once it is merged.

Regards,
Longman
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/