Re: [PATCH v7 1/4] spinlock: A new lockref structure for locklessupdate of refcount
From: Waiman Long
Date: Fri Aug 30 2013 - 16:15:35 EST
On 08/30/2013 03:33 PM, Linus Torvalds wrote:
On Fri, Aug 30, 2013 at 12:20 PM, Waiman Long<waiman.long@xxxxxx> wrote:
Below is the perf data of my short workloads run in an 80-core DL980:
Ok, that doesn't look much like d_lock any more. Sure, there's a small
amount of spinlocking going on with lockref being involved, but on the
whole even that looks more like getcwd and other random things.
Yes, d_lock contention isn't a major one in the perf profile. However,
sometimes a small improvement can lead to a noticeable improvement in
performance.
I do agree that getcwd() can probably be hugely optimized. Nobody has
ever bothered, because it's never really performance-critical, and I
think AIM7 ends up just doing something really odd. I bet we could fix
it entirely if we cared enough.
The prepend_path() isn't all due to getcwd. The correct profile should be
|--12.81%-- prepend_path
| |
| |--67.35%-- d_path
| | |
| | |--60.72%--
proc_pid_readlink
| | | sys_readlinkat
| | | sys_readlink
| | |
system_call_fastpath
| | | __GI___readlink
| | | 0x302f64662f666c
| | |
| | --39.28%--
perf_event_mmap_event
| |
| --32.65%-- sys_getcwd
| system_call_fastpath
| __getcwd
Yes, the perf subsystem itself can contribute a sizeable portion of the
spinlock contention. In fact, I have also applied my seqlock patch that
was sent a while ago to the test kernel in order to get a more accurate
perf profile. The seqlock patch will allow concurrent d_path() calls
without one blocking the others. In the 240-core prototype machine, it
was not possible to get an accurate perf profile for some workloads
because more than 50% of the time was spent in spinlock contention due
to the use of perf. An accurate perf profile can only be obtained in
those cases by applying my lockref and seqlock patches. I hope someone
will have the time to review my seqlock patch to see what additional
changes will be needed. I really like to see it merged in some form to
3.12.
I just wonder if it's even worth it (I assume AIM7 is something HP
uses internally, because I've never really heard of anybody else
caring)
Our performance group is actually pretty new. It was formed 2 years ago
and we began actively participating in the Linux kernel development just
in the past year.
We use the AIM7 benchmark internally primarily because it is easy to run
and cover quite a lot of different areas in the kernel. We are also
using specJBB and SwingBench for performance benchmarking problem. We
are also trying to look for more benchmarks to use in the future.
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/