lkml.org 
[lkml]   [2011]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH v1 00/19] Increase resolution of load weights
On Thu, May 12, 2011 at 3:55 AM, Ingo Molnar <mingo@elte.hu> wrote:
>
> * Nikhil Rao <ncrao@google.com> wrote:
>> On Tue, May 10, 2011 at 11:59 PM, Ingo Molnar <mingo@elte.hu> wrote:
>> >
>> >From this latest run on -tip, the instruction count is about ~0.28%
>> more and cycles are approx 3.38% more. From the stalled cycles counts,
>> it looks like most of this increase is coming from backend stalled
>> cycles. It's not clear what type of stalls these are, but if I were to
>> guess, I think it means stalls post-decode (i.e. functional units,
>> load/store, etc.). Is that right?
>
> Yeah, more functional work to be done, and probably a tad more expensive per
> extra instruction executed.
>

OK, this might be the shifts we do in c_d_m(). To confirm this, let me
remove the shifts and see if the number of stalled decreases.

> How did branches and branch misses change?
>

It looks like we take slightly more branches and miss more often.
About 0.2% more branches, and miss about 25% more often (i.e. 2.957%
vs. 2.376%).

-tip:
# taskset 8 perf stat --repeat 100 -e instructions -e cycles -e
branches -e branch-misses /root/data/pipe-test-100k

Performance counter stats for '/root/data/pipe-test-100k' (100 runs):

906,385,082 instructions # 0.835 IPC ( +- 0.077% )
1,085,517,988 cycles ( +- 0.139% )
165,921,546 branches ( +- 0.071% )
3,941,788 branch-misses # 2.376 % ( +- 0.952% )

1.061813201 seconds time elapsed ( +- 0.096% )


-tip+patches:
# taskset 8 perf stat --repeat 100 -e instructions -e cycles -e
branches -e branch-misses /root/data/pipe-test-100k

Performance counter stats for '/root/data/pipe-test-100k' (100 runs):

908,150,127 instructions # 0.829 IPC ( +- 0.073% )
1,095,344,326 cycles ( +- 0.140% )
166,266,732 branches ( +- 0.071% )
4,917,179 branch-misses # 2.957 % ( +- 0.746% )

1.065221478 seconds time elapsed ( +- 0.099% )


Comparing two perf records of branch-misses by hand, we see about the
same number of branch-miss events but the distribution looks less
top-heavy compared to -tip, so we might have a longer tail of branch
misses with the patches. None of the scheduler functions really stand
out.

-tip:
# taskset 8 perf record -e branch-misses /root/pipe-test-30m

# perf report | head -n 20
# Events: 310K cycles
#
# Overhead Command Shared Object
Symbol
# ........ ............. .................
.....................................
#
11.15% pipe-test-30m [kernel.kallsyms] [k] system_call
7.70% pipe-test-30m [kernel.kallsyms] [k] x86_pmu_disable_all
6.63% pipe-test-30m libc-2.11.1.so [.] __GI_read
6.11% pipe-test-30m [kernel.kallsyms] [k] pipe_read
5.74% pipe-test-30m [kernel.kallsyms] [k] system_call_after_swapgs
5.60% pipe-test-30m pipe-test-30m [.] main
5.55% pipe-test-30m [kernel.kallsyms] [k] find_next_bit
5.55% pipe-test-30m [kernel.kallsyms] [k] __might_sleep
5.46% pipe-test-30m [kernel.kallsyms] [k] _raw_spin_lock_irqsave
4.55% pipe-test-30m [kernel.kallsyms] [k] sched_clock
3.82% pipe-test-30m [kernel.kallsyms] [k] pipe_wait
3.73% pipe-test-30m [kernel.kallsyms] [k] sys_write
3.65% pipe-test-30m [kernel.kallsyms] [k] anon_pipe_buf_release
3.61% pipe-test-30m [kernel.kallsyms] [k] update_curr
2.75% pipe-test-30m [kernel.kallsyms] [k] select_task_rq_fair

-tip+patches:
# taskset 8 perf record -e branch-misses /root/pipe-test-30m

# perf report | head -n 20
# Events: 314K branch-misses
#
# Overhead Command Shared Object
Symbol
# ........ ............. .................
.....................................
#
7.66% pipe-test-30m [kernel.kallsyms] [k] __might_sleep
7.59% pipe-test-30m [kernel.kallsyms] [k] system_call_after_swapgs
5.88% pipe-test-30m [kernel.kallsyms] [k] kill_fasync
4.42% pipe-test-30m [kernel.kallsyms] [k] fsnotify
3.96% pipe-test-30m [kernel.kallsyms] [k] update_curr
3.93% pipe-test-30m [kernel.kallsyms] [k] system_call
3.91% pipe-test-30m [kernel.kallsyms] [k] update_stats_wait_end
3.90% pipe-test-30m [kernel.kallsyms] [k] sys_read
3.88% pipe-test-30m pipe-test-30m [.] main
3.86% pipe-test-30m [kernel.kallsyms] [k] select_task_rq_fair
3.81% pipe-test-30m libc-2.11.1.so [.] __GI_read
3.73% pipe-test-30m [kernel.kallsyms] [k] sysret_check
3.70% pipe-test-30m [kernel.kallsyms] [k] sys_write
3.66% pipe-test-30m [kernel.kallsyms] [k] ret_from_sys_call
3.56% pipe-test-30m [kernel.kallsyms] [k] fsnotify_access

-Thanks,
Nikhil


\
 
 \ /
  Last update: 2011-05-12 20:47    [W:0.286 / U:0.080 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site