From: Sedat Dilek <sedat.dilek@gmail.com>
To: Waiman Long <waiman.long@hp.com>
Cc: Ingo Molnar <mingo@kernel.org>, Al Viro <viro@zeniv.linux.org.uk>,
Linus Torvalds <torvalds@linux-foundation.org>,
Benjamin Herrenschmidt <benh@kernel.crashing.org>,
Jeff Layton <jlayton@redhat.com>,
Miklos Szeredi <mszeredi@suse.cz>, Ingo Molnar <mingo@redhat.com>,
Thomas Gleixner <tglx@linutronix.de>,
linux-fsdevel <linux-fsdevel@vger.kernel.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Steven Rostedt <rostedt@goodmis.org>,
Andi Kleen <andi@firstfloor.org>,
"Chandramouleeswaran, Aswin" <aswin@hp.com>,
"Norton, Scott J" <scott.norton@hp.com>
Subject: Re: [PATCH v7 1/4] spinlock: A new lockref structure for lockless update of refcount
Date: Wed, 4 Sep 2013 01:11:05 +0200 [thread overview]
Message-ID: <CA+icZUXBNoiBCjsLr6Nbdtw5aEGXN_13vgZ4H7CGZ4qVnOiwAw@mail.gmail.com> (raw)
In-Reply-To: <CA+icZUXsPTXT8TYoVp+_xnhB5EgnR4FyadaVVzXBFOVA=9fQ9g@mail.gmail.com>
On Wed, Sep 4, 2013 at 12:41 AM, Sedat Dilek <sedat.dilek@gmail.com> wrote:
> On Tue, Sep 3, 2013 at 5:14 PM, Waiman Long <waiman.long@hp.com> wrote:
>> On 09/03/2013 02:01 AM, Ingo Molnar wrote:
>>>
>>> * Waiman Long<waiman.long@hp.com> wrote:
>>>
>>>> Yes, that patch worked. It eliminated the lglock as a bottleneck in the
>>>> AIM7 workload. The lg_global_lock did not show up in the perf profile,
>>>> whereas the lg_local_lock was only 0.07%.
>>>
>>> Just curious: what's the worst bottleneck now in the optimized kernel? :-)
>>>
>>> Thanks,
>>>
>>> Ingo
>>
>> With the following patches on v3.11:
>> 1. Linus's version of lockref patch
>> 2. Al's lglock patch
>> 3. My preliminary patch to convert prepend_path under RCU
>>
>
> With no reference where to get those patches, it's a bit hard to follow.
>
> I will try some perf benchmarking with the attached patch against
> Linux "WfW" edition.
>
Eat thiz...
$ cat /proc/version
Linux version 3.11.0-1-lockref-small (sedat.dilek@gmail.com@fambox)
(gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #1 SMP Wed Sep 4
00:53:25 CEST 2013
$ ~/src/linux-kernel/linux/tools/perf/perf stat --null --repeat 5
../scripts/t_lockref_from-linus
Total loops: 26786226
Total loops: 26970142
Total loops: 26593312
Total loops: 26885806
Total loops: 26944076
Performance counter stats for '../scripts/t_lockref_from-linus' (5 runs):
10,011755076 seconds time elapsed
( +- 0,10% )
$ sudo ~/src/linux-kernel/linux/tools/perf/perf record -e cycles:pp
../scripts/t_lockref_from-linus
Total loops: 26267751
[ perf record: Woken up 25 times to write data ]
[ perf record: Captured and wrote 6.112 MB perf.data (~267015 samples) ]
$ sudo ~/src/linux-kernel/linux/tools/perf/perf report -tui
Samples: 159K of event 'cycles:pp', Event count (approx.): 77088218721
12,52%uit_lockref_from-ui[kernel.kallsyms] ui[k] irq_ret.rn
4,37%uit_lockref_from-ui[kernel.kallsyms] ui[k] __ticket_spin_lock
4,18%uit_lockref_from-ui[kernel.kallsyms] ui[k] __acct_.pdate_integrals
3,90%uit_lockref_from-ui[kernel.kallsyms] ui[k] .ser_exit
3,17%uit_lockref_from-ui[kernel.kallsyms] ui[k] __d_look.p_rc.
3,14%uit_lockref_from-ui[kernel.kallsyms] ui[k] lockref_get_or_lock
3,01%uit_lockref_from-ui[kernel.kallsyms] ui[k] local_clock
2,72%uit_lockref_from-ui[kernel.kallsyms] ui[k] kmem_cache_alloc
2,54%uit_lockref_from-uilibc-2.15.so ui[.] __xstat64
2,45%uit_lockref_from-ui[kernel.kallsyms] ui[k] link_path_walk
2,23%uit_lockref_from-ui[kernel.kallsyms] ui[k] kmem_cache_free
1,90%uit_lockref_from-ui[kernel.kallsyms] ui[k] rc._eqs_exit_common.isra.43
1,88%uit_lockref_from-ui[kernel.kallsyms] ui[k] tracesys
1,82%uit_lockref_from-ui[kernel.kallsyms] ui[k] rc._eqs_enter_common.isra.45
1,77%uit_lockref_from-ui[kernel.kallsyms] ui[k] sched_clock_cp.
1,76%uit_lockref_from-ui[kernel.kallsyms] ui[k] .ser_enter
1,73%uit_lockref_from-ui[kernel.kallsyms] ui[k] lockref_p.t_or_lock
1,70%uit_lockref_from-ui[kernel.kallsyms] ui[k] path_look.pat
1,53%uit_lockref_from-ui[kernel.kallsyms] ui[k] native_read_tsc
1,52%uit_lockref_from-ui[kernel.kallsyms] ui[k] native_sched_clock
1,51%uit_lockref_from-ui[kernel.kallsyms] ui[k] cp_new_stat
1,51%uit_lockref_from-ui[kernel.kallsyms] ui[k] syscall_trace_enter
1,46%uit_lockref_from-ui[kernel.kallsyms] ui[k] acco.nt_system_time
1,42%uit_lockref_from-ui[kernel.kallsyms] ui[k] path_init
1,42%uit_lockref_from-ui[kernel.kallsyms] ui[k] copy_.ser_generic_.nrolled
1,39%uit_lockref_from-ui[kernel.kallsyms] ui[k] jiffies_to_timeval
1,39%uit_lockref_from-ui[kernel.kallsyms] ui[k] getname_flags
1,37%uit_lockref_from-ui[kernel.kallsyms] ui[k] vfs_getattr
1,25%uit_lockref_from-ui[kernel.kallsyms] ui[k] common_perm
1,14%uit_lockref_from-ui[kernel.kallsyms] ui[k] get_vtime_delta
1,13%uit_lockref_from-ui[kernel.kallsyms] ui[k] look.p_fast
1,12%uit_lockref_from-ui[kernel.kallsyms] ui[k] syscall_trace_leave
1,05%uit_lockref_from-ui[kernel.kallsyms] ui[k] system_call
0,99%uit_lockref_from-ui[kernel.kallsyms] ui[k] generic_fillattr
0,94%uit_lockref_from-ui[kernel.kallsyms] ui[k] .ser_path_at_empty
0,91%uit_lockref_from-ui[kernel.kallsyms] ui[k] acco.nt_.ser_time
0,90%uit_lockref_from-ui[kernel.kallsyms] ui[k] __ticket_spin_.nlock
0,87%uit_lockref_from-ui[kernel.kallsyms] ui[k] strncpy_from_.ser
0,83%uit_lockref_from-ui[kernel.kallsyms] ui[k] filename_look.p
0,82%uit_lockref_from-ui[kernel.kallsyms] ui[k] generic_permission
0,78%uit_lockref_from-ui[kernel.kallsyms] ui[k] complete_walk
0,75%uit_lockref_from-ui[kernel.kallsyms] ui[k] vfs_fstatat
0,74%uit_lockref_from-ui[kernel.kallsyms] ui[k] lg_local_lock
0,72%uit_lockref_from-ui[kernel.kallsyms] ui[k] vtime_acco.nt_.ser
0,67%uit_lockref_from-ui[kernel.kallsyms] ui[k] dp.t
0,66%uit_lockref_from-ui[kernel.kallsyms] ui[k] __inode_permission
0,62%uit_lockref_from-ui[kernel.kallsyms] ui[k] rc._eqs_enter
0,58%uit_lockref_from-ui[kernel.kallsyms] ui[k] lg_local_.nlock
0,56%uit_lockref_from-ui[kernel.kallsyms] ui[k] vtime_.ser_enter
0,50%uit_lockref_from-ui[kernel.kallsyms] ui[k] cp.acct_acco.nt_field
0,48%uit_lockref_from-ui[kernel.kallsyms] ui[k] sec.rity_inode_permission
0,48%uit_lockref_from-uit_lockref_from-lin.sui[.] start_ro.tine
0,47%uit_lockref_from-ui[kernel.kallsyms] ui[k] sec.rity_inode_getattr
0,47%uit_lockref_from-ui[kernel.kallsyms] ui[k] acct_acco.nt_cp.time
Press '?' for help on key bindings
Here the annotated entries for the first two entries:
irq_return
│
│
│
│ Disassembly of section .text:
│
│ ffffffff816d4f2c <irq_return>:
100,00 │ ↓ jmpq 120
│ data32 data32 data32 data32 nopw %cs:0x0(%rax,%rax,1)
__ticket_spin_lock
│
│
│
│ Disassembly of section .text:
│
│ ffffffff8104ff10 <__ticket_spin_lock>:
2,55 │ push %rbp
1,19 │ mov $0x10000,%eax
2,16 │ mov %rsp,%rbp
84,70 │ lock xadd %eax,(%rdi)
0,14 │ mov %eax,%edx
│ shr $0x10,%edx
4,33 │ cmp %ax,%dx
0,03 │ ↓ je 2a
│ nop
│20: pause
0,03 │ movzwl (%rdi),%eax
│ cmp %dx,%ax
│ ↑ jne 20
0,03 │2a: pop %rbp
4,84 │ ← retq
- Sedat -
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-09-03 23:11 UTC|newest]
Thread overview: 151+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-06 3:12 [PATCH v7 0/4] Lockless update of reference count protected by spinlock Waiman Long
2013-08-06 3:12 ` [PATCH v7 1/4] spinlock: A new lockref structure for lockless update of refcount Waiman Long
2013-08-29 1:40 ` Linus Torvalds
2013-08-29 4:44 ` Benjamin Herrenschmidt
2013-08-29 7:00 ` Ingo Molnar
2013-08-29 16:43 ` Linus Torvalds
2013-08-29 19:25 ` Linus Torvalds
2013-08-29 23:42 ` Linus Torvalds
2013-08-30 0:26 ` Benjamin Herrenschmidt
2013-08-30 0:49 ` Linus Torvalds
2013-08-30 2:06 ` Michael Neuling
2013-08-30 2:30 ` Benjamin Herrenschmidt
2013-08-30 2:35 ` Linus Torvalds
2013-08-30 2:45 ` Benjamin Herrenschmidt
2013-08-30 2:31 ` Linus Torvalds
2013-08-30 2:43 ` Benjamin Herrenschmidt
2013-08-30 7:16 ` Ingo Molnar
2013-08-30 15:28 ` Linus Torvalds
2013-08-30 3:12 ` Waiman Long
2013-08-30 3:54 ` Linus Torvalds
2013-08-30 7:55 ` Sedat Dilek
2013-08-30 8:10 ` Sedat Dilek
2013-08-30 9:27 ` Sedat Dilek
2013-08-30 9:48 ` Ingo Molnar
2013-08-30 9:56 ` Sedat Dilek
2013-08-30 9:58 ` Sedat Dilek
2013-08-30 10:29 ` Sedat Dilek
2013-08-30 10:36 ` Peter Zijlstra
2013-08-30 10:44 ` Sedat Dilek
2013-08-30 10:46 ` Sedat Dilek
2013-08-30 10:52 ` Peter Zijlstra
2013-08-30 10:57 ` Sedat Dilek
2013-08-30 14:05 ` Sedat Dilek
2013-08-30 11:19 ` Sedat Dilek
2013-08-30 10:38 ` Sedat Dilek
2013-08-30 15:34 ` Linus Torvalds
2013-08-30 15:38 ` Sedat Dilek
2013-08-30 16:12 ` Steven Rostedt
2013-08-30 16:16 ` Sedat Dilek
2013-08-30 18:42 ` Linus Torvalds
2013-08-30 16:32 ` Linus Torvalds
2013-08-30 16:37 ` Sedat Dilek
2013-08-30 16:52 ` Linus Torvalds
2013-08-30 17:11 ` Sedat Dilek
2013-08-30 17:26 ` Linus Torvalds
2013-09-01 10:01 ` Sedat Dilek
2013-09-01 10:33 ` Sedat Dilek
2013-09-01 15:32 ` Linus Torvalds
2013-09-01 15:45 ` Sedat Dilek
2013-09-01 15:55 ` Linus Torvalds
2013-09-02 10:30 ` Sedat Dilek
2013-09-02 16:09 ` David Ahern
2013-09-01 20:59 ` Linus Torvalds
2013-09-01 21:23 ` Al Viro
2013-09-01 22:16 ` Linus Torvalds
2013-09-01 22:35 ` Al Viro
2013-09-01 22:44 ` Al Viro
2013-09-01 22:58 ` Linus Torvalds
2013-09-01 22:48 ` Linus Torvalds
2013-09-01 23:30 ` Al Viro
2013-09-02 0:12 ` Linus Torvalds
2013-09-02 0:50 ` Linus Torvalds
2013-09-02 7:05 ` Ingo Molnar
2013-09-02 16:44 ` Linus Torvalds
2013-09-03 10:15 ` Ingo Molnar
2013-09-03 15:41 ` Linus Torvalds
2013-09-03 18:34 ` Linus Torvalds
2013-09-03 19:19 ` Ingo Molnar
2013-09-03 21:05 ` Linus Torvalds
2013-09-03 21:13 ` Linus Torvalds
2013-09-03 21:34 ` Linus Torvalds
2013-09-03 21:39 ` Linus Torvalds
2013-09-03 14:08 ` Pavel Machek
2013-09-03 22:37 ` Sedat Dilek
2013-09-03 22:55 ` Dave Jones
2013-09-03 23:05 ` Sedat Dilek
2013-09-03 23:15 ` Dave Jones
2013-09-03 23:20 ` Sedat Dilek
2013-09-03 23:45 ` Sedat Dilek
2013-08-30 18:33 ` Waiman Long
2013-08-30 18:53 ` Linus Torvalds
2013-08-30 19:20 ` Waiman Long
2013-08-30 19:33 ` Linus Torvalds
2013-08-30 20:15 ` Waiman Long
2013-08-30 20:43 ` Linus Torvalds
2013-08-30 20:54 ` Al Viro
2013-08-30 21:03 ` Linus Torvalds
2013-08-30 21:44 ` Al Viro
2013-08-30 22:30 ` Linus Torvalds
2013-08-31 21:23 ` Al Viro
2013-08-31 22:49 ` Linus Torvalds
2013-08-31 23:27 ` Al Viro
2013-09-01 0:13 ` Al Viro
2013-09-01 17:48 ` Al Viro
2013-09-09 8:30 ` Peter Zijlstra
2013-08-30 21:10 ` Waiman Long
2013-08-30 21:22 ` Linus Torvalds
2013-08-30 21:30 ` Al Viro
2013-08-30 21:42 ` Waiman Long
2013-08-30 19:40 ` Al Viro
2013-08-30 19:52 ` Waiman Long
2013-08-30 20:26 ` Al Viro
2013-08-30 20:35 ` Waiman Long
2013-08-30 20:48 ` Al Viro
2013-08-31 2:02 ` Waiman Long
2013-08-31 2:35 ` Al Viro
2013-08-31 2:42 ` Al Viro
2013-09-02 19:25 ` Waiman Long
2013-09-03 6:01 ` Ingo Molnar
2013-09-03 7:24 ` Sedat Dilek
2013-09-03 15:38 ` Linus Torvalds
2013-09-03 15:14 ` Waiman Long
2013-09-03 15:34 ` Linus Torvalds
2013-09-03 19:09 ` Linus Torvalds
2013-09-03 21:01 ` Waiman Long
2013-09-04 14:52 ` Waiman Long
2013-09-04 15:14 ` Linus Torvalds
2013-09-04 19:25 ` Waiman Long
2013-09-04 21:34 ` Linus Torvalds
2013-09-05 2:35 ` Waiman Long
2013-09-05 13:31 ` Ingo Molnar
2013-09-05 17:33 ` Waiman Long
2013-09-05 17:40 ` Ingo Molnar
2013-09-03 22:41 ` Sedat Dilek
2013-09-03 23:11 ` Sedat Dilek [this message]
2013-09-08 21:45 ` Linus Torvalds
2013-09-09 0:03 ` Al Viro
2013-09-09 0:25 ` Linus Torvalds
2013-09-09 0:35 ` Al Viro
2013-09-09 0:38 ` Linus Torvalds
2013-09-09 0:57 ` Al Viro
2013-09-09 2:09 ` Ramkumar Ramachandra
2013-09-09 0:30 ` Al Viro
2013-09-09 3:32 ` Linus Torvalds
2013-09-09 4:06 ` Ramkumar Ramachandra
2013-09-09 5:44 ` Al Viro
2013-08-30 17:17 ` Peter Zijlstra
2013-08-30 17:28 ` Linus Torvalds
2013-08-30 17:33 ` Linus Torvalds
2013-08-29 15:20 ` Waiman Long
2013-08-06 3:12 ` [PATCH v7 2/4] spinlock: Enable x86 architecture to do lockless refcount update Waiman Long
2013-08-06 3:12 ` [PATCH v7 3/4] dcache: replace d_lock/d_count by d_lockcnt Waiman Long
2013-08-06 3:12 ` [PATCH v7 4/4] dcache: Enable lockless update of dentry's refcount Waiman Long
2013-08-13 18:03 ` [PATCH v7 0/4] Lockless update of reference count protected by spinlock Waiman Long
2013-08-31 3:06 [PATCH v7 1/4] spinlock: A new lockref structure for lockless update of refcount George Spelvin
2013-08-31 17:16 ` Linus Torvalds
2013-09-01 8:50 ` George Spelvin
2013-09-01 11:10 ` Theodore Ts'o
2013-09-01 15:49 ` Linus Torvalds
2013-09-01 18:11 ` Steven Rostedt
2013-09-01 20:03 ` Linus Torvalds
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=CA+icZUXBNoiBCjsLr6Nbdtw5aEGXN_13vgZ4H7CGZ4qVnOiwAw@mail.gmail.com \
--to=sedat.dilek@gmail.com \
--cc=andi@firstfloor.org \
--cc=aswin@hp.com \
--cc=benh@kernel.crashing.org \
--cc=jlayton@redhat.com \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=mingo@redhat.com \
--cc=mszeredi@suse.cz \
--cc=peterz@infradead.org \
--cc=rostedt@goodmis.org \
--cc=scott.norton@hp.com \
--cc=tglx@linutronix.de \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
--cc=waiman.long@hp.com \
/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 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).