public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* kernbench on 512p
@ 2004-08-19 16:16 Jesse Barnes
  2004-08-19 16:22 ` William Lee Irwin III
                   ` (3 more replies)
  0 siblings, 4 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-19 16:16 UTC (permalink / raw)
  To: linux-kernel

I set out to benchmark the page cache round robin stuff I posted earlier to 
see whether round robining across 256 nodes would really hurt kernbench 
performance.  What I found was that things aren't scaling well enough to make 
reasonable measurements.

                      time     user   system   %cpu    ctx    sleeps
2.6.8.1-mm1+nodespan  108.622  1588   10536    11158  31193   397966
2.6.8.1-mm1+ns+rr     105.614  1163    8631     9302  27774   420888

2.6.8.1-mm1+nodespan is just 2.6.8.1-mm1 with my last node-span patch applied.  
2.6.8.1-mm1+ns+rr is that plus the page cache round robin patch I posted 
recently.  I just extracted the 'optimal run' average for each of the above 
lines.

Here's the kernel profile.  It would be nice if the patch to show which lock 
is contended got included.  I think it was discussed awhile back, but I don't 
have one against the newly merged profiling code.

[root@ascender root]# readprofile -m System.map | sort -nr | head -30
208218076 total                                     30.1677
90036167 ia64_pal_call_static                     468938.3698
88140492 default_idle                             229532.5312
10312592 ia64_save_scratch_fpregs                 161134.2500
10306777 ia64_load_scratch_fpregs                 161043.3906
8723555 ia64_spinlock_contention                 90870.3646
121385 rcu_check_quiescent_state                316.1068
 40464 file_move                                180.6429
 32374 file_kill                                144.5268
 25316 atomic_dec_and_lock                       98.8906
 24814 clear_page                               155.0875
 17709 file_ra_state_init                       110.6813
 17603 clear_page_tables                         13.4169
 16822 copy_page                                 65.7109
 16683 del_timer_sync                            32.5840
 15098 zap_pte_range                              7.8635
 15076 __d_lookup                                16.8259
 13275 find_get_page                             31.9111
 12898 __copy_user                                5.5214
 10472 finish_task_switch                        36.3611
 10037 ia64_pfn_valid                            52.2760
  8610 get_zone_counts                           22.4219
  7905 current_kernel_time                       41.1719
  7155 __down_trylock                            22.3594
  7063 _pagebuf_find                              4.9049
  6995 xfs_ilock                                 13.6621
  6965 tasklet_action                             8.3714
  6494 free_page_and_swap_cache                  28.9911
  5652 nr_free_pages                             22.0781
  5555 xfs_trans_push_ail                         3.6165

This is a 64p profile only.  If I set the prof_cpu_mask to include all 512 
CPUs, the system livelocks.  I reset the counter right after the warmup run, 
partly through the half load run, and collected it after a few runs were 
complete.

Thanks,
Jesse

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

* Re: kernbench on 512p
  2004-08-19 16:16 kernbench on 512p Jesse Barnes
@ 2004-08-19 16:22 ` William Lee Irwin III
  2004-08-19 16:29 ` David Mosberger
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 35+ messages in thread
From: William Lee Irwin III @ 2004-08-19 16:22 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: linux-kernel

On Thu, Aug 19, 2004 at 12:16:33PM -0400, Jesse Barnes wrote:
> Here's the kernel profile.  It would be nice if the patch to show which lock 
> is contended got included.  I think it was discussed awhile back, but I don't 
> have one against the newly merged profiling code.
> [root@ascender root]# readprofile -m System.map | sort -nr | head -30
> 208218076 total                                     30.1677
> 90036167 ia64_pal_call_static                     468938.3698
> 88140492 default_idle                             229532.5312
> 10312592 ia64_save_scratch_fpregs                 161134.2500
> 10306777 ia64_load_scratch_fpregs                 161043.3906
> 8723555 ia64_spinlock_contention                 90870.3646
> 121385 rcu_check_quiescent_state                316.1068
>  40464 file_move                                180.6429
>  32374 file_kill                                144.5268
>  25316 atomic_dec_and_lock                       98.8906
>  24814 clear_page                               155.0875
>  17709 file_ra_state_init                       110.6813
>  17603 clear_page_tables                         13.4169

file_move()? file_kill()? I smell files_lock.


-- wli

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

* Re: kernbench on 512p
  2004-08-19 16:16 kernbench on 512p Jesse Barnes
  2004-08-19 16:22 ` William Lee Irwin III
@ 2004-08-19 16:29 ` David Mosberger
  2004-08-19 16:37   ` Jesse Barnes
  2004-08-19 23:03 ` William Lee Irwin III
  2004-08-20  0:56 ` remove dentry_open::file_ra_init_state() duplicated memset was " Marcelo Tosatti
  3 siblings, 1 reply; 35+ messages in thread
From: David Mosberger @ 2004-08-19 16:29 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: linux-kernel

>>>>> On Thu, 19 Aug 2004 12:16:33 -0400, Jesse Barnes <jbarnes@engr.sgi.com> said:

  Jesse> It would be nice if the patch to show which lock is contended
  Jesse> got included.

Why not use q-syscollect?  It will show you the caller of
ia64_spinlock_contention, which is often just as good (or better ;-).

	--david

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

* Re: kernbench on 512p
  2004-08-19 16:29 ` David Mosberger
@ 2004-08-19 16:37   ` Jesse Barnes
  2004-08-19 16:40     ` David Mosberger
  2004-08-19 18:25     ` Martin J. Bligh
  0 siblings, 2 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-19 16:37 UTC (permalink / raw)
  To: davidm; +Cc: linux-kernel

On Thursday, August 19, 2004 12:29 pm, David Mosberger wrote:
> >>>>> On Thu, 19 Aug 2004 12:16:33 -0400, Jesse Barnes
> >>>>> <jbarnes@engr.sgi.com> said:
>
>   Jesse> It would be nice if the patch to show which lock is contended
>   Jesse> got included.
>
> Why not use q-syscollect?  It will show you the caller of
> ia64_spinlock_contention, which is often just as good (or better ;-).

Because it requires guile and guile SLIB, which I've never been able to setup 
properly on a RHEL3 based distro.  Care to rewrite the tools in C or 
something? ;)

Jesse

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

* Re: kernbench on 512p
  2004-08-19 16:37   ` Jesse Barnes
@ 2004-08-19 16:40     ` David Mosberger
  2004-08-19 17:55       ` Alan Cox
  2004-08-19 18:25     ` Martin J. Bligh
  1 sibling, 1 reply; 35+ messages in thread
From: David Mosberger @ 2004-08-19 16:40 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: davidm, linux-kernel

>>>>> On Thu, 19 Aug 2004 12:37:16 -0400, Jesse Barnes <jbarnes@engr.sgi.com> said:

  Jesse> On Thursday, August 19, 2004 12:29 pm, David Mosberger wrote:
  >> >>>>> On Thu, 19 Aug 2004 12:16:33 -0400, Jesse Barnes >>>>>
  >> <jbarnes@engr.sgi.com> said:
  >> 
  Jesse> It would be nice if the patch to show which lock is contended
  Jesse> got included.
  >>  Why not use q-syscollect?  It will show you the caller of
  >> ia64_spinlock_contention, which is often just as good (or better
  >> ;-).

  Jesse> Because it requires guile and guile SLIB, which I've never
  Jesse> been able to setup properly on a RHEL3 based distro.  Care to
  Jesse> rewrite the tools in C or something? ;)

Why not file a bug-report to Red Hat instead?  guile v1.6 and the
guile-SLIB are quite old and rather standard.

Of course, you could also run the analysis on a Debian system, which
comes standard with those packages.

	--david


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

* Re: kernbench on 512p
  2004-08-19 16:40     ` David Mosberger
@ 2004-08-19 17:55       ` Alan Cox
  2004-08-20  7:53         ` David Mosberger
  0 siblings, 1 reply; 35+ messages in thread
From: Alan Cox @ 2004-08-19 17:55 UTC (permalink / raw)
  To: davidm; +Cc: Jesse Barnes, Linux Kernel Mailing List

On Iau, 2004-08-19 at 17:40, David Mosberger wrote:
> Why not file a bug-report to Red Hat instead?  guile v1.6 and the
> guile-SLIB are quite old and rather standard.

On debian maybe.

The enterprise demand for guile-slib is suprisingly low ;)


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

* Re: kernbench on 512p
  2004-08-19 16:37   ` Jesse Barnes
  2004-08-19 16:40     ` David Mosberger
@ 2004-08-19 18:25     ` Martin J. Bligh
  2004-08-19 18:42       ` Jesse Barnes
  2004-08-19 21:11       ` Jesse Barnes
  1 sibling, 2 replies; 35+ messages in thread
From: Martin J. Bligh @ 2004-08-19 18:25 UTC (permalink / raw)
  To: Jesse Barnes, davidm; +Cc: linux-kernel

> On Thursday, August 19, 2004 12:29 pm, David Mosberger wrote:
>> >>>>> On Thu, 19 Aug 2004 12:16:33 -0400, Jesse Barnes
>> >>>>> <jbarnes@engr.sgi.com> said:
>> 
>>   Jesse> It would be nice if the patch to show which lock is contended
>>   Jesse> got included.
>> 
>> Why not use q-syscollect?  It will show you the caller of
>> ia64_spinlock_contention, which is often just as good (or better ;-).
> 
> Because it requires guile and guile SLIB, which I've never been able to setup 
> properly on a RHEL3 based distro.  Care to rewrite the tools in C or 
> something? ;)

Does lockmeter not work for you? It's sitting in my tree still, and 
Andrew's last time I looked.

M.


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

* Re: kernbench on 512p
  2004-08-19 18:25     ` Martin J. Bligh
@ 2004-08-19 18:42       ` Jesse Barnes
  2004-08-19 21:11       ` Jesse Barnes
  1 sibling, 0 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-19 18:42 UTC (permalink / raw)
  To: Martin J. Bligh; +Cc: davidm, linux-kernel

On Thursday, August 19, 2004 2:25 pm, Martin J. Bligh wrote:
> Does lockmeter not work for you? It's sitting in my tree still, and
> Andrew's last time I looked.

I haven't tried it recently.  I'm building a kernel with lockmetering enabled 
now.

Jesse

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

* Re: kernbench on 512p
  2004-08-19 18:25     ` Martin J. Bligh
  2004-08-19 18:42       ` Jesse Barnes
@ 2004-08-19 21:11       ` Jesse Barnes
  2004-08-19 21:24         ` Jesse Barnes
  2004-08-19 21:50         ` Ray Bryant
  1 sibling, 2 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-19 21:11 UTC (permalink / raw)
  To: Martin J. Bligh; +Cc: hawkes, linux-kernel, wli

[-- Attachment #1: Type: text/plain, Size: 760 bytes --]

On Thursday, August 19, 2004 2:25 pm, Martin J. Bligh wrote:
> Does lockmeter not work for you? It's sitting in my tree still, and
> Andrew's last time I looked.

Ok, it seems to work at least a little (btw, oprofile cause the machine to be 
unusable whenever a bunch of processes started up).

I got a bunch of scary messages like these though:

For cpu 140 entry 998 incremented kernel count=3
Bad kernel cum_hold_ticks=-8658575876528 (FFFFF82004A91E50) for cpu=140 
index=999
For cpu 140 entry 999 incremented kernel count=3

John, what does that mean?  The lock contention was heavy, but I wouldn't 
think that we'd overflow a 64 bit tick counter...

The output is attached (my mailer insists on wrapping it if I inline it).  I 
used 'lockstat -w'.

Jesse

[-- Attachment #2: lockstat-3.txt --]
[-- Type: text/plain, Size: 15239 bytes --]

___________________________________________________________________________________________
System: Linux ascender.americas.sgi.com 2.6.8.1-mm1 #4 SMP Thu Aug 19 13:05:16 PDT 2004 ia64
Total counts

All (512) CPUs
Selecting locks that meet ALL of the following:
        requests/sec:   >  0.00/sec
        contention  :   >  0.00%
        utilization :   >  0.00%


Start time: Thu Aug 19 15:52:55 2004
End   time: Thu Aug 19 15:53:57 2004
Delta Time: 62.51 sec.
Hash table slots in use:      343.
Global read lock slots in use: 999.
./lockstat: One or more warnings were printed with the report.

*************************** Warnings! ******************************
        Read Lock table overflowed.

        The data in this report may be in error due to this.
************************ End of Warnings! **************************


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SPINLOCKS         HOLD            WAIT
  UTIL  CON    MEAN(  MAX )   MEAN(  MAX )(% CPU)     TOTAL NOWAIT SPIN RJECT  NAME

        1.1%  6.9us( 158ms)   33ms(1015ms)(51.4%)  47254182 98.9%  1.1% 0.03%  *TOTAL*

 0.08% 0.11%  1.4us( 253us) 1448us(  17ms)(0.00%)     35255 99.9% 0.11%    0%  [0xe00000b0037fe5d0]
 0.00%    0%  8.7us(  19us)    0us                       14  100%    0%    0%    xfs_log_need_covered+0x100
 0.01% 0.10%  1.1us(  34us)  775us(2977us)(0.00%)      3848 99.9% 0.10%    0%    xfs_log_notify+0x40
 0.00%    0%  3.4us(  44us)    0us                      181  100%    0%    0%    xlog_state_do_callback+0x50
 0.00%    0%  0.1us( 1.2us)    0us                      181  100%    0%    0%    xlog_state_do_callback+0x410
 0.00%    0%  2.0us(  17us)    0us                      181  100%    0%    0%    xlog_state_do_callback+0x480
 0.00%    0%  0.2us( 0.6us)    0us                      182  100%    0%    0%    xlog_state_done_syncing+0x40
 0.03% 0.17%  2.8us(  80us)  935us(  12ms)(0.00%)      7853 99.8% 0.17%    0%    xlog_state_get_iclog_space+0x30
 0.01% 0.11%  2.4us(  41us)   15us(  40us)(0.00%)      3506 99.9% 0.11%    0%    xlog_state_put_ticket+0x20
 0.00% 0.06%  0.1us(  48us)  458us(2212us)(0.00%)      7875  100% 0.06%    0%    xlog_state_release_iclog+0x50
 0.00%    0%   10us(  29us)    0us                       32  100%    0%    0%    xlog_state_sync_all+0x30
 0.00%    0%  0.8us(  15us)    0us                       21  100%    0%    0%    xlog_state_sync_all+0x420
 0.00%    0% 10.0us(10.0us)    0us                        1  100%    0%    0%    xlog_state_sync+0x40
 0.00%    0%   20us(  20us)    0us                        1  100%    0%    0%    xlog_state_sync+0x3d0
 0.00%    0%  3.1us(  20us)    0us                       25  100%    0%    0%    xlog_state_want_sync+0x20
 0.01% 0.29%  1.2us(  63us) 3883us(  17ms)(0.00%)      3506 99.7% 0.29%    0%    xlog_ticket_get+0x50
 0.01% 0.04%  1.1us( 253us)  9.0us(  17us)(0.00%)      7694  100% 0.04%    0%    xlog_write+0x590
 0.00%    0%  6.3us(  41us)    0us                       25  100%    0%    0%    xlog_write+0x660
 0.00%    0%  0.5us(  19us)    0us                      129  100%    0%    0%    xlog_write+0x7a0

 0.12% 0.22%  3.1us( 101us) 2272us(  31ms)(0.00%)     25111 99.8% 0.22%    0%  [0xe00000b0037fe670]
 0.02% 0.13%  3.5us(  55us)   10ms(  27ms)(0.00%)      3888 99.9% 0.13%    0%    xfs_log_move_tail+0x70
 0.00% 0.27%  0.1us(  22us) 1373us(  28ms)(0.00%)      7875 99.7% 0.27%    0%    xlog_assign_tail_lsn+0x50
 0.06% 0.29%   10us( 101us) 3117us(  31ms)(0.00%)      3506 99.7% 0.29%    0%    xlog_grant_log_space+0x30
 0.02% 0.23%  3.2us(  88us) 1293us(  11ms)(0.00%)      4745 99.8% 0.23%    0%    xlog_grant_push_ail+0x50
 0.00% 0.08%  2.2us(  29us)   22us(  22us)(0.00%)      1239  100% 0.08%    0%    xlog_regrant_reserve_log_space+0x60
 0.01%    0%   26us(  63us)    0us                      171  100%    0%    0%    xlog_regrant_write_log_space+0x90
 0.00%    0%  0.0us( 0.1us)    0us                      181  100%    0%    0%    xlog_state_do_callback+0x3c0
 0.01% 0.23%  1.0us(  40us)  185us(1307us)(0.00%)      3506 99.8% 0.23%    0%    xlog_ungrant_log_space+0x50

 0.02% 0.14%  0.5us( 203us) 1261us(  15ms)(0.00%)     29681 99.9% 0.14%    0%  [0xe000193003e3e024]
 0.00%    0%  0.2us(  12us)    0us                      364  100%    0%    0%    xfs_buf_iodone+0x30
 0.00%    0%  0.1us( 4.9us)    0us                      170  100%    0%    0%    xfs_efi_item_unpin+0x30
 0.00%    0%  0.1us( 3.4us)    0us                      170  100%    0%    0%    xfs_efi_release+0x40
 0.00% 0.50%  0.1us( 6.6us)  6.1us(  12us)(0.00%)      2004 99.5% 0.50%    0%    xfs_iflush_done+0xc0
 0.00% 0.50%  0.8us(  29us)   18us(  89us)(0.00%)      2004 99.5% 0.50%    0%    xfs_iflush_int+0x3f0
 0.00% 0.01%  0.2us(  17us)   35us(  36us)(0.00%)     15515  100% 0.01%    0%    xfs_trans_chunk_committed+0x220
 0.00% 50.0%  124us( 203us)   14ms(  15ms)(0.00%)         6 50.0% 50.0%    0%    xfs_trans_push_ail+0x40
 0.01% 0.57%  2.1us(  56us)   19us(  94us)(0.00%)      1567 99.4% 0.57%    0%    xfs_trans_push_ail+0x2b0
 0.00%    0%  1.7us(  10us)    0us                        6  100%    0%    0%    xfs_trans_push_ail+0x420
 0.01% 0.11%  0.7us(  35us) 1319us(  12ms)(0.00%)      7875 99.9% 0.11%    0%    xfs_trans_tail_ail+0x30

 0.04% 0.08%  1.4us(  65us)   77us( 871us)(0.00%)     19294  100% 0.08%    0%  [0xe000193003e3e110]
 0.04% 0.07%  1.6us(  65us)   23us(  51us)(0.00%)     16434  100% 0.07%    0%    xfs_mod_incore_sb+0x20
 0.00% 0.17%  0.6us(  65us)  196us( 871us)(0.00%)      2859 99.8% 0.17%    0%    xfs_mod_incore_sb_batch+0x30
 0.00%    0%   22us(  22us)    0us                        1  100%    0%    0%    xfs_statvfs+0x40

 0.09% 0.36%  4.5us( 824us)   27us( 342us)(0.00%)     12079 99.6% 0.36%    0%  [0xe000353003c8e040]
 0.08% 0.62%   22us( 824us)   22us( 201us)(0.00%)      2419 99.4% 0.62%    0%    qla1280_intr_handler+0x30
 0.00% 0.17%  0.8us(  25us)   15us(  40us)(0.00%)      2415 99.8% 0.17%    0%    scsi_device_unbusy+0x40
    0% 0.04%                 3.9us( 3.9us)(0.00%)      2415  100% 0.04%    0%    scsi_dispatch_cmd+0x330
    0% 0.50%                  55us( 342us)(0.00%)      2415 99.5% 0.50%    0%    scsi_request_fn+0x260
    0% 0.50%                  13us(  29us)(0.00%)      2415 99.5% 0.50%    0%    scsi_run_queue+0xa0

 0.14%  1.2%  3.1us(2630us)   81us(5265us)(0.00%)     28773 98.8%  1.2%    0%  [0xe00039b003b6b834]
 0.00%  1.1%  0.2us( 204us)   76us(1582us)(0.00%)     11558 98.9%  1.1%    0%    __make_request+0x150
 0.02%  1.3%  4.0us( 182us)   19us(  59us)(0.00%)      2415 98.7%  1.3%    0%    blk_run_queue+0x40
 0.11%  1.0%   52us(2630us)  747us(5265us)(0.00%)      1342 99.0%  1.0%    0%    generic_unplug_device+0x40
    0% 0.50%                 172us(1021us)(0.00%)      2415 99.5% 0.50%    0%    get_request+0x80
    0% 0.91%                  25us( 124us)(0.00%)      2415 99.1% 0.91%    0%    scsi_device_unbusy+0xd0
    0%  1.6%                  22us( 113us)(0.00%)      2415 98.4%  1.6%    0%    scsi_end_request+0x160
 0.01%  4.2%  3.5us( 132us)   40us( 310us)(0.00%)      2415 95.8%  4.2%    0%    scsi_request_fn+0x4a0
    0% 0.08%                  57us(  97us)(0.00%)      3798  100% 0.08%    0%    scsi_request_fn+0x540

 71.7% 81.0%   82us(  16ms)   36ms(1015ms)(49.3%)    545870 19.0% 81.0%    0%  dcache_lock
 0.10% 96.7%   74us(1190us)   39ms( 403ms)(0.10%)       869  3.3% 96.7%    0%    d_alloc+0x270
 0.05% 97.3%  132us(1058us)   39ms( 325ms)(0.03%)       259  2.7% 97.3%    0%    d_delete+0x40
 0.15% 81.7%   60us(1273us)   36ms( 446ms)(0.14%)      1533 18.3% 81.7%    0%    d_instantiate+0x90
 0.06% 95.3%  184us(1082us)   33ms( 217ms)(0.02%)       212  4.7% 95.3%    0%    d_move+0x60
 0.13% 65.4%   95us(1045us)   35ms( 356ms)(0.06%)       869 34.6% 65.4%    0%    d_rehash+0xe0
 71.1% 80.9%   82us(  16ms)   36ms(1015ms)(48.8%)    540564 19.1% 80.9%    0%    dput+0x40
 0.16% 89.5%   66us( 902us)   40ms( 336ms)(0.17%)      1536 10.5% 89.5%    0%    link_path_walk+0xef0
 0.00%  100%   91us( 326us)   43ms( 134ms)(0.00%)        28    0%  100%    0%    sys_getcwd+0x210

 0.94%  3.0%  3.7us(4918us) 1113us(  43ms)(0.02%)    157922 97.0%  3.0%    0%  files_lock
 0.00% 0.83%  0.6us(  21us)   71us( 148us)(0.00%)       360 99.2% 0.83%    0%    check_tty_count+0x40
 0.06%  1.7%  0.5us(4918us) 1127us(  43ms)(0.00%)     78366 98.3%  1.7%    0%    file_kill+0x60
 0.87%  4.4%  6.9us( 289us) 1109us(  43ms)(0.01%)     79196 95.6%  4.4%    0%    file_move+0x40

 0.78% 0.33%   11us(6090us)  584us(  20ms)(0.00%)     43999 99.7% 0.33%    0%  inode_lock
 0.02%  1.3%  2.5us(1019us)  638us(  16ms)(0.00%)      4654 98.7%  1.3%    0%    __mark_inode_dirty+0xf0
 0.55% 0.20%   34us(6090us)   35us(  82us)(0.00%)     10047 99.8% 0.20%    0%    __sync_single_inode+0xf0
 0.00% 0.77%  1.1us(  24us)   42us(  60us)(0.00%)       390 99.2% 0.77%    0%    generic_delete_inode+0x260
 0.03%  1.3%   20us(  83us)   57us( 143us)(0.00%)       796 98.7%  1.3%    0%    get_new_inode_fast+0x50
 0.02%  1.0%   15us(  87us) 3385us(  20ms)(0.00%)       796 99.0%  1.0%    0%    iget_locked+0xd0
 0.01% 0.51%  2.5us(  51us)   44us( 132us)(0.00%)      2743 99.5% 0.51%    0%    igrab+0x20
 0.06% 0.19%  2.8us( 162us)  561us(8501us)(0.00%)     13905 99.8% 0.19%    0%    iput+0xb0
 0.02% 0.45%   28us( 116us) 1018us(2019us)(0.00%)       449 99.6% 0.45%    0%    new_inode+0x60
 0.06%    0%  3.6us( 200us)    0us                    10047  100%    0%    0%    sync_sb_inodes+0x570
 0.01% 0.58%   37us( 166us)   27us(  27us)(0.00%)       172 99.4% 0.58%    0%    writeback_inodes+0x30

 0.25% 0.06%   89us(1143us)  300us( 300us)(0.00%)      1771  100% 0.06%    0%  kernel_flag
 0.10%    0%  340us(1143us)    0us                      192  100%    0%    0%    chrdev_open+0x1c0
 0.00%    0%  2.2us(  21us)    0us                      131  100%    0%    0%    de_put+0x50
 0.00%    0%  0.1us( 7.5us)    0us                      176  100%    0%    0%    linvfs_ioctl+0x150
 0.09%    0%  416us( 854us)    0us                      131  100%    0%    0%    proc_lookup+0x60
 0.00%    0%  6.8us(  21us)    0us                        7  100%    0%    0%    schedule+0xc20
 0.02% 0.11%   15us( 871us)  300us( 300us)(0.00%)       920 99.9% 0.11%    0%    sys_ioctl+0xa0
 0.00%    0%   24us( 462us)    0us                       21  100%    0%    0%    tty_read+0x160
 0.04%    0%  127us( 385us)    0us                      180  100%    0%    0%    tty_release+0x50
 0.00%    0%   39us( 428us)    0us                       13  100%    0%    0%    tty_write+0x3d0

 0.10%  1.1%  8.4us( 558us)   51ms( 239ms)(0.01%)      7632 98.9%  1.1%    0%  mmlist_lock
 0.01%  1.6%  2.4us( 146us)   80ms( 215ms)(0.01%)      1771 98.4%  1.6%    0%    copy_mm+0x2c0
 0.05%  1.4%   17us( 558us)   55ms( 239ms)(0.00%)      1989 98.6%  1.4%    0%    exec_mmap+0x40
 0.04% 0.75%  6.8us( 121us)   20ms( 156ms)(0.00%)      3872 99.3% 0.75%    0%    mmput+0x40

  4.4% 58.6%   48us(7191us)   19ms(  84ms)( 1.9%)     57005 41.4% 58.6%    0%  rcu_state
 0.01% 38.7%   58us( 679us)   10ms(  41ms)(0.00%)       119 61.3% 38.7%    0%    __rcu_process_callbacks+0x260
  4.4% 58.6%   48us(7191us)   19ms(  84ms)( 1.9%)     56886 41.4% 58.6%    0%    rcu_check_quiescent_state+0xf0

 0.00% 0.45%  2.1us(  39us) 3128us(9317us)(0.00%)       665 99.5% 0.45%    0%  vnumber_lock
 0.00% 0.45%  2.1us(  39us) 3128us(9317us)(0.00%)       665 99.5% 0.45%    0%    vn_initialize+0xb0

  1.0% 0.00%  9.9us(1399us) 3843us(3843us)(0.00%)     64014  100% 0.00%    0%  xtime_lock+0x4
 0.00%    0%   20us(  28us)    0us                        2  100%    0%    0%    do_adjtimex+0x1a0
  1.0% 0.00%  9.9us(1399us) 3843us(3843us)(0.00%)     64012  100% 0.00%    0%    timer_interrupt+0x2a0

 0.24% 0.17%  0.4us(  32ms)  686us(  32ms)(0.00%)    414014 99.8% 0.17%    0%  __d_lookup+0x1b0
 0.07% 0.01%  3.1us( 124us)   15us(  15us)(0.00%)     13477  100% 0.01%    0%  _pagebuf_find+0xf0
 0.03% 0.00%  0.5us(  60us)  9.9us(  17us)(0.00%)     45039  100% 0.00%    0%  anon_vma_unlink+0x40
 0.31% 0.14%  9.6us( 243us)   26us( 114us)(0.00%)     20408 99.9% 0.14%    0%  cache_alloc_refill+0xd0
 0.01% 0.18%  0.4us(  42us)   16ms(  55ms)(0.00%)     21913 99.8% 0.18%    0%  copy_mm+0x6f0
 0.02% 0.09%  1.2us( 340us)  6.6us(  30us)(0.00%)     11937  100% 0.09%    0%  deny_write_access+0x40
 0.11% 0.06%  0.9us(  14ms)  8.4us(  42us)(0.00%)     80024  100% 0.06%    0%  dnotify_parent+0x70
  2.5%  2.4%  2.5us( 789us)    0us                   608901 97.6%    0%  2.4%  double_lock_balance+0x20
 0.07% 66.0%  6.7us( 338us)  939us( 149ms)(0.01%)      6226 34.0% 66.0%    0%  double_lock_balance+0x90
 0.14% 52.9%  6.3us( 412us) 3804us( 158ms)(0.09%)     14339 47.1% 52.9%    0%  double_lock_balance+0xb0
 0.00% 0.41%  2.3us(  31us)  2.8us( 3.9us)(0.00%)       482 99.6% 0.41%    0%  double_rq_lock+0x60
 0.00% 0.73%  2.9us( 179us)  376us( 750us)(0.00%)       274 99.3% 0.73%    0%  double_rq_lock+0x90
 0.10% 0.00%  0.8us( 297us)  4.9us( 5.8us)(0.00%)     75211  100% 0.00%    0%  dput+0x80
 0.13%  1.4%  0.4us( 307us)  138us(  30ms)(0.00%)    194583 98.6%  1.4%    0%  load_balance+0x170
  422% 0.01%   66us( 158ms)   31us(5303us)(0.00%)   3989432  100% 0.01%    0%  load_balance+0x30
 0.05% 0.81%  4.7us(  22ms)   15us(  58us)(0.00%)      6686 99.2% 0.81%    0%  migration_thread+0x110
 0.11% 0.16%  1.0us( 557us) 6661us(  58ms)(0.00%)     72120 99.8% 0.16%    0%  remove_vm_struct+0x60
 0.56%  1.8%  2.3us(1112us)   12us(  67us)(0.00%)    151051 98.2%  1.8%    0%  schedule+0x290
  2.3% 0.01%  0.2us(7619us)   92us(9305us)(0.00%)   9418925  100% 0.01%    0%  scheduler_tick+0x370
 0.07% 0.21%  5.3us(4483us)   15us( 158us)(0.00%)      8470 99.8% 0.21%    0%  vma_adjust+0x140
 0.40% 0.11%  5.9us(  43ms) 1567us(  39ms)(0.00%)     42753 99.9% 0.11%    0%  vma_link+0x70

- - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RWLOCK READS   HOLD    MAX  RDR BUSY PERIOD      WAIT
  UTIL  CON    MEAN   RDRS   MEAN(  MAX )   MEAN(  MAX )( %CPU)     TOTAL NOWAIT SPIN  NAME

       0.07%                                49us( 558us)(0.00%)    457364  100% 0.07%  *TOTAL*

  131%  3.6%   9.8us     2 9874us(45704ms)   49us( 558us)(0.00%)      8357 96.4%  3.6%  tasklist_lock
       0.94%                               113us( 282us)(0.00%)      3180 99.1% 0.94%    do_sigaction+0x270
        5.4%                                42us( 558us)(0.00%)      5107 94.6%  5.4%    do_wait+0x120
          0%                                 0us                       66  100%    0%    send_group_sig_info+0x30
          0%                                 0us                        4  100%    0%    session_of_pgrp+0x40

- - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RWLOCK WRITES     HOLD           WAIT (ALL)           WAIT (WW)
  UTIL  CON    MEAN(  MAX )   MEAN(  MAX )( %CPU)   MEAN(  MAX )     TOTAL NOWAIT SPIN(  WW )  NAME

       0.41%  0.1us( 178us) 2097us(  47ms)(0.00%) 1313us(  47ms)     23738 99.6% 0.08%(0.33%)  *TOTAL*
_________________________________________________________________________________________________________________________
Number of read locks found=1

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

* Re: kernbench on 512p
  2004-08-19 21:11       ` Jesse Barnes
@ 2004-08-19 21:24         ` Jesse Barnes
  2004-08-19 21:56           ` Martin J. Bligh
  2004-08-19 23:38           ` Paul E. McKenney
  2004-08-19 21:50         ` Ray Bryant
  1 sibling, 2 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-19 21:24 UTC (permalink / raw)
  To: Martin J. Bligh; +Cc: hawkes, linux-kernel, wli

On Thursday, August 19, 2004 5:11 pm, Jesse Barnes wrote:
> The output is attached (my mailer insists on wrapping it if I inline it). 
> I used 'lockstat -w'.

The highlights:

 nw   spin   rjct  lock & function
19.0% 81.0%    0%  dcache_lock
 3.3% 96.7%    0%    d_alloc+0x270
 2.7% 97.3%    0%    d_delete+0x40
18.3% 81.7%    0%    d_instantiate+0x90
 4.7% 95.3%    0%    d_move+0x60
34.6% 65.4%    0%    d_rehash+0xe0
19.1% 80.9%    0%    dput+0x40
10.5% 89.5%    0%    link_path_walk+0xef0
   0%  100%    0%    sys_getcwd+0x210

41.4% 58.6%    0%  rcu_state
61.3% 38.7%    0%    __rcu_process_callbacks+0x260
41.4% 58.6%    0%    rcu_check_quiescent_state+0xf0

So it looks like the dcache lock is the biggest problem on this system with 
this load.  And although the rcu stuff has improved tremendously for this 
system, it's still highly contended.

Jesse

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

* Re: kernbench on 512p
  2004-08-19 21:11       ` Jesse Barnes
  2004-08-19 21:24         ` Jesse Barnes
@ 2004-08-19 21:50         ` Ray Bryant
  2004-08-19 22:00           ` Jesse Barnes
  1 sibling, 1 reply; 35+ messages in thread
From: Ray Bryant @ 2004-08-19 21:50 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: Martin J. Bligh, hawkes, linux-kernel, wli

Jesse,

Jesse Barnes wrote:
> On Thursday, August 19, 2004 2:25 pm, Martin J. Bligh wrote:
> 
>>Does lockmeter not work for you? It's sitting in my tree still, and
>>Andrew's last time I looked.
> 
> 
> Ok, it seems to work at least a little (btw, oprofile cause the machine to be 
> unusable whenever a bunch of processes started up).
> 
> I got a bunch of scary messages like these though:
> 
> For cpu 140 entry 998 incremented kernel count=3
> Bad kernel cum_hold_ticks=-8658575876528 (FFFFF82004A91E50) for cpu=140 
> index=999
> For cpu 140 entry 999 incremented kernel count=3
> 
> John, what does that mean?  The lock contention was heavy, but I wouldn't 
> think that we'd overflow a 64 bit tick counter...
> 

What it means is that a read lock was found at the end of the measurement
interval in "read locked" state.  This is due to a trick used to account for
read lock hold times (rather than keeping track of the acquire and release
times and then incrementing the hold time at release time as in:

	hold_time += (release_time - acquire_time);

what is done instead is:

         hold_time -= acquire_time;

when the lock is acquired, then

         hold_time += release_time;

when the lock is released.  If the lock is still being held at the end of
the interval, then the 2nd hasn't been done, so the hold time appears
negative.

Anyway, the read lock handling is sufficiently busticated that we should
probably just remove it.  I have a patch someplace (years old) to fix this,
but it never seemed to be important to anyone, so it is still unapplied.

The stats for the spinlocks should be fine.

> The output is attached (my mailer insists on wrapping it if I inline it).  I 
> used 'lockstat -w'.
> 
> Jesse
> 
> 


-- 
Best Regards,
Ray
-----------------------------------------------
                   Ray Bryant
512-453-9679 (work)         512-507-7807 (cell)
raybry@sgi.com             raybry@austin.rr.com
The box said: "Requires Windows 98 or better",
            so I installed Linux.
-----------------------------------------------


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

* Re: kernbench on 512p
  2004-08-19 21:24         ` Jesse Barnes
@ 2004-08-19 21:56           ` Martin J. Bligh
  2004-08-20 19:36             ` Maneesh Soni
  2004-08-19 23:38           ` Paul E. McKenney
  1 sibling, 1 reply; 35+ messages in thread
From: Martin J. Bligh @ 2004-08-19 21:56 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: hawkes, linux-kernel, wli

--On Thursday, August 19, 2004 17:24:04 -0400 Jesse Barnes <jbarnes@engr.sgi.com> wrote:

> On Thursday, August 19, 2004 5:11 pm, Jesse Barnes wrote:
>> The output is attached (my mailer insists on wrapping it if I inline it). 
>> I used 'lockstat -w'.
> 
> The highlights:
> 
>  nw   spin   rjct  lock & function
> 19.0% 81.0%    0%  dcache_lock
>  3.3% 96.7%    0%    d_alloc+0x270
>  2.7% 97.3%    0%    d_delete+0x40
> 18.3% 81.7%    0%    d_instantiate+0x90
>  4.7% 95.3%    0%    d_move+0x60
> 34.6% 65.4%    0%    d_rehash+0xe0
> 19.1% 80.9%    0%    dput+0x40
> 10.5% 89.5%    0%    link_path_walk+0xef0
>    0%  100%    0%    sys_getcwd+0x210
> 
> 41.4% 58.6%    0%  rcu_state
> 61.3% 38.7%    0%    __rcu_process_callbacks+0x260
> 41.4% 58.6%    0%    rcu_check_quiescent_state+0xf0
> 
> So it looks like the dcache lock is the biggest problem on this system with 
> this load.  And although the rcu stuff has improved tremendously for this 
> system, it's still highly contended.

Hmmm. dcache_lock is known-fucked, though I'm suprised at d_rehash
(file deletion)?

RCU stuff is a bit sad.

M.


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

* Re: kernbench on 512p
  2004-08-19 21:50         ` Ray Bryant
@ 2004-08-19 22:00           ` Jesse Barnes
  0 siblings, 0 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-19 22:00 UTC (permalink / raw)
  To: Ray Bryant; +Cc: Martin J. Bligh, hawkes, linux-kernel, wli

On Thursday, August 19, 2004 5:50 pm, Ray Bryant wrote:
> Anyway, the read lock handling is sufficiently busticated that we should
> probably just remove it.  I have a patch someplace (years old) to fix this,
> but it never seemed to be important to anyone, so it is still unapplied.

It would be nice if you resurrected it and sent it along to Andrew.  He's had 
the lockmeter patch in his tree for awhile now, so having a good version 
there is probably a good idea.

Thanks,
Jesse

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

* Re: kernbench on 512p
  2004-08-19 16:16 kernbench on 512p Jesse Barnes
  2004-08-19 16:22 ` William Lee Irwin III
  2004-08-19 16:29 ` David Mosberger
@ 2004-08-19 23:03 ` William Lee Irwin III
  2004-08-20 17:35   ` William Lee Irwin III
  2004-08-20  0:56 ` remove dentry_open::file_ra_init_state() duplicated memset was " Marcelo Tosatti
  3 siblings, 1 reply; 35+ messages in thread
From: William Lee Irwin III @ 2004-08-19 23:03 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: linux-kernel

On Thu, Aug 19, 2004 at 12:16:33PM -0400, Jesse Barnes wrote:
> This is a 64p profile only.  If I set the prof_cpu_mask to include all 512 
> CPUs, the system livelocks.  I reset the counter right after the warmup run, 
> partly through the half load run, and collected it after a few runs were 
> complete.

Not tremendously intelligent, as concurrent readers of /proc/profile
can render each other's results gibberish, however, this should
mitigate some of the cacheline bouncing of prof_buffer.

Some kind of proper IO should be possible given sufficient effort, but
I gave up immediately when my first attempt didn't work, and this
should be enough for getting /proc/profile to stop bouncing madly for
users that can tolerate the concurrent IO constraint. I suppose that
in principle one could hackishly guard collation and copying of
prof_buffer with a semaphore in the per-cpu case. I'll work on fixing
this eventually.

Use perpcu_profile on the kernel command line to activate the feature.


Index: mm2-2.6.8.1/kernel/profile.c
===================================================================
--- mm2-2.6.8.1.orig/kernel/profile.c	2004-08-19 13:22:11.000000000 -0700
+++ mm2-2.6.8.1/kernel/profile.c	2004-08-19 15:11:40.000000000 -0700
@@ -10,12 +10,14 @@
 #include <linux/mm.h>
 #include <linux/cpumask.h>
 #include <linux/profile.h>
+#include <linux/percpu.h>
 #include <asm/sections.h>
 
 static atomic_t *prof_buffer;
 static unsigned long prof_len, prof_shift;
-static int prof_on;
+static int prof_on, percpu_profile;
 static cpumask_t prof_cpu_mask = CPU_MASK_ALL;
+static DEFINE_PER_CPU(atomic_t *, cpu_prof_buffer);
 
 static int __init profile_setup(char * str)
 {
@@ -37,15 +39,35 @@
 }
 __setup("profile=", profile_setup);
 
+static int __init profile_setup_percpu(char *str)
+{
+	percpu_profile = 1;
+	return 1;
+}
+__setup("percpu_profile", profile_setup_percpu);
+
 
 void __init profile_init(void)
 {
+	size_t len;
+	int cpu;
+
 	if (!prof_on) 
 		return;
  
 	/* only text is profiled */
 	prof_len = (_etext - _stext) >> prof_shift;
-	prof_buffer = alloc_bootmem(prof_len*sizeof(atomic_t));
+	len = prof_len * sizeof(atomic_t);
+	prof_buffer = alloc_bootmem(len);
+	for_each_cpu(cpu) {
+		if (!percpu_profile)
+			per_cpu(cpu_prof_buffer, cpu) = prof_buffer;
+		else {
+			pg_data_t *pgdat = NODE_DATA(cpu_to_node(cpu));
+			per_cpu(cpu_prof_buffer, cpu)
+				= alloc_bootmem_node(pgdat, len);
+		}
+	}
 }
 
 /* Profile event notifications */
@@ -165,11 +187,15 @@
 void profile_hit(int type, void *__pc)
 {
 	unsigned long pc;
+	atomic_t *buf;
 
-	if (prof_on != type || !prof_buffer)
+	if (prof_on != type)
 		return;
 	pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift;
-	atomic_inc(&prof_buffer[min(pc, prof_len - 1)]);
+	buf = per_cpu(cpu_prof_buffer, get_cpu());
+	if (buf)
+		atomic_inc(&buf[min(pc, prof_len - 1)]);
+	put_cpu();
 }
 
 void profile_tick(int type, struct pt_regs *regs)
@@ -223,6 +249,21 @@
 	entry->write_proc = prof_cpu_mask_write_proc;
 }
 
+static void collate_per_cpu_profiles(void)
+{
+	unsigned long i;
+
+	for (i = 0; i < prof_len; ++i)  {
+		int cpu;
+
+		atomic_set(&prof_buffer[i], 0);
+		for_each_online_cpu(cpu) {
+			atomic_t *buf = per_cpu(cpu_prof_buffer, cpu);
+			atomic_add(atomic_read(&buf[i]), &prof_buffer[i]);
+		}
+	}
+}
+
 /*
  * This function accesses profiling information. The returned data is
  * binary: the sampling step and the actual contents of the profile
@@ -247,6 +288,8 @@
 		put_user(*((char *)(&sample_step)+p),buf);
 		buf++; p++; count--; read++;
 	}
+	if (percpu_profile)
+		collate_per_cpu_profiles();
 	pnt = (char *)prof_buffer + p - sizeof(atomic_t);
 	if (copy_to_user(buf,(void *)pnt,count))
 		return -EFAULT;
@@ -278,7 +321,15 @@
 	}
 #endif
 
-	memset(prof_buffer, 0, prof_len * sizeof(atomic_t));
+	if (percpu_profile) {
+		int cpu;
+
+		for_each_online_cpu(cpu) {
+			atomic_t *buf = per_cpu(cpu_prof_buffer, cpu);
+			memset(buf, 0, prof_len * sizeof(atomic_t));
+		}
+	} else
+		memset(prof_buffer, 0, prof_len * sizeof(atomic_t));
 	return count;
 }
 

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

* Re: kernbench on 512p
  2004-08-19 21:24         ` Jesse Barnes
  2004-08-19 21:56           ` Martin J. Bligh
@ 2004-08-19 23:38           ` Paul E. McKenney
  2004-08-20  0:16             ` Jesse Barnes
  1 sibling, 1 reply; 35+ messages in thread
From: Paul E. McKenney @ 2004-08-19 23:38 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: Martin J. Bligh, hawkes, linux-kernel, wli

On Thu, Aug 19, 2004 at 05:24:04PM -0400, Jesse Barnes wrote:
> On Thursday, August 19, 2004 5:11 pm, Jesse Barnes wrote:
> > The output is attached (my mailer insists on wrapping it if I inline it). 
> > I used 'lockstat -w'.
> 
> The highlights:
> 
>  nw   spin   rjct  lock & function
> 19.0% 81.0%    0%  dcache_lock
>  3.3% 96.7%    0%    d_alloc+0x270
>  2.7% 97.3%    0%    d_delete+0x40
> 18.3% 81.7%    0%    d_instantiate+0x90
>  4.7% 95.3%    0%    d_move+0x60
> 34.6% 65.4%    0%    d_rehash+0xe0
> 19.1% 80.9%    0%    dput+0x40
> 10.5% 89.5%    0%    link_path_walk+0xef0
>    0%  100%    0%    sys_getcwd+0x210
> 
> 41.4% 58.6%    0%  rcu_state
> 61.3% 38.7%    0%    __rcu_process_callbacks+0x260
> 41.4% 58.6%    0%    rcu_check_quiescent_state+0xf0
> 
> So it looks like the dcache lock is the biggest problem on this system with 
> this load.  And although the rcu stuff has improved tremendously for this 
> system, it's still highly contended.

Was this run using all of Manfred's RCU patches?  If not, it would be
interesting to see what you get with full RCU_HUGE patchset.

							Thanx, Paul

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

* Re: kernbench on 512p
  2004-08-19 23:38           ` Paul E. McKenney
@ 2004-08-20  0:16             ` Jesse Barnes
  2004-08-20 15:57               ` Paul E. McKenney
  0 siblings, 1 reply; 35+ messages in thread
From: Jesse Barnes @ 2004-08-20  0:16 UTC (permalink / raw)
  To: paulmck; +Cc: Martin J. Bligh, hawkes, linux-kernel, wli

On Thursday, August 19, 2004 7:38 pm, Paul E. McKenney wrote:
> > 41.4% 58.6%    0%  rcu_state
> > 61.3% 38.7%    0%    __rcu_process_callbacks+0x260
> > 41.4% 58.6%    0%    rcu_check_quiescent_state+0xf0
> >
> > So it looks like the dcache lock is the biggest problem on this system
> > with this load.  And although the rcu stuff has improved tremendously for
> > this system, it's still highly contended.
>
> Was this run using all of Manfred's RCU patches?  If not, it would be
> interesting to see what you get with full RCU_HUGE patchset.

So that stuff isn't in 2.6.8.1-mm1?  What I tested was pretty close to a stock 
version of that tree.  Where can I grab a version of that patchset that 
applies to a recent kernel?

Thanks,
Jesse

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

* remove dentry_open::file_ra_init_state() duplicated memset was Re: kernbench on 512p
  2004-08-19 16:16 kernbench on 512p Jesse Barnes
                   ` (2 preceding siblings ...)
  2004-08-19 23:03 ` William Lee Irwin III
@ 2004-08-20  0:56 ` Marcelo Tosatti
  2004-08-20  6:21   ` Andrew Morton
  3 siblings, 1 reply; 35+ messages in thread
From: Marcelo Tosatti @ 2004-08-20  0:56 UTC (permalink / raw)
  To: Jesse Barnes, akpm; +Cc: linux-kernel

On Thu, Aug 19, 2004 at 12:16:33PM -0400, Jesse Barnes wrote:

> Here's the kernel profile.  It would be nice if the patch to show which lock 
> is contended got included.  I think it was discussed awhile back, but I don't 
> have one against the newly merged profiling code.
> 
> [root@ascender root]# readprofile -m System.map | sort -nr | head -30
> 208218076 total                                     30.1677
> 90036167 ia64_pal_call_static                     468938.3698
> 88140492 default_idle                             229532.5312
> 10312592 ia64_save_scratch_fpregs                 161134.2500
> 10306777 ia64_load_scratch_fpregs                 161043.3906
> 8723555 ia64_spinlock_contention                 90870.3646
> 121385 rcu_check_quiescent_state                316.1068
>  40464 file_move                                180.6429
>  32374 file_kill                                144.5268
>  25316 atomic_dec_and_lock                       98.8906
>  24814 clear_page                               155.0875
>  17709 file_ra_state_init                       110.6813

This is pretty high. Andi says its probably not due to this function 
itself, but for some other reason, like cache trashing caused, accidentally, 
by it.

But anyway, investigation of file_ra_state_init() shows that its called 
from dentry_open()... it does a memset(ra, 0, sizeof(*ra)), which is not needed, 
because get_empty_filp() already memset's the whole "struct file" to 0.

So this patch creates a __file_ra_state_init() function, which initializes
the file_ra_state fields, without the memset. 

file_ra_state_init() does the memset + its __ counterpart. 

Pretty straightforward and simple.

Against 2.6.8.1-mm2, Andrew, please apply.

Jesse, if you could give it a shot and rerun the profile.

diff -Nur --exclude='*.orig' linux-2.6.8.orig/fs/open.c linux-2.6.8/fs/open.c
--- linux-2.6.8.orig/fs/open.c	2004-08-14 02:36:13.000000000 -0300
+++ linux-2.6.8/fs/open.c	2004-08-19 22:38:48.000000000 -0300
@@ -803,7 +803,7 @@
 	}
 	f->f_flags &= ~(O_CREAT | O_EXCL | O_NOCTTY | O_TRUNC);
 
-	file_ra_state_init(&f->f_ra, f->f_mapping->host->i_mapping);
+	__file_ra_state_init(&f->f_ra, f->f_mapping->host->i_mapping);
 
 	/* NB: we're sure to have correct a_ops only after f_op->open */
 	if (f->f_flags & O_DIRECT) {
diff -Nur --exclude='*.orig' linux-2.6.8.orig/include/linux/fs.h linux-2.6.8/include/linux/fs.h
--- linux-2.6.8.orig/include/linux/fs.h	2004-08-19 22:35:49.000000000 -0300
+++ linux-2.6.8/include/linux/fs.h	2004-08-19 22:39:55.000000000 -0300
@@ -1520,7 +1520,10 @@
 				    struct file_ra_state *, struct file *,
 				    loff_t *, read_descriptor_t *, read_actor_t);
 extern void
+__file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
+extern void
 file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping);
+
 extern ssize_t generic_file_direct_IO(int rw, struct kiocb *iocb,
 	const struct iovec *iov, loff_t offset, unsigned long nr_segs);
 extern ssize_t generic_file_readv(struct file *filp, const struct iovec *iov, 
diff -Nur --exclude='*.orig' linux-2.6.8.orig/mm/readahead.c linux-2.6.8/mm/readahead.c
--- linux-2.6.8.orig/mm/readahead.c	2004-08-19 22:35:50.000000000 -0300
+++ linux-2.6.8/mm/readahead.c	2004-08-19 22:37:49.000000000 -0300
@@ -30,13 +30,22 @@
 /*
  * Initialise a struct file's readahead state
  */
+
 void
-file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
+__file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
 {
-	memset(ra, 0, sizeof(*ra));
 	ra->ra_pages = mapping->backing_dev_info->ra_pages;
 	ra->average = ra->ra_pages / 2;
 }
+
+void
+file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
+{
+	memset(ra, 0, sizeof(*ra));
+	__file_ra_state_init(ra, mapping);
+}
+
+EXPORT_SYMBOL(__file_ra_state_init);
 EXPORT_SYMBOL(file_ra_state_init);
 
 /*





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

* Re: remove dentry_open::file_ra_init_state() duplicated memset was Re: kernbench on 512p
  2004-08-20  0:56 ` remove dentry_open::file_ra_init_state() duplicated memset was " Marcelo Tosatti
@ 2004-08-20  6:21   ` Andrew Morton
  2004-08-20  7:28     ` Marcelo Tosatti
  0 siblings, 1 reply; 35+ messages in thread
From: Andrew Morton @ 2004-08-20  6:21 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: jbarnes, linux-kernel

Marcelo Tosatti <marcelo.tosatti@cyclades.com> wrote:
>
> So this patch creates a __file_ra_state_init() function, which initializes
>  the file_ra_state fields, without the memset. 
> 
>  file_ra_state_init() does the memset + its __ counterpart. 

Seems unnecessarily fiddly.  How about this?

--- 25/mm/readahead.c~file_ra_state_init-speedup	2004-08-19 23:20:11.695876032 -0700
+++ 25-akpm/mm/readahead.c	2004-08-19 23:20:42.077257360 -0700
@@ -28,12 +28,12 @@ struct backing_dev_info default_backing_
 EXPORT_SYMBOL_GPL(default_backing_dev_info);
 
 /*
- * Initialise a struct file's readahead state
+ * Initialise a struct file's readahead state.  Assumes that the caller has
+ * memset *ra to zero.
  */
 void
 file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
 {
-	memset(ra, 0, sizeof(*ra));
 	ra->ra_pages = mapping->backing_dev_info->ra_pages;
 	ra->average = ra->ra_pages / 2;
 }
diff -puN fs/nfsd/vfs.c~file_ra_state_init-speedup fs/nfsd/vfs.c
--- 25/fs/nfsd/vfs.c~file_ra_state_init-speedup	2004-08-19 23:20:11.713873296 -0700
+++ 25-akpm/fs/nfsd/vfs.c	2004-08-19 23:21:05.721662864 -0700
@@ -771,6 +771,7 @@ nfsd_get_raparms(dev_t dev, ino_t ino, s
 	ra = *frap;
 	ra->p_dev = dev;
 	ra->p_ino = ino;
+	memset(&ra->p_ra, 0, sizeof(ra->p_ra));
 	file_ra_state_init(&ra->p_ra, mapping);
 found:
 	if (rap != &raparm_cache) {
_


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

* Re: remove dentry_open::file_ra_init_state() duplicated memset was Re: kernbench on 512p
  2004-08-20  6:21   ` Andrew Morton
@ 2004-08-20  7:28     ` Marcelo Tosatti
  2004-08-20  8:34       ` Andrew Morton
  0 siblings, 1 reply; 35+ messages in thread
From: Marcelo Tosatti @ 2004-08-20  7:28 UTC (permalink / raw)
  To: Andrew Morton; +Cc: jbarnes, linux-kernel

On Thu, Aug 19, 2004 at 11:21:45PM -0700, Andrew Morton wrote:
> Marcelo Tosatti <marcelo.tosatti@cyclades.com> wrote:
> >
> > So this patch creates a __file_ra_state_init() function, which initializes
> >  the file_ra_state fields, without the memset. 
> > 
> >  file_ra_state_init() does the memset + its __ counterpart. 
> 
> Seems unnecessarily fiddly.  How about this?

Thats cleaner yep. :)

> --- 25/mm/readahead.c~file_ra_state_init-speedup	2004-08-19 23:20:11.695876032 -0700
> +++ 25-akpm/mm/readahead.c	2004-08-19 23:20:42.077257360 -0700
> @@ -28,12 +28,12 @@ struct backing_dev_info default_backing_
>  EXPORT_SYMBOL_GPL(default_backing_dev_info);
>  
>  /*
> - * Initialise a struct file's readahead state
> + * Initialise a struct file's readahead state.  Assumes that the caller has
> + * memset *ra to zero.
>   */
>  void
>  file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
>  {
> -	memset(ra, 0, sizeof(*ra));
>  	ra->ra_pages = mapping->backing_dev_info->ra_pages;
>  	ra->average = ra->ra_pages / 2;
>  }
> diff -puN fs/nfsd/vfs.c~file_ra_state_init-speedup fs/nfsd/vfs.c
> --- 25/fs/nfsd/vfs.c~file_ra_state_init-speedup	2004-08-19 23:20:11.713873296 -0700
> +++ 25-akpm/fs/nfsd/vfs.c	2004-08-19 23:21:05.721662864 -0700
> @@ -771,6 +771,7 @@ nfsd_get_raparms(dev_t dev, ino_t ino, s
>  	ra = *frap;
>  	ra->p_dev = dev;
>  	ra->p_ino = ino;
> +	memset(&ra->p_ra, 0, sizeof(ra->p_ra));
>  	file_ra_state_init(&ra->p_ra, mapping);
>  found:
>  	if (rap != &raparm_cache) {
> _

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

* Re: kernbench on 512p
  2004-08-19 17:55       ` Alan Cox
@ 2004-08-20  7:53         ` David Mosberger
  0 siblings, 0 replies; 35+ messages in thread
From: David Mosberger @ 2004-08-20  7:53 UTC (permalink / raw)
  To: Alan Cox; +Cc: davidm, Jesse Barnes, Linux Kernel Mailing List

>>>>> On Thu, 19 Aug 2004 18:55:22 +0100, Alan Cox <alan@lxorguk.ukuu.org.uk> said:

  Alan> On Iau, 2004-08-19 at 17:40, David Mosberger wrote:
  >> Why not file a bug-report to Red Hat instead?  guile v1.6 and the
  >> guile-SLIB are quite old and rather standard.

  Alan> On debian maybe.

  Alan> The enterprise demand for guile-slib is suprisingly low ;)

Ever heard of the chicken-and-egg problem?

Is there any good reason _not_ to provide guile-slib?  I'm not aware of any.

	--david

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

* Re: remove dentry_open::file_ra_init_state() duplicated memset was Re: kernbench on 512p
  2004-08-20  7:28     ` Marcelo Tosatti
@ 2004-08-20  8:34       ` Andrew Morton
  0 siblings, 0 replies; 35+ messages in thread
From: Andrew Morton @ 2004-08-20  8:34 UTC (permalink / raw)
  To: Marcelo Tosatti; +Cc: jbarnes, linux-kernel

Marcelo Tosatti <marcelo.tosatti@cyclades.com> wrote:
>
>  On Thu, Aug 19, 2004 at 11:21:45PM -0700, Andrew Morton wrote:
>  > Marcelo Tosatti <marcelo.tosatti@cyclades.com> wrote:
>  > >
>  > > So this patch creates a __file_ra_state_init() function, which initializes
>  > >  the file_ra_state fields, without the memset. 
>  > > 
>  > >  file_ra_state_init() does the memset + its __ counterpart. 
>  > 
>  > Seems unnecessarily fiddly.  How about this?
> 
>  Thats cleaner yep. :)

It got even cleaner - Neil has just nuked the NFS callsite.


--- 25/mm/readahead.c~file_ra_state_init-speedup	2004-08-20 00:03:19.979397128 -0700
+++ 25-akpm/mm/readahead.c	2004-08-20 00:04:25.159488248 -0700
@@ -28,16 +28,15 @@ struct backing_dev_info default_backing_
 EXPORT_SYMBOL_GPL(default_backing_dev_info);
 
 /*
- * Initialise a struct file's readahead state
+ * Initialise a struct file's readahead state.  Assumes that the caller has
+ * memset *ra to zero.
  */
 void
 file_ra_state_init(struct file_ra_state *ra, struct address_space *mapping)
 {
-	memset(ra, 0, sizeof(*ra));
 	ra->ra_pages = mapping->backing_dev_info->ra_pages;
 	ra->average = ra->ra_pages / 2;
 }
-EXPORT_SYMBOL(file_ra_state_init);
 
 /*
  * Return max readahead size for this inode in number-of-pages.
_


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

* Re: kernbench on 512p
  2004-08-20  0:16             ` Jesse Barnes
@ 2004-08-20 15:57               ` Paul E. McKenney
  2004-08-20 17:24                 ` Jesse Barnes
  0 siblings, 1 reply; 35+ messages in thread
From: Paul E. McKenney @ 2004-08-20 15:57 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: Martin J. Bligh, hawkes, linux-kernel, wli

On Thu, Aug 19, 2004 at 08:16:10PM -0400, Jesse Barnes wrote:
> On Thursday, August 19, 2004 7:38 pm, Paul E. McKenney wrote:
> > > 41.4% 58.6%    0%  rcu_state
> > > 61.3% 38.7%    0%    __rcu_process_callbacks+0x260
> > > 41.4% 58.6%    0%    rcu_check_quiescent_state+0xf0
> > >
> > > So it looks like the dcache lock is the biggest problem on this system
> > > with this load.  And although the rcu stuff has improved tremendously for
> > > this system, it's still highly contended.
> >
> > Was this run using all of Manfred's RCU patches?  If not, it would be
> > interesting to see what you get with full RCU_HUGE patchset.
> 
> So that stuff isn't in 2.6.8.1-mm1?  What I tested was pretty close to a stock 
> version of that tree.  Where can I grab a version of that patchset that 
> applies to a recent kernel?

If I am not too confused, you need #4 and #5 out of Manfred's set of
five RCU_HUGE patchset.  They are at:

	http://marc.theaimsgroup.com/?l=linux-kernel&m=108546358123902&w=2
	http://marc.theaimsgroup.com/?l=linux-kernel&m=108546384711797&w=2

A little work will be required to get them to apply.  For example, in
the first patch, instead of:

	spin_lock(&rcu_state.mutex);

one would say:

	spin_lock(&rsp->lock);

due to the addition of the _bh() primitives.  The "rcu_ctrlblk."
and "rcu_state." have been replaced by pointers in order to handle
multiple different types of grace periods:

o	Traditional grace periods based on context switch, executing
	in user mode, or running the idle loop.

o	New-age low-latency grace periods based on running with
	interrupts enabled.

							Thanx, Paul

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

* Re: kernbench on 512p
  2004-08-20 15:57               ` Paul E. McKenney
@ 2004-08-20 17:24                 ` Jesse Barnes
  2004-08-20 19:22                   ` Manfred Spraul
  2004-08-20 20:19                   ` Manfred Spraul
  0 siblings, 2 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-20 17:24 UTC (permalink / raw)
  To: paulmck; +Cc: Martin J. Bligh, hawkes, linux-kernel, wli, manfred

On Friday, August 20, 2004 11:57 am, Paul E. McKenney wrote:
> If I am not too confused, you need #4 and #5 out of Manfred's set of
> five RCU_HUGE patchset.  They are at:
>
> 	http://marc.theaimsgroup.com/?l=linux-kernel&m=108546358123902&w=2
> 	http://marc.theaimsgroup.com/?l=linux-kernel&m=108546384711797&w=2
>
> A little work will be required to get them to apply.  For example, in
> the first patch, instead of:
>
> 	spin_lock(&rcu_state.mutex);
>
> one would say:
>
> 	spin_lock(&rsp->lock);
>
> due to the addition of the _bh() primitives.  The "rcu_ctrlblk."
> and "rcu_state." have been replaced by pointers in order to handle
> multiple different types of grace periods:
>
> o	Traditional grace periods based on context switch, executing
> 	in user mode, or running the idle loop.
>
> o	New-age low-latency grace periods based on running with
> 	interrupts enabled.

Looks like a bit more context has changed.  Manfred, care to respin against 
-mm3 so I can test?

Thanks,
Jesse

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

* Re: kernbench on 512p
  2004-08-19 23:03 ` William Lee Irwin III
@ 2004-08-20 17:35   ` William Lee Irwin III
  0 siblings, 0 replies; 35+ messages in thread
From: William Lee Irwin III @ 2004-08-20 17:35 UTC (permalink / raw)
  To: Jesse Barnes, linux-kernel

On Thu, Aug 19, 2004 at 04:03:15PM -0700, William Lee Irwin III wrote:
> Not tremendously intelligent, as concurrent readers of /proc/profile
> can render each other's results gibberish, however, this should
> mitigate some of the cacheline bouncing of prof_buffer.
> Some kind of proper IO should be possible given sufficient effort, but
> I gave up immediately when my first attempt didn't work, and this
> should be enough for getting /proc/profile to stop bouncing madly for
> users that can tolerate the concurrent IO constraint. I suppose that
> in principle one could hackishly guard collation and copying of
> prof_buffer with a semaphore in the per-cpu case. I'll work on fixing
> this eventually.
> Use perpcu_profile on the kernel command line to activate the feature.

This fixes the degenerate collate_per_cpu_profiles() behavior jbarnes
saw with this patch alone.


Index: mm2-2.6.8.1/kernel/profile.c
===================================================================
--- mm2-2.6.8.1.orig/kernel/profile.c	2004-08-19 15:11:40.000000000 -0700
+++ mm2-2.6.8.1/kernel/profile.c	2004-08-20 09:32:08.986630798 -0700
@@ -251,16 +251,15 @@
 
 static void collate_per_cpu_profiles(void)
 {
-	unsigned long i;
+	int cpu;
 
-	for (i = 0; i < prof_len; ++i)  {
-		int cpu;
+	memset(prof_buffer, 0, prof_len * sizeof(atomic_t));
+	for_each_online_cpu(cpu) {
+		unsigned long i;
+		atomic_t *buf per_cpu(cpu_prof_buffer, cpu);
 
-		atomic_set(&prof_buffer[i], 0);
-		for_each_online_cpu(cpu) {
-			atomic_t *buf = per_cpu(cpu_prof_buffer, cpu);
-			atomic_add(atomic_read(&buf[i]), &prof_buffer[i]);
-		}
+		for (i = 0; i < prof_len; ++i)
+			prof_buffer[i].counter += atomic_read(&buf[i]);
 	}
 }
 

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

* Re: kernbench on 512p
  2004-08-20 17:24                 ` Jesse Barnes
@ 2004-08-20 19:22                   ` Manfred Spraul
  2004-08-20 20:19                   ` Manfred Spraul
  1 sibling, 0 replies; 35+ messages in thread
From: Manfred Spraul @ 2004-08-20 19:22 UTC (permalink / raw)
  To: Jesse Barnes
  Cc: paulmck, Martin J. Bligh, hawkes, linux-kernel, wli, schwidefsky

Jesse Barnes wrote:

>Looks like a bit more context has changed.  Manfred, care to respin against 
>-mm3 so I can test?
>
>  
>
No problem.
Btw, who removed rcu_restart_cpu: s390 must call it after changing 
nohz_cpu_mask. Otherwise a 32-bit wraparound will lead to false 
quiescent states.

--
    Manfred

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

* Re: kernbench on 512p
  2004-08-19 21:56           ` Martin J. Bligh
@ 2004-08-20 19:36             ` Maneesh Soni
  0 siblings, 0 replies; 35+ messages in thread
From: Maneesh Soni @ 2004-08-20 19:36 UTC (permalink / raw)
  To: Martin J. Bligh; +Cc: Jesse Barnes, hawkes, linux-kernel, wli

On Thu, Aug 19, 2004 at 02:56:39PM -0700, Martin J. Bligh wrote:
> --On Thursday, August 19, 2004 17:24:04 -0400 Jesse Barnes <jbarnes@engr.sgi.com> wrote:
> 
> > On Thursday, August 19, 2004 5:11 pm, Jesse Barnes wrote:
> >> The output is attached (my mailer insists on wrapping it if I inline it). 
> >> I used 'lockstat -w'.
> > 
> > The highlights:
> > 
> >  nw   spin   rjct  lock & function
> > 19.0% 81.0%    0%  dcache_lock
> >  3.3% 96.7%    0%    d_alloc+0x270
> >  2.7% 97.3%    0%    d_delete+0x40
> > 18.3% 81.7%    0%    d_instantiate+0x90
> >  4.7% 95.3%    0%    d_move+0x60
> > 34.6% 65.4%    0%    d_rehash+0xe0
> > 19.1% 80.9%    0%    dput+0x40
> > 10.5% 89.5%    0%    link_path_walk+0xef0
> >    0%  100%    0%    sys_getcwd+0x210
> > 
> > 41.4% 58.6%    0%  rcu_state
> > 61.3% 38.7%    0%    __rcu_process_callbacks+0x260
> > 41.4% 58.6%    0%    rcu_check_quiescent_state+0xf0
> > 
> > So it looks like the dcache lock is the biggest problem on this system with 
> > this load.  And although the rcu stuff has improved tremendously for this 
> > system, it's still highly contended.
> 
> Hmmm. dcache_lock is known-fucked, though I'm suprised at d_rehash
> (file deletion)?
> 

The thing which is hurting most is dput(), almost 90% of the dcache_lock 
aquistion is there.

(deleted few columns)

 23.8% 67.3%     9955785 32.7% 67.3%    0%  dcache_lock
 0.06% 70.5%       17068 29.5% 70.5%    0%    d_alloc+0x270
 0.02% 25.4%       15340 74.6% 25.4%    0%    d_delete+0x40
 0.06% 65.9%       30485 34.1% 65.9%    0%    d_instantiate+0x90
 0.06% 78.0%        4461 22.0% 78.0%    0%    d_move+0x60
 0.00%    0%           2  100%    0%    0%    d_path+0x120
 0.04% 52.5%       17068 47.5% 52.5%    0%    d_rehash+0xe0
 0.00% 26.7%          15 73.3% 26.7%    0%    d_splice_alias+0xc0
 0.00% 20.0%           5 80.0% 20.0%    0%    dentry_unhash+0x70
 0.00%    0%           4  100%    0%    0%    dentry_unhash+0xc0
 23.5% 67.5%     9827270 32.5% 67.5%    0%    dput+0x40
 0.09% 62.3%       36875 37.7% 62.3%    0%    link_path_walk+0xef0
 0.00% 0.24%        5068 99.8% 0.24%    0%    link_path_walk+0x1cc0
 0.00% 33.3%           3 66.7% 33.3%    0%    proc_pid_unhash+0x50
 0.00%  7.1%          14 92.9%  7.1%    0%    prune_dcache+0x50
 0.00%    0%         167  100%    0%    0%    prune_dcache+0x3d0
 0.00%    0%          21  100%    0%    0%    select_parent+0x40
 0.00% 24.2%        1919 75.8% 24.2%    0%    sys_getcwd+0x210



-- 
Maneesh Soni
Linux Technology Center, 
IBM Austin
email: maneesh@in.ibm.com
Phone: 1-512-838-1896 Fax: 
T/L : 6781896

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

* Re: kernbench on 512p
  2004-08-20 17:24                 ` Jesse Barnes
  2004-08-20 19:22                   ` Manfred Spraul
@ 2004-08-20 20:19                   ` Manfred Spraul
  2004-08-23 21:23                     ` Jesse Barnes
  2004-09-10 19:01                     ` Greg Edwards
  1 sibling, 2 replies; 35+ messages in thread
From: Manfred Spraul @ 2004-08-20 20:19 UTC (permalink / raw)
  To: Jesse Barnes; +Cc: paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

[-- Attachment #1: Type: text/plain, Size: 743 bytes --]

Jesse Barnes wrote:

>Looks like a bit more context has changed.  Manfred, care to respin against 
>-mm3 so I can test?
>
>  
>
The patches are attached. Just boot-tested on a single-cpu system.

Three  changes:
- I've placed the per-group structure into rcu_state. That's simpler but 
wrong: the state should be allocated from node-local memory, not a big 
global array.
- I found a bug/race in the cpu_offline path: When the last cpu of a 
group goes offline then the group must be forced into quiescent state. 
The "&& (!forced)" was missing.
- I've removed the spin_unlock_wait(). It was intended to synchronize 
cpu_online_mask changes with the calculation of ->outstanding. Paul 
convinced me that this is not necessary.

--
    Manfred

[-- Attachment #2: patch-rcu268-01-locking --]
[-- Type: text/plain, Size: 1847 bytes --]

--- 2.6/kernel/rcupdate.c	2004-08-20 19:59:22.000000000 +0200
+++ build-2.6/kernel/rcupdate.c	2004-08-20 20:46:35.952639280 +0200
@@ -237,14 +237,29 @@
  * Clear it from the cpu mask and complete the grace period if it was the last
  * cpu. Start another grace period if someone has further entries pending
  */
-static void cpu_quiet(int cpu, struct rcu_ctrlblk *rcp, struct rcu_state *rsp)
+static void cpu_quiet(int cpu, struct rcu_ctrlblk *rcp, struct rcu_state *rsp,
+			struct rcu_data *rdp, int force)
 {
+	spin_lock(&rsp->lock);
+
+	if (unlikely(rcp->completed == rcp->cur))
+		goto out_unlock;
+	/*
+	 * RCU_quiescbatch/batch.cur and the cpu bitmap can come out of sync
+	 * during cpu startup. Ignore the quiescent state if that happened.
+	 */
+	if (unlikely(rdp->quiescbatch != rcp->cur) && likely(!force))
+		goto out_unlock;
+
 	cpu_clear(cpu, rsp->cpumask);
 	if (cpus_empty(rsp->cpumask)) {
 		/* batch completed ! */
 		rcp->completed = rcp->cur;
 		rcu_start_batch(rcp, rsp, 0);
 	}
+out_unlock:
+	spin_unlock(&rsp->lock);
+
 }
 
 /*
@@ -279,15 +294,7 @@
 		return;
 	rdp->qs_pending = 0;
 
-	spin_lock(&rsp->lock);
-	/*
-	 * rdp->quiescbatch/rcp->cur and the cpu bitmap can come out of sync
-	 * during cpu startup. Ignore the quiescent state.
-	 */
-	if (likely(rdp->quiescbatch == rcp->cur))
-		cpu_quiet(rdp->cpu, rcp, rsp);
-
-	spin_unlock(&rsp->lock);
+	cpu_quiet(rdp->cpu, rcp, rsp, rdp, 0);
 }
 
 
@@ -314,10 +321,10 @@
 	 * we can block indefinitely waiting for it, so flush
 	 * it here
 	 */
-	spin_lock_bh(&rsp->lock);
-	if (rcp->cur != rcp->completed)
-		cpu_quiet(rdp->cpu, rcp, rsp);
-	spin_unlock_bh(&rsp->lock);
+	local_bh_disable();
+	cpu_quiet(rdp->cpu, rcp, rsp, rdp, 1);
+	local_bh_enable();
+
 	rcu_move_batch(this_rdp, rdp->curlist, rdp->curtail);
 	rcu_move_batch(this_rdp, rdp->nxtlist, rdp->nxttail);
 

[-- Attachment #3: patch-rcu268-02-groups --]
[-- Type: text/plain, Size: 6691 bytes --]

--- 2.6/kernel/rcupdate.c	2004-08-20 21:52:45.272210984 +0200
+++ build-2.6/kernel/rcupdate.c	2004-08-20 21:52:24.664343856 +0200
@@ -53,17 +53,59 @@
 struct rcu_ctrlblk rcu_bh_ctrlblk =
 	{ .cur = -300, .completed = -300 , .lock = SEQCNT_ZERO };
 
+/* XXX Dummy - should belong into arch XXX */
+#define RCU_HUGE
+#define RCU_GROUP_SIZE	2
+/* XXX End of dummy XXX */
+
+#ifdef RCU_HUGE
+
+#define RCU_GROUPCOUNT		((NR_CPUS+RCU_GROUP_SIZE-1)/RCU_GROUP_SIZE)
+#define RCU_GROUP_CPUMASKLEN	((RCU_GROUP_SIZE+BITS_PER_LONG-1)/BITS_PER_LONG)
+#define RCU_GROUPMASKLEN	((NR_CPUS+RCU_GROUP_SIZE*BITS_PER_LONG-1)/(RCU_GROUP_SIZE*BITS_PER_LONG))
+
+struct rcu_group_state {
+	spinlock_t	lock; /* Guard this struct */
+	long batchnum;	/* batchnum this group is working on. Mitmatch with
+			 * ctrlblk->cur means reinitialize outstanding to
+			 * all active cpus in this group.
+			 */
+	unsigned long outstanding[RCU_GROUP_CPUMASKLEN];
+} ____cacheline_maxaligned_in_smp;
+
+#endif
+
 /* Bookkeeping of the progress of the grace period */
 struct rcu_state {
 	spinlock_t	lock; /* Guard this struct and writes to rcu_ctrlblk */
+#ifdef RCU_HUGE
+	long batchnum;         /* batchnum the system is working on. Mismatch
+				* with rcu_ctrlblk.cur means reinitialize
+				* outstanding to all groups with active cpus
+				*/
+	unsigned long outstanding[RCU_GROUPMASKLEN];
+	struct rcu_group_state groups[RCU_GROUPCOUNT];
+#else
 	cpumask_t	cpumask; /* CPUs that need to switch in order    */
 	                              /* for current batch to proceed.        */
+#endif
 };
 
-struct rcu_state rcu_state ____cacheline_maxaligned_in_smp =
-	  {.lock = SPIN_LOCK_UNLOCKED, .cpumask = CPU_MASK_NONE };
-struct rcu_state rcu_bh_state ____cacheline_maxaligned_in_smp =
-	  {.lock = SPIN_LOCK_UNLOCKED, .cpumask = CPU_MASK_NONE };
+#ifdef RCU_HUGE
+#define RCU_STATE_INITIALIZER 	\
+		{ \
+			.lock = SPIN_LOCK_UNLOCKED, \
+			.batchnum = -400, \
+			.groups = { [0 ... RCU_GROUPCOUNT-1] = \
+					{ .lock = SPIN_LOCK_UNLOCKED, .batchnum = -400 } } \
+		}
+
+#else
+#define RCU_STATE_INITIALIZER 	{.lock = SPIN_LOCK_UNLOCKED, .cpumask = CPU_MASK_NONE }
+#endif
+
+struct rcu_state rcu_state ____cacheline_maxaligned_in_smp = RCU_STATE_INITIALIZER;
+struct rcu_state rcu_bh_state ____cacheline_maxaligned_in_smp = RCU_STATE_INITIALIZER;
 
 DEFINE_PER_CPU(struct rcu_data, rcu_data) = { 0L };
 DEFINE_PER_CPU(struct rcu_data, rcu_bh_data) = { 0L };
@@ -223,8 +265,15 @@
 
 	if (rcp->next_pending &&
 			rcp->completed == rcp->cur) {
+#ifdef RCU_HUGE
+		/* Nothing to do: RCU_HUGE uses lazy initialization of the
+		 * outstanding bitmap
+		 */
+#else
+		/* FIXME: what does this comment mean? */
 		/* Can't change, since spin lock held. */
 		cpus_andnot(rsp->cpumask, cpu_online_map, nohz_cpu_mask);
+#endif
 		write_seqcount_begin(&rcp->lock);
 		rcp->next_pending = 0;
 		rcp->cur++;
@@ -237,6 +286,76 @@
  * Clear it from the cpu mask and complete the grace period if it was the last
  * cpu. Start another grace period if someone has further entries pending
  */
+#ifdef RCU_HUGE
+static void cpu_quiet(int cpu, struct rcu_ctrlblk *rcp, struct rcu_state *rsp,
+			struct rcu_data *rdp, int force)
+{
+	struct rcu_group_state *rgs;
+	long batch;
+	int i;
+
+	batch = rcp->cur;
+
+	rgs = &rsp->groups[cpu/RCU_GROUP_SIZE];
+
+	spin_lock(&rgs->lock);
+	if (rgs->batchnum != batch) {
+		int offset;
+		/* first call for this batch - initialize outstanding */
+		rgs->batchnum = batch;
+		memset(rgs->outstanding, 0, sizeof(rgs->outstanding));
+		offset = (cpu/RCU_GROUP_SIZE)*RCU_GROUP_SIZE;
+		for (i=0;i<RCU_GROUP_SIZE;i++) {
+			if (cpu_online(i+offset) && !cpu_isset(i+offset, nohz_cpu_mask))
+				__set_bit(i, rgs->outstanding);
+		}
+	}
+	if (unlikely(rdp->quiescbatch != rgs->batchnum) && likely(!force))
+       		goto out_unlock_group;
+
+	__clear_bit(cpu%RCU_GROUP_SIZE, rgs->outstanding);
+	for (i=0;i<RCU_GROUP_CPUMASKLEN;i++) {
+		if (rgs->outstanding[i])
+			break;
+	}
+	if (i==RCU_GROUP_CPUMASKLEN) {
+		/* group completed, escalate to global level */
+		spin_lock(&rsp->lock);
+
+		if (rsp->batchnum != rcp->cur) {
+			/* first call for this batch - initialize outstanding */
+			rsp->batchnum = rcp->cur;
+			memset(rsp->outstanding, 0, sizeof(rsp->outstanding));
+
+			for (i=0;i<NR_CPUS;i+=RCU_GROUP_SIZE) {
+				int j;
+				for (j=0;j<RCU_GROUP_SIZE;j++) {
+					if (cpu_online(i+j) && !cpu_isset(i+j, nohz_cpu_mask))
+						break;
+				}
+				if (j != RCU_GROUP_SIZE)
+					__set_bit(i/RCU_GROUP_SIZE, rsp->outstanding);
+			}
+		}
+		if (unlikely(rgs->batchnum != rsp->batchnum) && likely(!force))
+       			goto out_unlock_all;
+		__clear_bit(cpu/RCU_GROUP_SIZE, rsp->outstanding);
+		for (i=0;i<RCU_GROUPMASKLEN;i++) {
+			if (rsp->outstanding[i])
+				break;
+		}
+		if (i==RCU_GROUPMASKLEN) {
+			/* all groups completed, batch completed */
+			rcp->completed = rcp->cur;
+			rcu_start_batch(rcp, rsp, 0);
+		}
+out_unlock_all:
+		spin_unlock(&rcu_state.lock);
+	}
+out_unlock_group:
+	spin_unlock(&rgs->lock);
+}
+#else
 static void cpu_quiet(int cpu, struct rcu_ctrlblk *rcp, struct rcu_state *rsp,
 			struct rcu_data *rdp, int force)
 {
@@ -261,6 +380,7 @@
 	spin_unlock(&rsp->lock);
 
 }
+#endif
 
 /*
  * Check if the cpu has gone through a quiescent state (say context
@@ -418,8 +538,25 @@
 	tasklet_schedule(&per_cpu(rcu_tasklet, cpu));
 }
 
+#ifdef RCU_HUGE
+static void rcu_update_group(int cpu, struct rcu_ctrlblk *rcp,
+						struct rcu_state *rsp)
+{
+	int i, offset;
+	offset = (cpu/RCU_GROUP_SIZE)*RCU_GROUP_SIZE;
+	for (i=0;i<RCU_GROUP_SIZE;i++) {
+		if (cpu_online(i+offset) && !cpu_isset(i, nohz_cpu_mask))
+			break;
+	}
+	if (i == RCU_GROUP_SIZE) {
+		/* No cpu online from this group. Initialize batchnum. */
+		rsp->groups[cpu/RCU_GROUP_SIZE].batchnum = rcp->completed;
+	}
+}
+#endif
+
 static void rcu_init_percpu_data(int cpu, struct rcu_ctrlblk *rcp,
-						struct rcu_data *rdp)
+		       		struct rcu_state *rsp, struct rcu_data *rdp)
 {
 	memset(rdp, 0, sizeof(*rdp));
 	rdp->curtail = &rdp->curlist;
@@ -428,6 +565,9 @@
 	rdp->quiescbatch = rcp->completed;
 	rdp->qs_pending = 0;
 	rdp->cpu = cpu;
+#ifdef RCU_HUGE
+	rcu_update_group(cpu, rcp, rsp);
+#endif
 }
 
 static void __devinit rcu_online_cpu(int cpu)
@@ -435,8 +575,8 @@
 	struct rcu_data *rdp = &per_cpu(rcu_data, cpu);
 	struct rcu_data *bh_rdp = &per_cpu(rcu_bh_data, cpu);
 
-	rcu_init_percpu_data(cpu, &rcu_ctrlblk, rdp);
-	rcu_init_percpu_data(cpu, &rcu_bh_ctrlblk, bh_rdp);
+	rcu_init_percpu_data(cpu, &rcu_ctrlblk, &rcu_state, rdp);
+	rcu_init_percpu_data(cpu, &rcu_bh_ctrlblk, &rcu_bh_state, bh_rdp);
 	tasklet_init(&per_cpu(rcu_tasklet, cpu), rcu_process_callbacks, 0UL);
 }
 

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

* Re: kernbench on 512p
  2004-08-20 20:19                   ` Manfred Spraul
@ 2004-08-23 21:23                     ` Jesse Barnes
  2004-08-23 23:13                       ` Jesse Barnes
  2004-09-10 19:01                     ` Greg Edwards
  1 sibling, 1 reply; 35+ messages in thread
From: Jesse Barnes @ 2004-08-23 21:23 UTC (permalink / raw)
  To: Manfred Spraul; +Cc: paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

On Friday, August 20, 2004 1:19 pm, Manfred Spraul wrote:
> Jesse Barnes wrote:
> >Looks like a bit more context has changed.  Manfred, care to respin
> > against -mm3 so I can test?
>
> The patches are attached. Just boot-tested on a single-cpu system.
>
> Three  changes:
> - I've placed the per-group structure into rcu_state. That's simpler but
> wrong: the state should be allocated from node-local memory, not a big
> global array.
> - I found a bug/race in the cpu_offline path: When the last cpu of a
> group goes offline then the group must be forced into quiescent state.
> The "&& (!forced)" was missing.
> - I've removed the spin_unlock_wait(). It was intended to synchronize
> cpu_online_mask changes with the calculation of ->outstanding. Paul
> convinced me that this is not necessary.

I haven't been able to boot successfully with this patch applied.  Things seem 
to get real slow around the time init starts, and the system becomes 
unusable.  I applied them on top of stock 2.6.8.1-mm4, which boots fine 
without them (testing that again to make sure, but I booted it a few times 
this morning w/o incident).

Jesse

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

* Re: kernbench on 512p
  2004-08-23 21:23                     ` Jesse Barnes
@ 2004-08-23 23:13                       ` Jesse Barnes
  0 siblings, 0 replies; 35+ messages in thread
From: Jesse Barnes @ 2004-08-23 23:13 UTC (permalink / raw)
  To: Manfred Spraul; +Cc: paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

On Monday, August 23, 2004 2:23 pm, Jesse Barnes wrote:
> I haven't been able to boot successfully with this patch applied.  Things
> seem to get real slow around the time init starts, and the system becomes
> unusable.  I applied them on top of stock 2.6.8.1-mm4, which boots fine
> without them (testing that again to make sure, but I booted it a few times
> this morning w/o incident).

Disregard this.  My hardware appears broken, so I can't be sure what's going 
on.  Ugg.

Jesse

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

* Re: kernbench on 512p
  2004-08-20 20:19                   ` Manfred Spraul
  2004-08-23 21:23                     ` Jesse Barnes
@ 2004-09-10 19:01                     ` Greg Edwards
  2004-09-13 18:21                       ` Manfred Spraul
  1 sibling, 1 reply; 35+ messages in thread
From: Greg Edwards @ 2004-09-10 19:01 UTC (permalink / raw)
  To: Manfred Spraul
  Cc: Jesse Barnes, paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

On Fri, Aug 20, 2004 at 10:19:26PM +0200, Manfred Spraul wrote:
| Jesse Barnes wrote:
| 
| >Looks like a bit more context has changed.  Manfred, care to respin 
| >against -mm3 so I can test?
| >
| > 
| >
| The patches are attached. Just boot-tested on a single-cpu system.
| 
| Three  changes:
| - I've placed the per-group structure into rcu_state. That's simpler but 
| wrong: the state should be allocated from node-local memory, not a big 
| global array.
| - I found a bug/race in the cpu_offline path: When the last cpu of a 
| group goes offline then the group must be forced into quiescent state. 
| The "&& (!forced)" was missing.
| - I've removed the spin_unlock_wait(). It was intended to synchronize 
| cpu_online_mask changes with the calculation of ->outstanding. Paul 
| convinced me that this is not necessary.

Manfred,

I just tried these patches against 2.6.9-rc1-mm3, on a 2p box, and I'm
getting intermittent hangs, either during bootup or shortly after reaching
multi-user.  In all cases, one of the processes is stuck on rcu_bh_state:

[0]kdb> bt
Stack traceback for pid 0
0xa000000100970000        0        0  1    0   I  0xa000000100970430
*swapper
0xa0000001000090b0 ia64_spinlock_contention_pre3_4+0x30
        args (0xa0000001009f7000, 0xa0000001001017e0, 0x288)
        r31 (spinlock address) 0xa0000001009f7000 rcu_bh_state
0xa00000010010e100 _metered_spin_lock+0x40
0xa0000001001017e0 __rcu_process_callbacks+0x260
        args (0xa0000001009eef00, 0xa0000001009f7000, 0xe000003004a07f70, 0xa0000001000debe0, 0x50d)
0xa0000001000debe0 tasklet_action+0x1c0
        args (0xe000003004a07fe8, 0x0, 0xffffffffffff5e10, 0xffffffffffff0020, 0xffffffffffff0028)
0xa0000001000de290 __do_softirq+0x250
        args (0xa000000100977bc0, 0x0, 0x1, 0xa000000100d8e2d0, 0x20000001)
0xa0000001000de360 do_softirq+0x80
        args (0xef, 0xa000000100977bc0, 0xa000000100d8e2d0, 0xa00000010098b780, 0xa0000001009b5958)
0xa000000100019030 ia64_handle_irq+0x190
        args (0xf, 0xa000000100977bc0, 0x0, 0x0, 0xfd) 0xa000000100012300 ia64_leave_kernel
        args (0xf, 0xa000000100977bc0)
0xa000000100019840 ia64_save_scratch_fpregs+0x20
        args (0xa000000100977dd0)
0xa00000010001ad20 default_idle+0xc0
        args (0x1, 0xa000000100ba5fe4, 0xa000000100977db0, 0xa000000100977e28, 0xa000000100977e20)
0xa00000010001afe0 cpu_idle+0x1e0
        args (0xa000000100d8e2d0, 0xa0000001009024e0, 0xa0000001009024e8, 0xa0000001009059b0, 0xa0000001009059b8)
0xa0000001000095c0 rest_init+0xa0
        args (0xa0000001009190b0, 0x590)
0xa0000001009190b0 start_kernel+0x510
        args (0x307bd8ac08, 0xd13, 0x3004a3e240, 0x300485da80, 0x307bd31b30)
0xa000000100008590 _start+0x270
        args (0x307bd8ac08, 0x307bd5b398, 0x3004a3e270, 0x307bd1f008, 0x30045b2e60)

If I'm reading this right, this corresponds to (kernel/rcupdate.c):

    507                 if (!next_pending) {
    508                         /* and start it/schedule start if it's a new batch */
    509                         spin_lock(&rsp->lock);   <---- here
    510                         rcu_start_batch(rcp, rsp, 1);
    511                         spin_unlock(&rsp->lock);
    512                 }


Whenever this happens, there is another thread waiting to sync buffers
(sometimes with several backed up behind him).  It was kjournald in this
case.  Have you seen this ever with these patches?

Regards,
Greg Edwards

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

* Re: kernbench on 512p
  2004-09-10 19:01                     ` Greg Edwards
@ 2004-09-13 18:21                       ` Manfred Spraul
  2004-09-14 17:52                         ` Greg Edwards
  0 siblings, 1 reply; 35+ messages in thread
From: Manfred Spraul @ 2004-09-13 18:21 UTC (permalink / raw)
  To: Greg Edwards
  Cc: Jesse Barnes, paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

Greg Edwards wrote:

>Whenever this happens, there is another thread waiting to sync buffers
>(sometimes with several backed up behind him).  It was kjournald in this
>case.  Have you seen this ever with these patches?
>
>  
>
No - as I wrote, I tested only with qemu, without networking. Thus the 
bh queue was never used. Just booting a complete system with 
uniprocessor, spinlock debugging enabled immediately showed a bug in 
line 315: It unlocked rcu_state.lock instead of rsp->lock :-(

pseudo-patch:

 out_unlock_all:
-                spin_unlock(&rcu_state.lock);
+                spin_unlock(&rsp->lock);
        }


--
    Manfred

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

* Re: kernbench on 512p
  2004-09-13 18:21                       ` Manfred Spraul
@ 2004-09-14 17:52                         ` Greg Edwards
  2004-09-14 18:16                           ` Manfred Spraul
  0 siblings, 1 reply; 35+ messages in thread
From: Greg Edwards @ 2004-09-14 17:52 UTC (permalink / raw)
  To: Manfred Spraul
  Cc: Jesse Barnes, paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

[-- Attachment #1: Type: text/plain, Size: 199 bytes --]

Manfred,

Lockstat output attached from 2.6.9-rc2 at 512p and 2.6.9-rc2 + your two
remaining RCU patches at 512p.  kernbench was run without any arguments.

The difference for RCU looks great.

Greg

[-- Attachment #2: lockstat-2.6.9-rc2.txt --]
[-- Type: text/plain, Size: 42426 bytes --]

___________________________________________________________________________________________
System: Linux ascender 2.6.9-rc2 #1 SMP Tue Sep 14 11:05:18 CDT 2004 ia64
Total counts

All (512) CPUs

Start time: Tue Sep 14 12:04:25 2004
End   time: Tue Sep 14 12:10:51 2004
Delta Time: 386.62 sec.
Hash table slots in use:      350.
Global read lock slots in use: 612.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SPINLOCKS         HOLD            WAIT
  UTIL  CON    MEAN(  MAX )   MEAN(  MAX )(% CPU)     TOTAL NOWAIT SPIN RJECT  NAME

       0.57%  2.4us(  67ms)   41ms(  86ms)(26.7%) 227047021 99.4% 0.57% 0.00%  *TOTAL*

 0.00%    0%  0.3us( 134us)    0us                    46295  100%    0%    0%  [0xe00000b003726dd0]
 0.00%    0%  0.0us( 0.0us)    0us                        1  100%    0%    0%    xfs_log_move_tail+0x310
 0.00%    0%  0.9us(  16us)    0us                       90  100%    0%    0%    xfs_log_need_covered+0x100
 0.00%    0%  0.1us(  11us)    0us                     4988  100%    0%    0%    xfs_log_notify+0x40
 0.00%    0%  4.8us(  38us)    0us                      238  100%    0%    0%    xlog_state_do_callback+0x40
 0.00%    0%  0.0us( 0.1us)    0us                      238  100%    0%    0%    xlog_state_do_callback+0x210
 0.00%    0%  4.2us( 134us)    0us                      238  100%    0%    0%    xlog_state_do_callback+0x300
 0.00%    0%  0.2us( 5.8us)    0us                      239  100%    0%    0%    xlog_state_done_syncing+0x40
 0.00%    0%  0.5us(  43us)    0us                    10111  100%    0%    0%    xlog_state_get_iclog_space+0x30
 0.00%    0%  0.2us( 6.7us)    0us                     4757  100%    0%    0%    xlog_state_put_ticket+0x20
 0.00%    0%  0.1us(  17us)    0us                    10212  100%    0%    0%    xlog_state_release_iclog+0x50
 0.00%    0%  2.6us(  37us)    0us                      148  100%    0%    0%    xlog_state_sync_all+0x30
 0.00%    0%  0.2us( 6.7us)    0us                       66  100%    0%    0%    xlog_state_sync_all+0x440
 0.00%    0%  4.6us(  16us)    0us                       46  100%    0%    0%    xlog_state_sync+0x40
 0.00%    0%  0.9us( 7.0us)    0us                       35  100%    0%    0%    xlog_state_sync+0x3f0
 0.00%    0%  0.4us( 7.2us)    0us                       21  100%    0%    0%    xlog_state_want_sync+0x20
 0.00%    0%  0.5us(  18us)    0us                     4757  100%    0%    0%    xlog_ticket_get+0x50
 0.00%    0%  0.1us(  34us)    0us                     9974  100%    0%    0%    xlog_write+0x5f0
 0.00%    0%  0.8us( 6.8us)    0us                       21  100%    0%    0%    xlog_write+0x6c0
 0.00%    0%  0.4us(  15us)    0us                      115  100%    0%    0%    xlog_write+0x800

 0.00%    0%  0.2us(  64us)    0us                    43424  100%    0%    0%  [0xe00000b003726e70]
 0.00%    0%  0.1us(  16us)    0us                    14949  100%    0%    0%    xfs_log_move_tail+0x70
 0.00%    0%  0.0us( 8.0us)    0us                    10212  100%    0%    0%    xlog_assign_tail_lsn+0x50
 0.00%    0%  1.0us(  64us)    0us                     4757  100%    0%    0%    xlog_grant_log_space+0x40
 0.00%    0%  0.2us(  19us)    0us                     6588  100%    0%    0%    xlog_grant_push_ail+0x50
 0.00%    0%  0.1us( 7.9us)    0us                     1831  100%    0%    0%    xlog_regrant_reserve_log_space+0x50
 0.00%    0%  3.7us(  16us)    0us                       92  100%    0%    0%    xlog_regrant_write_log_space+0x90
 0.00%    0%  0.1us( 6.5us)    0us                      238  100%    0%    0%    xlog_state_do_callback+0x1c0
 0.00%    0%  0.3us(  17us)    0us                     4757  100%    0%    0%    xlog_ungrant_log_space+0x50

    0%    0%                   0us                        1  100%    0%    0%  [0xe000023003875d80]
    0%    0%                   0us                        1  100%    0%    0%    credit_entropy_store+0x40

    0%    0%                   0us                     8849  100%    0%    0%  [0xe00005b00387a080]
    0%    0%                   0us                     8849  100%    0%    0%    sn_dma_flush+0x1e0

    0%    0%                   0us                     8849  100%    0%    0%  [0xe00006307b8f2018]
    0%    0%                   0us                     8849  100%    0%    0%    scsi_put_command+0xe0

 0.04% 0.28%  3.5us(  90us)   16us(  91us)(0.00%)     44253 99.7% 0.28%    0%  [0xe00006307b8f2040]
 0.04% 0.16%   17us(  90us)   19us(  50us)(0.00%)      8857 99.8% 0.16%    0%    qla1280_intr_handler+0x30
 0.00% 0.31%  0.3us(  30us)  4.6us(  15us)(0.00%)      8849 99.7% 0.31%    0%    scsi_device_unbusy+0x50
    0% 0.29%                 9.3us(  85us)(0.00%)      8849 99.7% 0.29%    0%    scsi_dispatch_cmd+0x340
    0% 0.44%                  21us(  91us)(0.00%)      8849 99.6% 0.44%    0%    scsi_request_fn+0x2d0
    0% 0.20%                  31us(  87us)(0.00%)      8849 99.8% 0.20%    0%    scsi_run_queue+0xa0

 0.00% 0.10%  0.1us(  67us)   10us(  44us)(0.00%)     40574 99.9% 0.10%    0%  [0xe00008b003eb7024]
 0.00%    0%  0.2us( 7.3us)    0us                      442  100%    0%    0%    xfs_buf_iodone+0x30
 0.00%    0%  0.2us( 4.2us)    0us                       47  100%    0%    0%    xfs_buf_item_unpin+0x160
 0.00%    0%  0.1us( 2.6us)    0us                      138  100%    0%    0%    xfs_efi_item_unpin+0x30
 0.00%    0%  0.2us(  12us)    0us                      138  100%    0%    0%    xfs_efi_release+0x30
 0.00%    0%  0.1us( 4.6us)    0us                     3901  100%    0%    0%    xfs_iflush_done+0xc0
 0.00% 0.97%  0.2us(  30us)   10us(  44us)(0.00%)      3903 99.0% 0.97%    0%    xfs_iflush_int+0x430
 0.00% 0.01%  0.1us(  67us)  2.4us( 2.9us)(0.00%)     19342  100% 0.01%    0%    xfs_trans_chunk_committed+0x210
 0.00%    0%   32us(  32us)    0us                        1  100%    0%    0%    xfs_trans_push_ail+0x40
 0.00%    0%  0.5us(  21us)    0us                     2450  100%    0%    0%    xfs_trans_push_ail+0x2c0
 0.00% 0.01%  0.1us(  16us)   24us(  24us)(0.00%)     10212  100% 0.01%    0%    xfs_trans_tail_ail+0x20

 0.00%    0%  0.3us(  55us)    0us                    13977  100%    0%    0%  [0xe00008b003eb7110]
 0.00%    0%  0.3us(  55us)    0us                    10099  100%    0%    0%    xfs_mod_incore_sb+0x20
 0.00%    0%  0.1us(  23us)    0us                     3878  100%    0%    0%    xfs_mod_incore_sb_batch+0x30

 0.01% 0.38%  0.3us( 474us)   14us( 246us)(0.00%)    139387 99.6% 0.38%    0%  [0xe00009b003cbf034]
    0% 0.24%                  13us(  79us)(0.00%)      8212 99.8% 0.24%    0%    __cfq_get_queue+0x1f0
    0% 0.66%                  18us( 203us)(0.00%)     19020 99.3% 0.66%    0%    __make_request+0x150
 0.00% 0.45%  0.0us(  36us)   11us(  50us)(0.00%)      8849 99.5% 0.45%    0%    blk_run_queue+0x40
    0% 0.33%                  10us(  75us)(0.00%)     17061 99.7% 0.33%    0%    cfq_get_queue+0x50
 0.01% 0.32%  2.6us( 474us)   18us( 187us)(0.00%)     17382 99.7% 0.32%    0%    generic_unplug_device+0x40
    0% 0.27%                 7.6us(  91us)(0.00%)     17061 99.7% 0.27%    0%    get_request+0x80
    0% 0.33%                 7.2us(  31us)(0.00%)      8212 99.7% 0.33%    0%    get_request+0x4d0
    0% 0.18%                  28us( 216us)(0.00%)      8849 99.8% 0.18%    0%    scsi_device_unbusy+0xb0
    0% 0.18%                  25us( 120us)(0.00%)      8849 99.8% 0.18%    0%    scsi_end_request+0x160
 0.00%  1.2%  0.1us(  48us)   12us( 246us)(0.00%)      8849 98.8%  1.2%    0%    scsi_request_fn+0x520
    0% 0.15%                 6.5us(  17us)(0.00%)     17043 99.8% 0.15%    0%    scsi_request_fn+0x5b0

 0.00%    0%  0.0us( 0.3us)    0us                    17698  100%    0%    0%  [0xe00009b003cbf038]
    0%    0%                   0us                     8849  100%    0%    0%    scsi_get_command+0x110
 0.00%    0%  0.1us( 0.3us)    0us                     8849  100%    0%    0%    scsi_put_command+0x70

 0.00%    0%  0.1us( 2.5us)    0us                       78  100%    0%    0%  [0xe0001330032bb504]
 0.00%    0%  0.1us( 2.5us)    0us                       78  100%    0%    0%    do_select+0x60

    0%    0%                   0us                       96  100%    0%    0%  [0xe00039b003d50380]
    0%    0%                   0us                       65  100%    0%    0%    qla2x00_intr_handler+0x70
    0%    0%                   0us                       31  100%    0%    0%    qla2x00_mailbox_command+0xe0

    0%    0%                   0us                       67  100%    0%    0%  [0xe00039b003d52480]
    0%    0%                   0us                       65  100%    0%    0%    qla2x00_next+0x80
    0%    0%                   0us                        1  100%    0%    0%    qla2x00_restart_queues+0x120
    0%    0%                   0us                        1  100%    0%    0%    qla2x00_restart_queues+0x390

    0%    0%                   0us                       93  100%    0%    0%  [0xe00039b003d54478]
    0%    0%                   0us                       31  100%    0%    0%    qla2x00_intr_handler+0x4e0
    0%    0%                   0us                       31  100%    0%    0%    qla2x00_mailbox_command+0x9c0
    0%    0%                   0us                       31  100%    0%    0%    qla2x00_mailbox_command+0xba0

 0.00%    0%  0.3us( 3.0us)    0us                       14  100%    0%    0%  [0xe0004a3079d2d930]
 0.00%    0%  0.3us( 3.0us)    0us                       14  100%    0%    0%    unmap_mapping_range+0xc0

    0%    0%                   0us                        4  100%    0%    0%  [0xe0004db003d47e18]
    0%    0%                   0us                        2  100%    0%    0%    __down_interruptible+0xc0
    0%    0%                   0us                        2  100%    0%    0%    __down_interruptible+0x240

 0.00%    0%   27us( 369us)    0us                       16  100%    0%    0%  [0xe000603003bd634c]
 0.00%    0%  0.3us( 1.5us)    0us                        8  100%    0%    0%    rwsem_down_read_failed+0x60
 0.00%    0%   53us( 369us)    0us                        8  100%    0%    0%    rwsem_wake+0x30

 0.00%    0%  251us( 251us)    0us                        1  100%    0%    0%  [0xe00071b07882b6e8]
 0.00%    0%  251us( 251us)    0us                        1  100%    0%    0%    unmap_vmas+0x540

    0%    0%                   0us                        3  100%    0%    0%  batch_lock
    0%    0%                   0us                        3  100%    0%    0%    batch_entropy_store+0x80

 0.01% 0.32%   10us(  85us)   63us( 169us)(0.00%)      3152 99.7% 0.32%    0%  bdev_lock
 0.01% 0.32%   10us(  85us)   63us( 169us)(0.00%)      3152 99.7% 0.32%    0%    nr_blockdev_pages+0x20

 0.03% 0.01%  4.9us(  64ms)   94us(  94us)(0.00%)     19863  100% 0.01%    0%  cdev_lock
 0.03% 0.01%  4.9us(  64ms)   94us(  94us)(0.00%)     19863  100% 0.01%    0%    chrdev_open+0x40

 0.01%    0%   47us( 582us)    0us                      512  100%    0%    0%  cpe_history_lock.4
 0.01%    0%   47us( 582us)    0us                      512  100%    0%    0%    ia64_mca_cpe_int_handler+0xa0

 0.10% 0.04%  0.2us(  29ms)  6.0us(  68us)(0.00%)   2646492  100% 0.04%    0%  dcache_lock
 0.00% 0.02%  0.6us(  40us)  3.7us( 5.6us)(0.00%)      9152  100% 0.02%    0%    d_alloc+0x260
 0.00%    0%  0.4us( 8.5us)    0us                     1184  100%    0%    0%    d_delete+0x40
 0.00% 0.04%  0.1us(  26us)  1.5us( 2.3us)(0.00%)     10353  100% 0.04%    0%    d_instantiate+0x50
 0.00%    0%  5.2us(  49us)    0us                       97  100%    0%    0%    d_move+0x60
 0.01% 0.07%   20us(  23ms)   12us(  12us)(0.00%)      1341  100% 0.07%    0%    d_path+0x110
 0.00% 0.04%  0.8us(3300us)  1.2us( 2.3us)(0.00%)      9151  100% 0.04%    0%    d_rehash+0xc0
 0.00%    0%  0.7us( 3.6us)    0us                        6  100%    0%    0%    d_splice_alias+0xc0
 0.09% 0.04%  0.1us(  29ms)  6.1us(  68us)(0.00%)   2564665  100% 0.04%    0%    dput+0x50
 0.00%    0%  0.1us(  25us)    0us                    24437  100%    0%    0%    link_path_walk+0x1000
 0.00%    0%  0.1us( 9.5us)    0us                    18468  100%    0%    0%    link_path_walk+0x1ed0
 0.00%    0%  1.5us(  19us)    0us                      149  100%    0%    0%    proc_pid_unhash+0x50
 0.00%    0%  1.7us(  20us)    0us                      298  100%    0%    0%    prune_dcache+0x50
 0.00%    0%  0.0us( 0.1us)    0us                      149  100%    0%    0%    prune_dcache+0x380
 0.00%    0%  0.5us( 8.9us)    0us                      447  100%    0%    0%    select_parent+0x30
 0.01%    0%  3.1us(  78us)    0us                     6595  100%    0%    0%    sys_getcwd+0x210

 0.02% 0.05%  0.1us(  39us)  9.6us(  40us)(0.00%)    516030  100% 0.05%    0%  files_lock
 0.00% 0.07%  0.1us(  31us)  8.2us( 9.9us)(0.00%)      2812  100% 0.07%    0%    check_tty_count+0x20
 0.01% 0.06%  0.1us(  28us)  9.9us(  40us)(0.00%)    255906  100% 0.06%    0%    file_kill+0x70
 0.01% 0.05%  0.2us(  39us)  9.3us(  32us)(0.00%)    257312  100% 0.05%    0%    file_move+0x40

    0%    0%                   0us                      252  100%    0%    0%  filp_count_lock
    0%    0%                   0us                      189  100%    0%    0%    filp_ctor+0x70
    0%    0%                   0us                       63  100%    0%    0%    filp_dtor+0x40

    0% 0.01%                 5.8us( 9.8us)(0.00%)     91110  100% 0.01%    0%  ia64_ctx
    0% 0.02%                 5.0us( 7.1us)(0.00%)     29917  100% 0.02%    0%    exec_mmap+0x4f0
    0% 0.00%                 9.8us( 9.8us)(0.00%)     20988  100% 0.00%    0%    schedule+0xde0
    0%    0%                   0us                    40205  100%    0%    0%    smp_flush_tlb_mm+0x310

    0%    0%                   0us                      512  100%    0%    0%  ia64_state_log+0x60
    0%    0%                   0us                      512  100%    0%    0%    ia64_log_get+0x80

 0.00%    0%  0.6us( 1.4us)    0us                        3  100%    0%    0%  inet_peer_unused_lock
 0.00%    0%  0.6us( 1.4us)    0us                        3  100%    0%    0%    cleanup_once+0x60

 0.10% 0.09%  1.2us( 173us)   36us( 514us)(0.00%)    314539  100% 0.09%    0%  inode_lock
 0.00% 0.06%  0.4us(  44us)   19us(  92us)(0.00%)     47856  100% 0.06%    0%    __mark_inode_dirty+0xf0
 0.02% 0.22%  1.2us( 132us)   55us( 514us)(0.00%)     74226 99.8% 0.22%    0%    __sync_single_inode+0x100
 0.00%    0%   12us(  12us)    0us                        1  100%    0%    0%    __wait_on_freeing_inode+0x170
 0.00%    0%  0.1us( 8.9us)    0us                     4761  100%    0%    0%    generic_delete_inode+0x1f0
 0.00% 0.07%  1.1us(  24us)  6.1us( 7.3us)(0.00%)      4597  100% 0.07%    0%    get_new_inode_fast+0x50
 0.00% 0.15%  1.6us(  40us)   31us(  68us)(0.00%)      4597 99.8% 0.15%    0%    iget_locked+0xb0
 0.00% 0.03%  0.1us(  21us)  7.3us( 9.8us)(0.00%)      6259  100% 0.03%    0%    igrab+0x20
 0.01% 0.04%  0.3us(  72us)  8.7us(  30us)(0.00%)     91317  100% 0.04%    0%    iput+0xa0
 0.00% 0.15%  0.4us(  20us)  9.2us(  20us)(0.00%)      4710 99.9% 0.15%    0%    new_inode+0x70
 0.00%  1.2%  0.7us(  99us)  5.5us(  12us)(0.00%)       810 98.8%  1.2%    0%    sync_inodes_sb+0x140
 0.06% 0.04%  3.0us( 173us)  5.3us(  26us)(0.00%)     74701  100% 0.04%    0%    sync_sb_inodes+0x630
 0.00% 0.14%  3.0us( 107us)  0.4us( 0.4us)(0.00%)       704 99.9% 0.14%    0%    writeback_inodes+0x20

 0.09% 0.03%  9.0us(1040us)  163us( 631us)(0.00%)     37441  100% 0.03%    0%  kernel_flag
 0.02% 0.03%  4.5us( 415us)  226us( 631us)(0.00%)     19863  100% 0.03%    0%    chrdev_open+0x1e0
 0.00% 0.06%  0.3us(  20us)   61us(  85us)(0.00%)      3279  100% 0.06%    0%    de_put+0x50
 0.00%    0%  0.1us( 0.1us)    0us                      696  100%    0%    0%    linvfs_ioctl+0x140
 0.04% 0.03%   48us(1040us)   40us(  40us)(0.00%)      3429  100% 0.03%    0%    proc_lookup+0x60
 0.00%    0%   37us(  37us)    0us                        1  100%    0%    0%    schedule+0xc20
 0.00%    0%  3.8us( 224us)    0us                     2121  100%    0%    0%    sys_ioctl+0xa0
 0.01%    0%  3.5us( 139us)    0us                     6592  100%    0%    0%    sys_sysctl+0xd0
 0.01% 0.28%   26us( 266us)  150us( 290us)(0.00%)      1406 99.7% 0.28%    0%    tty_release+0x50
 0.00%    0%  257us( 706us)    0us                       54  100%    0%    0%    tty_write+0x440

    0%    0%                   0us                        7  100%    0%    0%  logbuf_lock
    0%    0%                   0us                        5  100%    0%    0%    release_console_sem+0x50
    0%    0%                   0us                        2  100%    0%    0%    vprintk+0x60

 0.01% 0.15%  0.4us(7663us)   10us(  31us)(0.00%)    110845 99.9% 0.15%    0%  mmlist_lock
 0.00% 0.04%  0.1us(  15us)  5.0us(  14us)(0.00%)     20988  100% 0.04%    0%    copy_mm+0x2a0
 0.01% 0.05%  0.8us(  24us)   15us(  29us)(0.00%)     29917  100% 0.05%    0%    exec_mmap+0x40
 0.01% 0.24%  0.3us(7663us)   10us(  31us)(0.00%)     59940 99.8% 0.24%    0%    mmput+0x30

    0%    0%                   0us                     1051  100%    0%    0%  page_uptodate_lock.1
    0%    0%                   0us                     1051  100%    0%    0%    end_buffer_async_write+0xc0

 0.00% 0.01%  0.3us(  75us)  0.8us( 0.8us)(0.00%)      9500  100% 0.01%    0%  pbd_delwrite_lock
 0.00%    0%  7.0us(  75us)    0us                      383  100%    0%    0%    pagebuf_daemon+0x200
 0.00% 0.01%  0.1us(  12us)  0.8us( 0.8us)(0.00%)      8618  100% 0.01%    0%    pagebuf_delwri_dequeue+0x30
 0.00%    0%  0.3us(  19us)    0us                      499  100%    0%    0%    pagebuf_delwri_queue+0x30

    0%    0%                   0us                      276  100%    0%    0%  pdflush_lock
    0%    0%                   0us                       92  100%    0%    0%    __pdflush+0x220
    0%    0%                   0us                       92  100%    0%    0%    __pdflush+0x320
    0%    0%                   0us                       92  100%    0%    0%    pdflush_operation+0x60

 26.8% 89.9%   73us(  13ms)   41ms(  86ms)(26.7%)   1418535 10.1% 89.9%    0%  rcu_state
 0.01% 16.5%   17us(1146us) 9116us(  66ms)(0.00%)      2790 83.5% 16.5%    0%    __rcu_process_callbacks+0x260
 26.8% 90.1%   73us(  13ms)   41ms(  86ms)(26.7%)   1415745  9.9% 90.1%    0%    rcu_check_quiescent_state+0xf0

 0.00%    0%  0.9us( 6.9us)    0us                       54  100%    0%    0%  redirect_lock
 0.00%    0%  0.9us( 6.9us)    0us                       54  100%    0%    0%    redirected_tty_write+0x30

 0.00%    0%  3.9us(  46us)    0us                       97  100%    0%    0%  rename_lock+0x4
 0.00%    0%  3.9us(  46us)    0us                       97  100%    0%    0%    d_move+0x80

    0%  3.8%                  78us( 259us)(0.00%)       629 96.2%  3.8%    0%  sal_console_port+0x40
    0%    0%                   0us                        2  100%    0%    0%    sn_sal_console_write+0x380
    0%  7.9%                  78us( 259us)(0.00%)       303 92.1%  7.9%    0%    sn_sal_interrupt+0x200
    0%    0%                   0us                      108  100%    0%    0%    uart_put_char+0xa0
    0%    0%                   0us                      162  100%    0%    0%    uart_start+0x50
    0%    0%                   0us                       54  100%    0%    0%    uart_write+0x400

 0.00%    0%  0.9us( 154us)    0us                     3471  100%    0%    0%  sb_lock
 0.00%    0%  0.6us(  51us)    0us                      855  100%    0%    0%    get_super_to_sync+0x30
 0.00%    0%  2.0us( 6.7us)    0us                       15  100%    0%    0%    get_super_to_sync+0x30
 0.00%    0%  0.1us(  16us)    0us                      903  100%    0%    0%    put_super+0x20
 0.00%    0%  6.6us(  92us)    0us                       45  100%    0%    0%    set_sb_syncing+0x20
 0.00%    0%  1.7us(  10us)    0us                       30  100%    0%    0%    sync_filesystems+0x70
 0.00%    0%  1.6us(  46us)    0us                       60  100%    0%    0%    sync_filesystems+0x170
 0.00%    0%  2.5us(  12us)    0us                      155  100%    0%    0%    sync_supers+0x30
 0.00%    0%  0.7us(  36us)    0us                      704  100%    0%    0%    writeback_inodes+0x40
 0.00%    0%  1.5us( 154us)    0us                      704  100%    0%    0%    writeback_inodes+0x210

 0.00%    0%  0.4us(  18us)    0us                     3152  100%    0%    0%  swaplock
 0.00%    0%  0.4us(  18us)    0us                     3152  100%    0%    0%    si_swapinfo+0x20

 0.00%    0%  0.1us(  22us)    0us                    30023  100%    0%    0%  uidhash_lock
 0.00%    0%  0.1us(  22us)    0us                    30023  100%    0%    0%    free_uid+0x30

 0.00% 0.04%  3.1us(  41us)   11us(  13us)(0.00%)      4593  100% 0.04%    0%  vfsmount_lock
 0.00%    0%  0.1us(  13us)    0us                     1192  100%    0%    0%    __d_path+0x2b0
 0.00% 0.06%  4.2us(  41us)   11us(  13us)(0.00%)      3401  100% 0.06%    0%    lookup_mnt+0x80

 0.00%    0%  0.5us( 9.6us)    0us                     1318  100%    0%    0%  vnumber_lock
 0.00%    0%  0.5us( 9.6us)    0us                     1318  100%    0%    0%    vn_initialize+0xd0

 0.69%    0%  6.7us(1939us)    0us                   395897  100%    0%    0%  xtime_lock+0x4
 0.69%    0%  6.7us(1939us)    0us                   395897  100%    0%    0%    timer_interrupt+0x330

 0.07% 0.01%  0.2us(  55ms)  8.0us( 273us)(0.00%)   1705215  100% 0.01%    0%  __d_lookup+0x190
    0% 14.2%                  14us(  33us)(0.00%)       353 85.8% 14.2%    0%  __down+0x200
    0%  3.0%                 4.1us( 8.4us)(0.00%)       460 97.0%  3.0%    0%  __down+0xc0
    0% 0.94%                  16us(  98us)(0.00%)     12398 99.1% 0.94%    0%  __down_trylock+0x40
 0.00%    0%  0.3us(  18us)    0us                    30023  100%    0%    0%  __exit_signal+0x80
 0.00%    0%  0.1us(  23us)    0us                   115382  100%    0%    0%  __mod_timer+0x120
    0%    0%                   0us                   115382  100%    0%    0%  __mod_timer+0xa0
    0% 0.07%                 2.6us(  53us)(0.00%)   1174525  100% 0.07%    0%  __page_cache_release+0x70
    0% 0.05%                  21us(  21us)(0.00%)      1968  100% 0.05%    0%  __pagevec_lru_add+0xe0
    0% 0.09%                 8.9us(  66us)(0.00%)    195389  100% 0.09%    0%  __pagevec_lru_add_active+0xe0
 0.01%    0%  0.1us(  21us)    0us                   203620  100%    0%    0%  __pmd_alloc+0x60
    0%    0%                   0us                    97005  100%    0%    0%  __queue_work+0x30
    0%    0%                   0us                     2050  100%    0%    0%  __set_page_dirty_nobuffers+0xd0
    0% 0.02%                 5.9us(  13us)(0.00%)    228098  100% 0.02%    0%  __wake_up+0x30
    0% 0.00%                 6.5us( 6.5us)(0.00%)     30105  100% 0.00%    0%  __wake_up_sync+0x50
 0.01%    0%  0.9us(  54us)    0us                    49332  100%    0%    0%  _pagebuf_find+0xd0
    0%    0%                   0us                    25797  100%    0%    0%  activate_page+0x70
    0%    0%                   0us                       11  100%    0%    0%  add_entropy_words+0xc0
    0%    0%                   0us                     2284  100%    0%    0%  add_to_page_cache+0x80
    0% 0.00%                 3.3us( 3.6us)(0.00%)    146682  100% 0.00%    0%  add_wait_queue+0x50
    0%    0%                   0us                       46  100%    0%    0%  add_wait_queue_exclusive+0x50
 0.00%    0%  0.1us(  23us)    0us                   264078  100%    0%    0%  anon_vma_link+0x30
 0.05%    0%  0.6us(  58ms)    0us                   281091  100%    0%    0%  anon_vma_prepare+0xc0
 0.01% 0.09%  0.1us(  34us)   14us(  48us)(0.00%)    562320  100% 0.09%    0%  anon_vma_unlink+0x30
    0% 0.02%                  10us(  27us)(0.00%)     30023  100% 0.02%    0%  buffered_rmqueue+0x3f0
 0.02% 0.03%  6.8us( 195us)   15us(  31us)(0.00%)     10608  100% 0.03%    0%  cache_alloc_refill+0xb0
 0.00% 0.04%  6.5us(  48us)  9.9us( 9.9us)(0.00%)      2544  100% 0.04%    0%  cache_flusharray+0x30
 0.00%    0%  0.1us(  10us)    0us                      646  100%    0%    0%  cache_grow+0x260
 0.00%    0%  0.9us(  12us)    0us                      646  100%    0%    0%  cache_grow+0xf0
    0% 0.00%                  12us(  67us)(0.00%)   9825514  100% 0.00%    0%  cache_reap+0x230
    0%    0%                   0us                      572  100%    0%    0%  cache_reap+0x430
 0.01%    0%  1.0us(  39us)    0us                    42316  100%    0%    0%  change_protection+0x90
    0%    0%                   0us                    29157  100%    0%    0%  complete+0x40
 0.00%    0%  0.4us(  49us)    0us                    29917  100%    0%    0%  compute_creds+0x20
 0.02%    0%  2.8us(8472us)    0us                    30023  100%    0%    0%  copy_files+0x1c0
 0.00%    0%  0.1us(  16us)    0us                    17408  100%    0%    0%  copy_files+0x200
 0.05%    0%   10us(  61ms)    0us                    17408  100%    0%    0%  copy_files+0x2c0
 0.01% 0.01%  0.1us(  30us) 1696us(  29ms)(0.00%)    362934  100% 0.01%    0%  copy_mm+0x5a0
 0.77%    0%  5.9us(  67ms)    0us                   506486  100%    0%    0%  copy_mm+0x5e0
  1.1%    0%  9.1us(  67ms)    0us                   485498  100%    0%    0%  copy_page_range+0x2a0
 0.00%    0%  0.5us(  23us)    0us                     2050  100%    0%    0%  create_empty_buffers+0xa0
 0.00%    0%  0.1us( 3.1us)    0us                     1184  100%    0%    0%  d_delete+0x50
 0.00%    0%  2.5us(  19us)    0us                       97  100%    0%    0%  d_move+0x100
 0.00%    0%  3.0us(  19us)    0us                       44  100%    0%    0%  d_move+0x560
 0.00%    0%  2.7us(  17us)    0us                       53  100%    0%    0%  d_move+0xe0
 0.00%    0%  0.1us( 4.7us)    0us                     9151  100%    0%    0%  d_rehash+0xd0
    0% 0.00%                 2.0us( 2.0us)(0.00%)     25856  100% 0.00%    0%  del_timer+0x80
 0.02% 0.02%  0.5us(  46ms)  6.0us(  20us)(0.00%)    179791  100% 0.02%    0%  deny_write_access+0x40
 0.00%    0%  0.1us(  20us)    0us                    46631  100%    0%    0%  dnotify_flush+0xa0
 0.02% 0.02%  0.3us(  92us)  7.8us(  43us)(0.00%)    330662  100% 0.02%    0%  dnotify_parent+0x60
 0.00%    0%  0.6us(  23us)    0us                     9194  100%    0%    0%  do_IRQ+0x1d0
 0.00%    0%  0.4us(  23us)    0us                     9194  100%    0%    0%  do_IRQ+0x2b0
 0.03%    0%  0.3us( 105us)    0us                   384053  100%    0%    0%  do_anonymous_page+0x270
 0.00%    0%  0.1us(  16us)    0us                    30023  100%    0%    0%  do_exit+0x3d0
 0.00%    0%  0.0us( 9.4us)    0us                    30023  100%    0%    0%  do_exit+0x460
 0.00%    0%  0.1us(  21us)    0us                    30023  100%    0%    0%  do_exit+0x4b0
 0.00%    0%  0.0us( 2.5us)    0us                    30023  100%    0%    0%  do_exit+0x6d0
 0.00%    0%  0.1us( 8.6us)    0us                      933  100%    0%    0%  do_fcntl+0xb0
 0.12%    0%  3.0us(  50ms)    0us                   153060  100%    0%    0%  do_munmap+0x220
 0.17%    0%  0.3us(  31ms)    0us                  2399811  100%    0%    0%  do_no_page+0x220
    0% 0.02%                  22us(  52us)(0.00%)     30023  100% 0.02%    0%  do_notify_parent+0x2e0
    0% 0.05%                 8.1us( 156us)(0.00%)    158742  100% 0.05%    0%  do_page_cache_readahead+0x140
    0%    0%                   0us                      296  100%    0%    0%  do_page_cache_readahead+0x270
    0% 0.00%                 3.7us( 4.6us)(0.00%)    283293  100% 0.00%    0%  do_sigaction+0x110
    0%    0%                   0us                    36528  100%    0%    0%  do_sigaction+0x2a0
 0.11%    0%  0.8us(  65ms)    0us                   497135  100%    0%    0%  do_wp_page+0x2d0
 0.01%  2.3%  1.3us( 242us)    0us                    26957 97.7%    0%  2.3%  double_lock_balance+0x20
 0.00% 85.4%   26us( 188us)  445us(6065us)(0.00%)       321 14.6% 85.4%    0%  double_lock_balance+0x80
 0.00% 43.9%   10us( 534us)  144us(3411us)(0.00%)       626 56.1% 43.9%    0%  double_lock_balance+0xa0
 0.00%    0%  1.0us( 575us)    0us                    12101  100%    0%    0%  double_rq_lock+0x40
 0.00% 0.13%  0.1us( 4.4us)  270us( 574us)(0.00%)     20122 99.9% 0.13%    0%  double_rq_lock+0x60
 0.00% 0.25%  0.3us(  25us)  293us( 619us)(0.00%)      8021 99.8% 0.25%    0%  double_rq_lock+0x90
 0.02% 0.01%  0.2us(  29ms)   10us(  20us)(0.00%)    412261  100% 0.01%    0%  dput+0xb0
 0.00%    0%  0.8us(  34us)    0us                      373  100%    0%    0%  dupfd+0x30
 0.03%    0%  4.1us(  64ms)    0us                    29917  100%    0%    0%  exec_mmap+0x110
  6.7%    0%  512us(  64ms)    0us                    50905  100%    0%    0%  exit_mmap+0x50
 0.00%    0%  0.3us( 101us)    0us                    17660  100%    0%    0%  expand_fd_array+0x130
 0.00%    0%  0.1us( 4.4us)    0us                      252  100%    0%    0%  expand_fd_array+0x240
 0.00%    0%  1.9us(  23us)    0us                      925  100%    0%    0%  expand_stack+0x60
    0%    0%                   0us                        2  100%    0%    0%  extract_entropy+0xc0
 0.00%    0%  0.1us(  15us)    0us                   234897  100%    0%    0%  fd_install+0x30
 0.01%    0%  0.1us(  38us)    0us                   438553  100%    0%    0%  fget+0x30
    0% 0.11%                 7.7us( 347us)(0.00%)   2673613 99.9% 0.11%    0%  find_get_page+0x40
    0%    0%                   0us                     4235  100%    0%    0%  find_get_pages+0x40
    0% 0.00%                 4.7us( 4.7us)(0.00%)    128465  100% 0.00%    0%  find_get_pages_tag+0x40
    0% 0.00%                 1.3us( 1.3us)(0.00%)     47999  100% 0.00%    0%  find_lock_page+0x40
    0%    0%                   0us                      204  100%    0%    0%  find_trylock_page+0x40
    0% 0.05%                 6.9us(  15us)(0.00%)      8255  100% 0.05%    0%  finish_wait+0x90
 0.00%    0%  0.2us(  39us)    0us                    38641  100%    0%    0%  flush_old_exec+0x4f0
    0% 0.09%                 6.4us(  45us)(0.00%)     80146  100% 0.09%    0%  force_page_cache_readahead+0x170
    0% 0.09%                 8.7us(  54us)(0.00%)    245613  100% 0.09%    0%  free_pages_bulk+0x90
    0% 0.19%                  11us(  63us)(0.00%)     27877 99.8% 0.19%    0%  get_signal_to_deliver+0x60
 0.02%    0%  0.3us(  70us)    0us                   281834  100%    0%    0%  get_unused_fd+0x40
 0.00%    0%  0.1us( 2.8us)    0us                    21471  100%    0%    0%  get_write_access+0x30
 0.24%    0%  0.3us(  60ms)    0us                  3599784  100%    0%    0%  handle_mm_fault+0x160
    0%    0%                   0us                    27877  100%    0%    0%  handle_signal+0x100
    0%    0%                   0us                    27877  100%    0%    0%  ia64_rt_sigreturn+0x1b0
 0.00%    0%  0.2us(  22us)    0us                    29917  100%    0%    0%  install_arg_page+0xc0
    0%    0%                   0us                    30038  100%    0%    0%  k_getrusage+0x530
    0%    0%                   0us                      356  100%    0%    0%  k_getrusage+0xd0
 0.00%    0%  0.1us( 0.5us)    0us                      696  100%    0%    0%  linvfs_ioctl+0xe0
 0.00%  9.0%  3.6us(  73us)  314us(3478us)(0.00%)       659 91.0%  9.0%    0%  load_balance+0x170
  103% 0.00%  9.7us(4462us)   17us(  99us)(0.00%)  41140382  100% 0.00%    0%  load_balance+0x30
    0%    0%                   0us                    74225  100%    0%    0%  mapping_tagged+0x40
 0.00% 0.03%  0.3us(1546us)   89us( 310us)(0.00%)     40373  100% 0.03%    0%  migration_thread+0x130
 0.00%    0%  1.7us(  19us)    0us                      149  100%    0%    0%  mounts_open+0xa0
 0.00% 0.00%  0.1us(  30us)   25us(  25us)(0.00%)     61530  100% 0.00%    0%  pagebuf_rele+0x60
 0.00%    0%  0.1us( 0.9us)    0us                      149  100%    0%    0%  pid_base_iput+0x30
    0%    0%                   0us                     4650  100%    0%    0%  prepare_to_wait+0x60
    0% 0.01%                 3.8us( 3.8us)(0.00%)      8336  100% 0.01%    0%  prepare_to_wait_exclusive+0x60
 0.00%    0%  0.1us( 6.0us)    0us                      149  100%    0%    0%  proc_pid_lookup+0x1e0
 0.00%    0%  0.9us(  16us)    0us                      298  100%    0%    0%  prune_dcache+0x130
 0.45%    0%  6.8us(  62ms)    0us                   254542  100%    0%    0%  pte_alloc_map+0x140
 0.00%    0%  0.1us( 6.1us)    0us                    47310  100%    0%    0%  put_unused_fd+0x30
    0%    0%                   0us                     6546  100%    0%    0%  qla2x00_timer+0x2c0
    0% 0.22%                  13us(  21us)(0.00%)     17605 99.8% 0.22%    0%  release_pages+0x180
 0.17%    0%   22us(  66ms)    0us                    30023  100%    0%    0%  release_task+0x60
    0%    0%                   0us                     1992  100%    0%    0%  remove_from_page_cache+0x70
 0.05% 0.21%  0.3us(  60us)  9.7us(  84us)(0.00%)    748151 99.8% 0.21%    0%  remove_vm_struct+0x50
    0% 0.00%                  27us(  27us)(0.00%)    146728  100% 0.00%    0%  remove_wait_queue+0x30
    0% 0.09%                 6.9us(  41us)(0.00%)    221875  100% 0.09%    0%  rmqueue_bulk+0x40
 0.00%    0%  0.5us( 2.7us)    0us                        6  100%    0%    0%  rt_check_expire+0xe0
    0%    0%                   0us                    89527  100%    0%    0%  run_timer_softirq+0x2c0
    0% 0.00%                 6.7us(  16us)(0.00%) 145797886  100% 0.00%    0%  run_timer_softirq+0xb0
 0.11%  1.3%  1.1us(1286us)  2.4us( 251us)(0.00%)    369207 98.7%  1.3%    0%  schedule+0x260
    0%    0%                   0us                   363195  100%    0%    0%  schedule+0x680
 0.03% 0.03%  0.4us( 105us)   27us( 296us)(0.00%)    350681  100% 0.03%    0%  scheduler_tick+0x520
 0.00%    0%  0.1us( 6.8us)    0us                    40135  100%    0%    0%  set_close_on_exec+0x30
 0.00%    0%  0.2us(  20us)    0us                    29917  100%    0%    0%  set_task_comm+0x20
    0% 0.07%                  23us(  61us)(0.00%)     18710  100% 0.07%    0%  sigprocmask+0x50
 0.01%    0%  0.2us(  12ms)    0us                   286514  100%    0%    0%  sys_close+0x30
 0.00%    0%  0.2us(  48us)    0us                    23261  100%    0%    0%  sys_dup2+0x50
 0.00%    0%  0.2us(  19us)    0us                      149  100%    0%    0%  task_dumpable+0x20
    0% 0.52%                  24us( 846us)(0.00%)    290102 99.5% 0.52%    0%  task_rq_lock+0xa0
    0%    0%                   0us                     4285  100%    0%    0%  test_clear_page_dirty+0x90
    0%    0%                   0us                      301  100%    0%    0%  test_clear_page_writeback+0x90
    0%    0%                   0us                      301  100%    0%    0%  test_set_page_writeback+0x90
 0.00%    0%  7.6us(  12ms)    0us                     1992  100%    0%    0%  try_to_free_buffers+0x90
 0.04% 0.09%  1.1us(  82us)   11us(  79us)(0.00%)    129318  100% 0.09%    0%  vma_adjust+0x140
 0.00%    0%  0.3us(  47us)    0us                    67196  100%    0%    0%  vma_adjust+0x2d0
 0.10% 0.06%  1.5us(  57ms)   11us(  45us)(0.00%)    255899  100% 0.06%    0%  vma_link+0x60
 0.00%    0%  0.4us(  62us)    0us                     6259  100%    0%    0%  vn_hold+0x70
 0.00%    0%  0.5us(  19us)    0us                     1184  100%    0%    0%  vn_purge+0x30
 0.00%    0%  0.1us( 4.1us)    0us                     1184  100%    0%    0%  vn_reclaim+0x100
 0.00%    0%  0.1us( 6.1us)    0us                     1184  100%    0%    0%  vn_rele+0x130
 0.00%    0%  0.1us( 5.5us)    0us                     1184  100%    0%    0%  vn_rele+0x70
 0.00%    0%  0.0us( 1.1us)    0us                     5046  100%    0%    0%  vn_revalidate+0xf0
 0.00%    0%  0.1us( 0.1us)    0us                     1184  100%    0%    0%  vn_wakeup+0x20
    0%    0%                   0us                    29157  100%    0%    0%  wait_for_completion+0x1d0
    0%    0%                   0us                    29157  100%    0%    0%  wait_for_completion+0x50
    0%    0%                   0us                    30023  100%    0%    0%  wait_task_zombie+0x170
    0%    0%                   0us                    95968  100%    0%    0%  worker_thread+0x2a0
    0%    0%                   0us                    97005  100%    0%    0%  worker_thread+0x430
 0.00% 0.72%  1.0us(  12us)  2.7us( 2.7us)(0.00%)       138 99.3% 0.72%    0%  xfs_alloc_clear_busy+0x60
 0.00%    0%  1.4us(  17us)    0us                      139  100%    0%    0%  xfs_alloc_mark_busy+0x60
 0.00%    0%  0.3us( 5.1us)    0us                      145  100%    0%    0%  xfs_alloc_search_busy+0x60
 0.00%    0%  0.9us(  21us)    0us                      144  100%    0%    0%  xfs_iextract+0xf0
 0.16% 0.01%   73us(2302us)  432us( 432us)(0.00%)      8249  100% 0.01%    0%  xfs_iflush+0x3c0
 0.00%    0%  3.4us(  64us)    0us                      309  100%    0%    0%  xfs_iget_core+0x430
 0.00%    0%  0.2us( 3.4us)    0us                       97  100%    0%    0%  xfs_map_blocks+0xf0

- - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RWLOCK READS   HOLD    MAX  RDR BUSY PERIOD      WAIT
  UTIL  CON    MEAN   RDRS   MEAN(  MAX )   MEAN(  MAX )( %CPU)     TOTAL NOWAIT SPIN  NAME

       0.06%                                39us(1223us)(0.00%)    904473  100% 0.06%  *TOTAL*

 0.00%    0%   0.3us     2  0.3us(  44us)    0us                    30495  100%    0%  binfmt_lock
          0%                                 0us                    30206  100%    0%    search_binary_handler+0x80
          0%                                 0us                      289  100%    0%    search_binary_handler+0x420

 0.00%    0%  19.4us     1   19us( 186us)    0us                       97  100%    0%  file_systems_lock
          0%                                 0us                       97  100%    0%    get_filesystem_list+0x30

 0.12% 0.47%   4.2us     2  4.2us(  71ms)   39us(1223us)(0.00%)    114236 99.5% 0.47%  tasklist_lock
       0.04%                               113us(1223us)(0.00%)     36528  100% 0.04%    do_sigaction+0x260
       0.67%                                37us( 165us)(0.00%)     77182 99.3% 0.67%    do_wait+0x160
          0%                                 0us                      371  100%    0%    getrusage+0x40
          0%                                 0us                      149  100%    0%    proc_pid_lookup+0x80
          0%                                 0us                        6  100%    0%    session_of_pgrp+0x20

 21.1%    0% 238.3us     3   26ms(40450ms)    0us                     3152  100%    0%  vmlist_lock
          0%                                 0us                     3152  100%    0%    get_vmalloc_info+0x40

          0%                                 0us                    30023  100%    0%  copy_process+0x17d0
          0%                                 0us                     1341  100%    0%  d_path+0x30
          0%                                 0us                    18468  100%    0%  link_path_walk+0x1e50
          0%                                 0us                    24437  100%    0%  link_path_walk+0xf80
          0%                                 0us                   673103  100%    0%  path_lookup+0x60
          0%                                 0us                     6595  100%    0%  sys_getcwd+0x80
          0%                                 0us                     1318  100%    0%  xfs_iget_core+0x60
          0%                                 0us                     1208  100%    0%  xfs_inode_incore+0x60

- - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RWLOCK WRITES     HOLD           WAIT (ALL)           WAIT (WW) 
  UTIL  CON    MEAN(  MAX )   MEAN(  MAX )( %CPU)   MEAN(  MAX )     TOTAL NOWAIT SPIN(  WW )  NAME

       0.11%  0.0us( 144us)  352us(  37ms)(0.00%)   63us( 636us)    144465 99.9% 0.00%(0.11%)  *TOTAL*

 0.00%    0%  0.1us( 1.0us)    0us                   0us                13  100%    0%(   0%)  [0xe000003036799a40]
 0.00%    0%  0.1us( 1.0us)    0us                   0us                13  100%    0%(   0%)    neigh_periodic_timer+0x140

 0.00%    0%   14us( 144us)    0us                   0us                13  100%    0%(   0%)  arp_tbl+0x17c
 0.00%    0%   14us( 144us)    0us                   0us                13  100%    0%(   0%)    neigh_periodic_timer+0x40

    0% 0.02%                  18us(  12us)(0.00%)  8.9us(  12us)     10230  100%    0%(0.02%)  fasync_lock
    0% 0.02%                  18us(  12us)(0.00%)  8.9us(  12us)     10230  100%    0%(0.02%)    fasync_helper+0x80

 0.00%    0%   56us(  56us)    0us                   0us                 1  100%    0%(   0%)  ipfrag_lock
 0.00%    0%   56us(  56us)    0us                   0us                 1  100%    0%(   0%)    ipfrag_secret_rebuild+0x40

    0% 0.18%                 356us(  37ms)(0.00%)   64us( 636us)     90073 99.8% 0.01%(0.17%)  tasklist_lock
    0% 0.02%                6260us(  37ms)(0.00%)   42us( 132us)     30023  100% 0.00%(0.02%)    copy_process+0xd40
    0% 0.50%                 128us( 636us)(0.00%)   66us( 636us)     30023 99.5% 0.01%(0.49%)    exit_notify+0xd0
    0% 0.01%                  43us(  32us)(0.00%)   22us(  32us)     30023  100%    0%(0.01%)    release_task+0xb0
    0%    0%                   0us                   0us                 4  100%    0%(   0%)    sys_setpgid+0x90

 0.00%    0%  0.1us(  24us)    0us                   0us             43567  100%    0%(   0%)  set_fs_pwd+0x20
 0.00%    0%  1.4us(  37us)    0us                   0us               144  100%    0%(   0%)  xfs_finish_reclaim+0x30
 0.00%    0%  0.1us( 0.2us)    0us                   0us               144  100%    0%(   0%)  xfs_iextract+0x30
 0.00%    0%  0.3us( 7.6us)    0us                   0us               280  100%    0%(   0%)  xfs_iget_core+0x230
_________________________________________________________________________________________________________________________
Number of read locks found=4

[-- Attachment #3: lockstat-2.6.9-rc2-rcu.txt --]
[-- Type: text/plain, Size: 41879 bytes --]

___________________________________________________________________________________________
System: Linux ascender 2.6.9-rc2 #2 SMP Tue Sep 14 11:08:32 CDT 2004 ia64
Total counts

All (512) CPUs

Start time: Tue Sep 14 12:18:56 2004
End   time: Tue Sep 14 12:24:11 2004
Delta Time: 274.27 sec.
Hash table slots in use:      347.
Global read lock slots in use: 771.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
SPINLOCKS         HOLD            WAIT
  UTIL  CON    MEAN(  MAX )   MEAN(  MAX )(% CPU)     TOTAL NOWAIT SPIN RJECT  NAME

       0.07%  3.2us(  14ms) 2392us(  13ms)(0.29%) 240153544  100% 0.07% 0.00%  *TOTAL*

 0.00%    0%  0.2us( 2.0us)    0us                       15  100%    0%    0%  [0xe000003060e71e40]
 0.00%    0%  0.2us( 2.0us)    0us                       15  100%    0%    0%    unmap_mapping_range+0xc0

 0.00% 0.00%  0.2us(  23us)  0.9us( 0.9us)(0.00%)     47023  100% 0.00%    0%  [0xe00000b003746cd0]
 0.00%    0%  0.2us( 0.2us)    0us                        1  100%    0%    0%    xfs_log_move_tail+0x310
 0.00%    0%  0.5us(  23us)    0us                       79  100%    0%    0%    xfs_log_need_covered+0x100
 0.00%    0%  0.1us( 3.8us)    0us                     5080  100%    0%    0%    xfs_log_notify+0x40
 0.00%    0%  4.2us(  11us)    0us                      240  100%    0%    0%    xlog_state_do_callback+0x40
 0.00%    0%  0.0us( 0.1us)    0us                      240  100%    0%    0%    xlog_state_do_callback+0x210
 0.00% 0.42%  2.7us(  13us)  0.9us( 0.9us)(0.00%)       240 99.6% 0.42%    0%    xlog_state_do_callback+0x300
 0.00%    0%  0.2us( 0.2us)    0us                      241  100%    0%    0%    xlog_state_done_syncing+0x40
 0.00%    0%  0.3us(  12us)    0us                    10307  100%    0%    0%    xlog_state_get_iclog_space+0x30
 0.00%    0%  0.1us( 3.5us)    0us                     4804  100%    0%    0%    xlog_state_put_ticket+0x20
 0.00%    0%  0.1us( 4.4us)    0us                    10400  100%    0%    0%    xlog_state_release_iclog+0x50
 0.00%    0%  1.2us( 5.6us)    0us                      128  100%    0%    0%    xlog_state_sync_all+0x30
 0.00%    0%  0.1us( 2.4us)    0us                       55  100%    0%    0%    xlog_state_sync_all+0x440
 0.00%    0%  3.3us(  15us)    0us                       46  100%    0%    0%    xlog_state_sync+0x40
 0.00%    0%  1.1us( 5.5us)    0us                       38  100%    0%    0%    xlog_state_sync+0x3f0
 0.00%    0%  0.1us( 0.1us)    0us                       15  100%    0%    0%    xlog_state_want_sync+0x20
 0.00%    0%  0.4us(  18us)    0us                     4804  100%    0%    0%    xlog_ticket_get+0x50
 0.00%    0%  0.1us( 0.1us)    0us                    10160  100%    0%    0%    xlog_write+0x5f0
 0.00%    0%  0.1us( 0.5us)    0us                       15  100%    0%    0%    xlog_write+0x6c0
 0.00%    0%  0.1us( 0.1us)    0us                      130  100%    0%    0%    xlog_write+0x800

 0.00%    0%  0.1us(  25us)    0us                    34870  100%    0%    0%  [0xe00000b003746d70]
 0.00%    0%  0.1us(  10us)    0us                     5952  100%    0%    0%    xfs_log_move_tail+0x70
 0.00%    0%  0.0us(  12us)    0us                    10400  100%    0%    0%    xlog_assign_tail_lsn+0x50
 0.00%    0%  0.4us(  25us)    0us                     4804  100%    0%    0%    xlog_grant_log_space+0x40
 0.00%    0%  0.1us( 5.6us)    0us                     6680  100%    0%    0%    xlog_grant_push_ail+0x50
 0.00%    0%  0.1us( 0.4us)    0us                     1876  100%    0%    0%    xlog_regrant_reserve_log_space+0x50
 0.00%    0%  1.1us( 3.8us)    0us                      114  100%    0%    0%    xlog_regrant_write_log_space+0x90
 0.00%    0%  0.1us( 0.6us)    0us                      240  100%    0%    0%    xlog_state_do_callback+0x1c0
 0.00%    0%  0.1us( 4.4us)    0us                     4804  100%    0%    0%    xlog_ungrant_log_space+0x50

    0%    0%                   0us                    26867  100%    0%    0%  [0xe00005b00387a080]
    0%    0%                   0us                    26867  100%    0%    0%    sn_dma_flush+0x1e0

 0.00% 0.01%  0.1us( 4.6us)  2.4us( 2.6us)(0.00%)     32086  100% 0.01%    0%  [0xe0000c3003ea3024]
 0.00%    0%  0.2us( 1.5us)    0us                      435  100%    0%    0%    xfs_buf_iodone+0x30
 0.00%    0%  0.1us( 2.7us)    0us                       48  100%    0%    0%    xfs_buf_item_unpin+0x160
 0.00%    0%  0.0us( 0.1us)    0us                      161  100%    0%    0%    xfs_efi_item_unpin+0x30
 0.00%    0%  0.1us( 1.2us)    0us                      161  100%    0%    0%    xfs_efi_release+0x30
 0.00%    0%  0.1us( 1.4us)    0us                      595  100%    0%    0%    xfs_iflush_done+0xc0
 0.00%    0%  0.1us( 4.6us)    0us                      605  100%    0%    0%    xfs_iflush_int+0x430
 0.00%    0%  0.1us( 2.1us)    0us                    19681  100%    0%    0%    xfs_trans_chunk_committed+0x210
 0.00% 0.03%  0.1us( 3.9us)  2.4us( 2.6us)(0.00%)     10400  100% 0.03%    0%    xfs_trans_tail_ail+0x20

 0.00%    0%  0.2us(  11us)    0us                    14069  100%    0%    0%  [0xe0000c3003ea3110]
 0.00%    0%  0.2us(  11us)    0us                    10123  100%    0%    0%    xfs_mod_incore_sb+0x20
 0.00%    0%  0.1us( 3.9us)    0us                     3946  100%    0%    0%    xfs_mod_incore_sb_batch+0x30

    0%    0%                   0us                    26866  100%    0%    0%  [0xe0000cb07b91a018]
    0%    0%                   0us                    26866  100%    0%    0%    scsi_put_command+0xe0

 0.16% 0.04%  3.2us( 632us)  5.6us(  31us)(0.00%)    134334  100% 0.04%    0%  [0xe0000cb07b91a040]
 0.15% 0.01%   15us( 632us)  5.9us( 7.0us)(0.00%)     26867  100% 0.01%    0%    qla1280_intr_handler+0x30
 0.01% 0.04%  0.9us(  25us)  2.0us( 2.7us)(0.00%)     26867  100% 0.04%    0%    scsi_device_unbusy+0x50
    0% 0.04%                 2.6us( 3.4us)(0.00%)     26867  100% 0.04%    0%    scsi_dispatch_cmd+0x340
    0% 0.09%                 8.9us(  31us)(0.00%)     26867  100% 0.09%    0%    scsi_request_fn+0x2d0
    0%    0%                   0us                    26866  100%    0%    0%    scsi_run_queue+0xa0

 0.05% 0.14%  0.3us(  76us)  6.1us(  68us)(0.00%)    426645 99.9% 0.14%    0%  [0xe00011307be47034]
    0% 0.13%                 5.4us(  22us)(0.00%)     26015 99.9% 0.13%    0%    __cfq_get_queue+0x1f0
    0% 0.27%                 6.7us(  68us)(0.00%)     55197 99.7% 0.27%    0%    __make_request+0x150
 0.00%    0%  3.8us( 3.8us)    0us                        1  100%    0%    0%    blk_insert_request+0x80
 0.00% 0.04%  0.0us(  69us)  5.6us(  16us)(0.00%)     26866  100% 0.04%    0%    blk_run_queue+0x40
    0% 0.17%                 6.7us(  30us)(0.00%)     52881 99.8% 0.17%    0%    cfq_get_queue+0x50
 0.05% 0.14%  2.7us(  76us)  7.1us(  30us)(0.00%)     53331 99.9% 0.14%    0%    generic_unplug_device+0x40
    0% 0.17%                 4.7us(  18us)(0.00%)     52881 99.8% 0.17%    0%    get_request+0x80
    0% 0.12%                 7.9us(  56us)(0.00%)     26015 99.9% 0.12%    0%    get_request+0x4d0
    0% 0.02%                 2.6us( 5.0us)(0.00%)     26867  100% 0.02%    0%    scsi_device_unbusy+0xb0
    0% 0.02%                 7.3us(  19us)(0.00%)     26866  100% 0.02%    0%    scsi_end_request+0x160
 0.00% 0.36%  0.0us(  49us)  5.2us(  19us)(0.00%)     26867 99.6% 0.36%    0%    scsi_request_fn+0x520
    0% 0.03%                 4.7us( 8.7us)(0.00%)     52858  100% 0.03%    0%    scsi_request_fn+0x5b0

 0.00%    0%  0.0us( 0.8us)    0us                    53732  100%    0%    0%  [0xe00011307be47038]
    0%    0%                   0us                    26866  100%    0%    0%    scsi_get_command+0x110
 0.00%    0%  0.1us( 0.8us)    0us                    26866  100%    0%    0%    scsi_put_command+0x70

 0.00%    0%  0.2us( 6.1us)    0us                       63  100%    0%    0%  [0xe0001330032bb504]
 0.00%    0%  0.2us( 6.1us)    0us                       63  100%    0%    0%    do_select+0x60

    0%    0%                   0us                      192  100%    0%    0%  [0xe00040b003d38380]
    0%    0%                   0us                      130  100%    0%    0%    qla2x00_intr_handler+0x70
    0%    0%                   0us                       62  100%    0%    0%    qla2x00_mailbox_command+0xe0

    0%    0%                   0us                      134  100%    0%    0%  [0xe00040b003d3a480]
    0%    0%                   0us                      130  100%    0%    0%    qla2x00_next+0x80
    0%    0%                   0us                        2  100%    0%    0%    qla2x00_restart_queues+0x120
    0%    0%                   0us                        2  100%    0%    0%    qla2x00_restart_queues+0x390

    0%    0%                   0us                      186  100%    0%    0%  [0xe00040b003d3c478]
    0%    0%                   0us                       62  100%    0%    0%    qla2x00_intr_handler+0x4e0
    0%    0%                   0us                       62  100%    0%    0%    qla2x00_mailbox_command+0x9c0
    0%    0%                   0us                       62  100%    0%    0%    qla2x00_mailbox_command+0xba0

    0%    0%                   0us                        8  100%    0%    0%  [0xe00055b07bd2fe18]
    0%    0%                   0us                        4  100%    0%    0%    __down_interruptible+0xc0
    0%    0%                   0us                        4  100%    0%    0%    __down_interruptible+0x240

 0.00%    0%  6.8us(  22us)    0us                       12  100%    0%    0%  [0xe00058b07808924c]
 0.00%    0%  0.4us( 1.6us)    0us                        6  100%    0%    0%    rwsem_down_read_failed+0x60
 0.00%    0%   13us(  22us)    0us                        6  100%    0%    0%    rwsem_wake+0x30

    0%    0%                   0us                        1  100%    0%    0%  [0xe00062300376510c]
    0%    0%                   0us                        1  100%    0%    0%    pcibr_try_set_device+0x50

    0%    0%                   0us                        7  100%    0%    0%  batch_lock
    0%    0%                   0us                        7  100%    0%    0%    batch_entropy_store+0x80

 0.01% 0.03%  6.6us(  85us)  5.7us( 5.7us)(0.00%)      3155  100% 0.03%    0%  bdev_lock
 0.01% 0.03%  6.6us(  85us)  5.7us( 5.7us)(0.00%)      3155  100% 0.03%    0%    nr_blockdev_pages+0x20

 0.00%    0%  0.2us(  39us)    0us                    19868  100%    0%    0%  cdev_lock
 0.00%    0%  0.2us(  39us)    0us                    19868  100%    0%    0%    chrdev_open+0x40

 0.00%    0%  1.6us( 5.0us)    0us                      512  100%    0%    0%  cpe_history_lock.4
 0.00%    0%  1.6us( 5.0us)    0us                      512  100%    0%    0%    ia64_mca_cpe_int_handler+0xa0

 0.10% 0.03%  0.1us(  52us)  3.1us( 993us)(0.00%)   2701927  100% 0.03%    0%  dcache_lock
 0.00% 0.02%  0.1us(  19us)  1.9us( 3.4us)(0.00%)     27727  100% 0.02%    0%    d_alloc+0x260
 0.00%    0%  0.3us( 4.0us)    0us                     1207  100%    0%    0%    d_delete+0x40
 0.00% 0.02%  0.1us(  11us)  2.2us( 3.7us)(0.00%)     27890  100% 0.02%    0%    d_instantiate+0x50
 0.00%    0%  3.5us(  12us)    0us                       97  100%    0%    0%    d_move+0x60
 0.00% 0.19%  1.9us(  11us)  1.0us( 1.2us)(0.00%)      1043 99.8% 0.19%    0%    d_path+0x110
 0.00% 0.04%  0.3us(  31us)  1.7us( 4.4us)(0.00%)     27726  100% 0.04%    0%    d_rehash+0xc0
 0.00%    0%  0.1us( 0.1us)    0us                     1043  100%    0%    0%    d_splice_alias+0xc0
 0.09% 0.04%  0.1us(  52us)  3.1us( 993us)(0.00%)   2564651  100% 0.04%    0%    dput+0x50
 0.00%    0%  0.1us( 1.9us)    0us                    24437  100%    0%    0%    link_path_walk+0x1000
 0.00%    0%  0.1us( 2.3us)    0us                    18468  100%    0%    0%    link_path_walk+0x1ed0
 0.00%    0%  0.8us( 4.4us)    0us                      149  100%    0%    0%    proc_pid_unhash+0x50
 0.00%    0%  1.0us(  11us)    0us                      298  100%    0%    0%    prune_dcache+0x50
 0.00%    0%  0.1us( 4.1us)    0us                      149  100%    0%    0%    prune_dcache+0x380
 0.00%    0%  0.2us(  11us)    0us                      447  100%    0%    0%    select_parent+0x30
 0.00%    0%  0.8us(  23us)    0us                     6595  100%    0%    0%    sys_getcwd+0x210

 0.02% 0.01%  0.1us(  23us)  1.6us(  11us)(0.00%)    516145  100% 0.01%    0%  files_lock
 0.00% 0.04%  0.1us( 0.5us)  2.6us( 2.6us)(0.00%)      2818  100% 0.04%    0%    check_tty_count+0x20
 0.01% 0.02%  0.1us(  15us)  1.3us( 3.9us)(0.00%)    255959  100% 0.02%    0%    file_kill+0x70
 0.01% 0.01%  0.1us(  23us)  2.0us(  11us)(0.00%)    257368  100% 0.01%    0%    file_move+0x40

    0%    0%                   0us                      756  100%    0%    0%  filp_count_lock
    0%    0%                   0us                      441  100%    0%    0%    filp_ctor+0x70
    0%    0%                   0us                      315  100%    0%    0%    filp_dtor+0x40

    0% 0.00%                 3.1us( 3.1us)(0.00%)     89822  100% 0.00%    0%  ia64_ctx
    0% 0.00%                 3.1us( 3.1us)(0.00%)     29924  100% 0.00%    0%    exec_mmap+0x4f0
    0%    0%                   0us                    20994  100%    0%    0%    schedule+0xde0
    0%    0%                   0us                    38904  100%    0%    0%    smp_flush_tlb_mm+0x310

    0%    0%                   0us                      512  100%    0%    0%  ia64_state_log+0x60
    0%    0%                   0us                      512  100%    0%    0%    ia64_log_get+0x80

 0.00%    0%  0.1us( 0.2us)    0us                        2  100%    0%    0%  inet_peer_unused_lock
 0.00%    0%  0.1us( 0.2us)    0us                        2  100%    0%    0%    cleanup_once+0x60

 0.04% 0.06%  0.3us(  43us)  5.0us(  31us)(0.00%)    353580  100% 0.06%    0%  inode_lock
 0.00% 0.01%  0.2us(  13us)  1.8us( 2.2us)(0.00%)     47928  100% 0.01%    0%    __mark_inode_dirty+0xf0
 0.01% 0.13%  0.4us(  43us)  7.3us(  31us)(0.00%)     75399 99.9% 0.13%    0%    __sync_single_inode+0x100
 0.00%    0%  0.1us(  10us)    0us                     4746  100%    0%    0%    generic_delete_inode+0x1f0
 0.00% 0.01%  0.1us(  23us)  2.0us( 2.2us)(0.00%)     22314  100% 0.01%    0%    get_new_inode_fast+0x50
 0.00% 0.00%  0.3us(  23us)  2.5us( 2.5us)(0.00%)     22314  100% 0.00%    0%    iget_locked+0xb0
 0.00%    0%  0.2us(  12us)    0us                     6326  100%    0%    0%    igrab+0x20
 0.00% 0.06%  0.1us(  40us)  2.7us( 7.6us)(0.00%)     92603  100% 0.06%    0%    iput+0xa0
 0.00% 0.04%  0.3us(  18us)  2.1us( 2.4us)(0.00%)      4712  100% 0.04%    0%    new_inode+0x70
 0.00% 0.13%  0.2us( 5.9us)  5.1us( 5.1us)(0.00%)       765 99.9% 0.13%    0%    sync_inodes_sb+0x140
 0.02% 0.08%  0.6us(  37us)  3.6us(  13us)(0.00%)     75910  100% 0.08%    0%    sync_sb_inodes+0x630
 0.00% 0.18%  1.9us(  25us)  2.1us( 2.1us)(0.00%)       563 99.8% 0.18%    0%    writeback_inodes+0x20

 0.03% 0.01%  2.2us( 791us)  8.9us(  16us)(0.00%)     37374  100% 0.01%    0%  kernel_flag
 0.01%    0%  1.0us( 217us)    0us                    19868  100%    0%    0%    chrdev_open+0x1e0
 0.00% 0.03%  0.2us(  17us)  1.8us( 1.8us)(0.00%)      3241  100% 0.03%    0%    de_put+0x50
 0.00%    0%  0.1us( 0.1us)    0us                      696  100%    0%    0%    linvfs_ioctl+0x140
 0.02%    0%   13us( 791us)    0us                     3391  100%    0%    0%    proc_lookup+0x60
 0.00% 0.05%  1.1us(  67us)   16us(  16us)(0.00%)      2123  100% 0.05%    0%    sys_ioctl+0xa0
 0.00%    0%  0.9us(  24us)    0us                     6592  100%    0%    0%    sys_sysctl+0xd0
 0.00%    0%  4.5us( 164us)    0us                     1409  100%    0%    0%    tty_release+0x50
 0.00%    0%   73us( 477us)    0us                       54  100%    0%    0%    tty_write+0x440

    0%    0%                   0us                       12  100%    0%    0%  logbuf_lock
    0%    0%                   0us                        8  100%    0%    0%    release_console_sem+0x50
    0%    0%                   0us                        4  100%    0%    0%    vprintk+0x60

 0.01% 0.10%  0.3us(  26us)  2.0us(  17us)(0.00%)    110873 99.9% 0.10%    0%  mmlist_lock
 0.00% 0.04%  0.1us( 3.3us)  3.3us(  17us)(0.00%)     20994  100% 0.04%    0%    copy_mm+0x2a0
 0.01% 0.03%  0.8us(  26us)  1.2us( 2.8us)(0.00%)     29924  100% 0.03%    0%    exec_mmap+0x40
 0.00% 0.16%  0.2us(  16us)  2.0us(  14us)(0.00%)     59955 99.8% 0.16%    0%    mmput+0x30

    0%    0%                   0us                     1052  100%    0%    0%  page_uptodate_lock.1
    0%    0%                   0us                     1052  100%    0%    0%    end_buffer_async_write+0xc0

 0.00% 0.01%  0.2us(  20us)  0.2us( 0.2us)(0.00%)      9033  100% 0.01%    0%  pbd_delwrite_lock
 0.00%    0%  2.8us(  20us)    0us                      314  100%    0%    0%    pagebuf_daemon+0x200
 0.00% 0.01%  0.1us( 3.8us)  0.2us( 0.2us)(0.00%)      8232  100% 0.01%    0%    pagebuf_delwri_dequeue+0x30
 0.00%    0%  0.4us( 3.4us)    0us                      487  100%    0%    0%    pagebuf_delwri_queue+0x30

    0%    0%                   0us                      234  100%    0%    0%  pdflush_lock
    0%    0%                   0us                       78  100%    0%    0%    __pdflush+0x220
    0%    0%                   0us                       78  100%    0%    0%    __pdflush+0x320
    0%    0%                   0us                       78  100%    0%    0%    pdflush_operation+0x60

 0.85%  8.8%  1.3us(3489us) 2617us(  13ms)(0.29%)   1766106 91.2%  8.8%    0%  rcu_state
 0.01% 0.83%  4.7us( 369us)  828us(5897us)(0.00%)      6874 99.2% 0.83%    0%    __rcu_process_callbacks+0x260
 0.83%  8.8%  1.3us(3489us) 2617us(  13ms)(0.29%)   1759232 91.2%  8.8%    0%    cpu_quiet+0x2c0

 0.00%    0%  0.5us( 7.1us)    0us                       54  100%    0%    0%  redirect_lock
 0.00%    0%  0.5us( 7.1us)    0us                       54  100%    0%    0%    redirected_tty_write+0x30

 0.00%    0%  2.3us(  11us)    0us                       97  100%    0%    0%  rename_lock+0x4
 0.00%    0%  2.3us(  11us)    0us                       97  100%    0%    0%    d_move+0x80

    0% 0.64%                  22us(  26us)(0.00%)       627 99.4% 0.64%    0%  sal_console_port+0x40
    0%    0%                   0us                        4  100%    0%    0%    sn_sal_console_write+0x380
    0%  1.3%                  22us(  26us)(0.00%)       299 98.7%  1.3%    0%    sn_sal_interrupt+0x200
    0%    0%                   0us                      108  100%    0%    0%    uart_put_char+0xa0
    0%    0%                   0us                      162  100%    0%    0%    uart_start+0x50
    0%    0%                   0us                       54  100%    0%    0%    uart_write+0x400

 0.00%    0%  0.5us(  29us)    0us                     3069  100%    0%    0%  sb_lock
 0.00%    0%  0.4us( 6.7us)    0us                      810  100%    0%    0%    get_super_to_sync+0x30
 0.00%    0%  1.4us( 4.8us)    0us                       15  100%    0%    0%    get_super_to_sync+0x30
 0.00%    0%  0.1us( 1.1us)    0us                      850  100%    0%    0%    put_super+0x20
 0.00%    0%  1.2us( 6.4us)    0us                       45  100%    0%    0%    set_sb_syncing+0x20
 0.00%    0%  1.7us(  11us)    0us                       30  100%    0%    0%    sync_filesystems+0x70
 0.00%    0%  1.4us(  27us)    0us                       60  100%    0%    0%    sync_filesystems+0x170
 0.00%    0%  1.6us( 5.4us)    0us                      133  100%    0%    0%    sync_supers+0x30
 0.00%    0%  0.4us( 7.1us)    0us                      563  100%    0%    0%    writeback_inodes+0x40
 0.00%    0%  1.0us(  29us)    0us                      563  100%    0%    0%    writeback_inodes+0x210

 0.00%    0%  0.2us(  18us)    0us                     3155  100%    0%    0%  swaplock
 0.00%    0%  0.2us(  18us)    0us                     3155  100%    0%    0%    si_swapinfo+0x20

 0.00%    0%  0.1us( 3.6us)    0us                    30031  100%    0%    0%  uidhash_lock
 0.00%    0%  0.1us( 3.6us)    0us                    30031  100%    0%    0%    free_uid+0x30

 0.00% 0.02%  0.8us(  13us)  3.1us( 3.1us)(0.00%)      4298  100% 0.02%    0%  vfsmount_lock
 0.00%    0%  0.1us( 3.6us)    0us                      894  100%    0%    0%    __d_path+0x2b0
 0.00% 0.03%  1.1us(  13us)  3.1us( 3.1us)(0.00%)      3404  100% 0.03%    0%    lookup_mnt+0x80

 0.00%    0%  0.1us(  11us)    0us                    19073  100%    0%    0%  vnumber_lock
 0.00%    0%  0.1us(  11us)    0us                    19073  100%    0%    0%    vn_initialize+0xd0

 0.93%    0%  7.9us(1132us)    0us                   322268  100%    0%    0%  xtime_lock+0x4
 0.93%    0%  7.9us(1132us)    0us                   322268  100%    0%    0%    timer_interrupt+0x330

 0.07% 0.00%  0.1us(  25us)  3.1us(  11us)(0.00%)   1686850  100% 0.00%    0%  __d_lookup+0x190
    0% 0.28%                 3.2us( 4.8us)(0.00%)      1450 99.7% 0.28%    0%  __down+0x200
    0% 0.27%                 2.1us( 2.7us)(0.00%)      1498 99.7% 0.27%    0%  __down+0xc0
    0%    0%                   0us                     2761  100%    0%    0%  __down_trylock+0x40
 0.00%    0%  0.1us(  23us)    0us                    30031  100%    0%    0%  __exit_signal+0x80
 0.01%    0%  0.1us( 4.5us)    0us                   152486  100%    0%    0%  __mod_timer+0x120
    0%    0%                   0us                   152486  100%    0%    0%  __mod_timer+0xa0
    0% 0.03%                 1.5us(  12us)(0.00%)   1157082  100% 0.03%    0%  __page_cache_release+0x70
    0%    0%                   0us                    19600  100%    0%    0%  __pagevec_lru_add+0xe0
    0% 0.03%                 8.2us(  21us)(0.00%)    193047  100% 0.03%    0%  __pagevec_lru_add_active+0xe0
 0.01%    0%  0.1us(  17us)    0us                   203672  100%    0%    0%  __pmd_alloc+0x60
    0%    0%                   0us                    80491  100%    0%    0%  __queue_work+0x30
    0%    0%                   0us                     2050  100%    0%    0%  __set_page_dirty_nobuffers+0xd0
    0% 0.02%                 3.6us( 9.7us)(0.00%)    213353  100% 0.02%    0%  __wake_up+0x30
    0%    0%                   0us                    30031  100%    0%    0%  __wake_up_sync+0x50
 0.01%    0%  0.4us(  37us)    0us                    84165  100%    0%    0%  _pagebuf_find+0xd0
    0%    0%                   0us                     3631  100%    0%    0%  activate_page+0x70
    0%    0%                   0us                    27427  100%    0%    0%  add_to_page_cache+0x80
    0%    0%                   0us                   130349  100%    0%    0%  add_wait_queue+0x50
    0%    0%                   0us                       46  100%    0%    0%  add_wait_queue_exclusive+0x50
 0.01% 0.00%  0.1us(  12us)  1.3us( 1.9us)(0.00%)    264157  100% 0.00%    0%  anon_vma_link+0x30
 0.02%    0%  0.2us(  38us)    0us                   281171  100%    0%    0%  anon_vma_prepare+0xc0
 0.01% 0.00%  0.1us(  41us)  6.5us(  32us)(0.00%)    562479  100% 0.00%    0%  anon_vma_unlink+0x30
    0% 0.01%                 2.2us( 2.3us)(0.00%)     30031  100% 0.01%    0%  buffered_rmqueue+0x3f0
 0.02%    0%  2.2us(  55us)    0us                    18846  100%    0%    0%  cache_alloc_refill+0xb0
 0.01%    0%  2.0us(  36us)    0us                     7284  100%    0%    0%  cache_flusharray+0x30
 0.00%    0%  0.1us( 0.2us)    0us                     2461  100%    0%    0%  cache_grow+0x260
 0.00%    0%  0.5us(  11us)    0us                     2461  100%    0%    0%  cache_grow+0xf0
    0% 0.00%                 5.7us(  29us)(0.00%)   8444352  100% 0.00%    0%  cache_reap+0x230
    0%    0%                   0us                      354  100%    0%    0%  cache_reap+0x430
 0.01%    0%  0.5us(  23us)    0us                    42332  100%    0%    0%  change_protection+0x90
    0%    0%                   0us                    29462  100%    0%    0%  complete+0x40
 0.00%    0%  0.4us(  26us)    0us                    29924  100%    0%    0%  compute_creds+0x20
 0.01%    0%  1.0us(  82us)    0us                    30031  100%    0%    0%  copy_files+0x1c0
 0.00%    0%  0.1us(  10us)    0us                    17410  100%    0%    0%  copy_files+0x200
 0.05%    0%  7.3us(  33us)    0us                    17410  100%    0%    0%  copy_files+0x2c0
 0.01% 0.01%  0.1us(  14us)  4.2us( 9.1us)(0.00%)    363042  100% 0.01%    0%  copy_mm+0x5a0
 0.86%    0%  4.7us(2058us)    0us                   506636  100%    0%    0%  copy_mm+0x5e0
  1.2%    0%  6.6us(2058us)    0us                   485642  100%    0%    0%  copy_page_range+0x2a0
  155% 0.13%  121us(  13ms)  9.0us(1585us)(0.00%)   3518464 99.9% 0.13%    0%  cpu_quiet+0x60
 0.00%    0%  0.3us( 3.8us)    0us                     2050  100%    0%    0%  create_empty_buffers+0xa0
 0.00%    0%  0.1us( 0.1us)    0us                     1207  100%    0%    0%  d_delete+0x50
 0.00%    0%  1.5us( 2.4us)    0us                       97  100%    0%    0%  d_move+0x100
 0.00%    0%  1.9us( 2.7us)    0us                       49  100%    0%    0%  d_move+0x560
 0.00%    0%  1.8us( 3.6us)    0us                       48  100%    0%    0%  d_move+0xe0
 0.00%    0%  0.1us(  11us)    0us                    27726  100%    0%    0%  d_rehash+0xd0
    0% 0.00%                 1.0us( 1.0us)(0.00%)     79353  100% 0.00%    0%  del_timer+0x80
 0.01% 0.00%  0.1us(  27us)  2.8us( 3.0us)(0.00%)    179833  100% 0.00%    0%  deny_write_access+0x40
 0.00%    0%  0.1us( 9.7us)    0us                    46847  100%    0%    0%  dnotify_flush+0xa0
 0.03% 0.00%  0.2us( 212us)  4.1us(  16us)(0.00%)    330705  100% 0.00%    0%  dnotify_parent+0x60
 0.01%    0%  0.6us(  24us)    0us                    27234  100%    0%    0%  do_IRQ+0x1d0
 0.00%    0%  0.4us( 8.5us)    0us                    27234  100%    0%    0%  do_IRQ+0x2b0
 0.04%    0%  0.3us( 183us)    0us                   384104  100%    0%    0%  do_anonymous_page+0x270
 0.00%    0%  0.1us( 6.0us)    0us                    30031  100%    0%    0%  do_exit+0x3d0
 0.00%    0%  0.0us(  12us)    0us                    30031  100%    0%    0%  do_exit+0x460
 0.00%    0%  0.0us( 9.7us)    0us                    30031  100%    0%    0%  do_exit+0x4b0
 0.00%    0%  0.0us( 6.6us)    0us                    30031  100%    0%    0%  do_exit+0x6d0
 0.00%    0%  0.1us( 2.5us)    0us                      933  100%    0%    0%  do_fcntl+0xb0
 0.12%    0%  2.2us(  13ms)    0us                   153104  100%    0%    0%  do_munmap+0x220
 0.19%    0%  0.2us( 236us)    0us                  2400489  100%    0%    0%  do_no_page+0x220
    0%    0%                   0us                    30031  100%    0%    0%  do_notify_parent+0x2e0
    0% 0.06%                 3.5us(  12us)(0.00%)    158844  100% 0.06%    0%  do_page_cache_readahead+0x140
    0%    0%                   0us                    24872  100%    0%    0%  do_page_cache_readahead+0x270
    0%    0%                   0us                   283362  100%    0%    0%  do_sigaction+0x110
    0%    0%                   0us                    36542  100%    0%    0%  do_sigaction+0x2a0
 0.11%    0%  0.6us( 537us)    0us                   486122  100%    0%    0%  do_wp_page+0x2d0
 0.00%  1.9%  0.7us( 226us)    0us                    14714 98.1%    0%  1.9%  double_lock_balance+0x20
 0.00% 82.3%   12us( 137us)  212us(1619us)(0.00%)        96 17.7% 82.3%    0%  double_lock_balance+0x80
 0.00% 59.3%  2.9us(  87us)   27us( 562us)(0.00%)       285 40.7% 59.3%    0%  double_lock_balance+0xa0
 0.00%    0%  1.0us( 639us)    0us                    11554  100%    0%    0%  double_rq_lock+0x40
 0.00% 0.15%  0.1us( 3.1us)  237us( 639us)(0.00%)     20425 99.9% 0.15%    0%  double_rq_lock+0x60
 0.00% 0.32%  0.3us(  17us)  327us( 584us)(0.00%)      8871 99.7% 0.32%    0%  double_rq_lock+0x90
 0.02% 0.00%  0.1us(  52us)  4.3us( 6.8us)(0.00%)    417229  100% 0.00%    0%  dput+0xb0
 0.00%    0%  0.3us( 9.2us)    0us                      371  100%    0%    0%  dupfd+0x30
 0.01%    0%  1.1us(6130us)    0us                    29924  100%    0%    0%  exec_mmap+0x110
  7.3%    0%  392us(  14ms)    0us                    50918  100%    0%    0%  exit_mmap+0x50
 0.00%    0%  0.1us(  13us)    0us                    17662  100%    0%    0%  expand_fd_array+0x130
 0.00%    0%  0.3us( 2.0us)    0us                      252  100%    0%    0%  expand_fd_array+0x240
 0.00%    0%  0.5us( 5.3us)    0us                      928  100%    0%    0%  expand_stack+0x60
 0.00%    0%  0.1us(  13us)    0us                   234945  100%    0%    0%  fd_install+0x30
 0.02%    0%  0.1us(  23us)    0us                   438595  100%    0%    0%  fget+0x30
    0% 0.07%                 3.4us(  30us)(0.00%)   2674425  100% 0.07%    0%  find_get_page+0x40
    0%    0%                   0us                     4238  100%    0%    0%  find_get_pages+0x40
    0%    0%                   0us                   120515  100%    0%    0%  find_get_pages_tag+0x40
    0% 0.01%                 1.1us( 1.9us)(0.00%)     84291  100% 0.01%    0%  find_lock_page+0x40
    0%    0%                   0us                      204  100%    0%    0%  find_trylock_page+0x40
    0% 0.02%                 2.3us( 4.2us)(0.00%)     26066  100% 0.02%    0%  finish_wait+0x90
 0.00%    0%  0.1us(  20us)    0us                    38666  100%    0%    0%  flush_old_exec+0x4f0
    0% 0.08%                 3.8us(  16us)(0.00%)     80172  100% 0.08%    0%  force_page_cache_readahead+0x170
    0%    0%                   0us                       72  100%    0%    0%  force_page_cache_readahead+0x2a0
    0% 0.02%                 4.7us(  31us)(0.00%)    265111  100% 0.02%    0%  free_pages_bulk+0x90
    0% 0.10%                 4.1us(  18us)(0.00%)     27886 99.9% 0.10%    0%  get_signal_to_deliver+0x60
 0.02%    0%  0.2us(  28us)    0us                   281891  100%    0%    0%  get_unused_fd+0x40
 0.00%    0%  0.1us(  12us)    0us                    21477  100%    0%    0%  get_write_access+0x30
 0.25%    0%  0.2us( 703us)    0us                  3589052  100%    0%    0%  handle_mm_fault+0x160
    0%    0%                   0us                    27886  100%    0%    0%  handle_signal+0x100
    0%    0%                   0us                    27886  100%    0%    0%  ia64_rt_sigreturn+0x1b0
 0.00%    0%  0.2us(  12us)    0us                    29924  100%    0%    0%  install_arg_page+0xc0
    0%    0%                   0us                    30046  100%    0%    0%  k_getrusage+0x530
    0%    0%                   0us                      356  100%    0%    0%  k_getrusage+0xd0
 0.00%    0%  0.1us( 0.9us)    0us                      696  100%    0%    0%  linvfs_ioctl+0xe0
 0.00%  3.1%  1.1us(  56us)  460us( 979us)(0.00%)       228 96.9%  3.1%    0%  load_balance+0x170
  115% 0.00%  9.4us(1773us)  3.0us( 9.6us)(0.00%)  33485489  100% 0.00%    0%  load_balance+0x30
    0%    0%                   0us                    75399  100%    0%    0%  mapping_tagged+0x40
 0.00% 0.01%  0.1us( 586us)   76us( 207us)(0.00%)     40912  100% 0.01%    0%  migration_thread+0x130
 0.00%    0%  0.5us( 2.4us)    0us                      149  100%    0%    0%  mounts_open+0xa0
 0.00%    0%  0.1us(  11us)    0us                    97133  100%    0%    0%  pagebuf_rele+0x60
 0.00%    0%  0.1us( 0.1us)    0us                      149  100%    0%    0%  pid_base_iput+0x30
    0%    0%                   0us                     5044  100%    0%    0%  prepare_to_wait+0x60
    0% 0.00%                 0.2us( 0.3us)(0.00%)     43556  100% 0.00%    0%  prepare_to_wait_exclusive+0x60
 0.00%    0%  0.0us( 0.2us)    0us                      149  100%    0%    0%  proc_pid_lookup+0x1e0
 0.00%    0%  0.4us( 3.5us)    0us                      298  100%    0%    0%  prune_dcache+0x130
 0.38%    0%  4.0us( 446us)    0us                   254607  100%    0%    0%  pte_alloc_map+0x140
 0.00%    0%  0.1us( 3.3us)    0us                    47317  100%    0%    0%  put_unused_fd+0x30
    0%    0%                   0us                     5355  100%    0%    0%  qla2x00_timer+0x2c0
    0% 0.06%                  14us(  19us)(0.00%)     19499  100% 0.06%    0%  release_pages+0x180
 0.07%    0%  6.3us( 252us)    0us                    30031  100%    0%    0%  release_task+0x60
    0%    0%                   0us                     1993  100%    0%    0%  remove_from_page_cache+0x70
 0.06% 0.03%  0.2us(  44us)  4.6us(  26us)(0.00%)    748374  100% 0.03%    0%  remove_vm_struct+0x50
    0% 0.00%                 3.5us( 3.5us)(0.00%)    130395  100% 0.00%    0%  remove_wait_queue+0x30
    0% 0.03%                 2.1us( 5.4us)(0.00%)    247968  100% 0.03%    0%  rmqueue_bulk+0x40
 0.00%    0%  0.6us( 1.4us)    0us                        5  100%    0%    0%  rt_check_expire+0xe0
    0%    0%                   0us                    73133  100%    0%    0%  run_timer_softirq+0x2c0
    0% 0.00%                 1.0us( 2.0us)(0.00%) 163398664  100% 0.00%    0%  run_timer_softirq+0xb0
 0.13% 0.88%  0.9us( 375us)  1.3us( 825us)(0.00%)    373228 99.1% 0.88%    0%  schedule+0x260
    0%    0%                   0us                   368227  100%    0%    0%  schedule+0x680
 0.02% 0.01%  0.2us(  44us)   19us( 224us)(0.00%)    265492  100% 0.01%    0%  scheduler_tick+0x520
 0.00%    0%  0.1us( 0.2us)    0us                    40137  100%    0%    0%  set_close_on_exec+0x30
 0.00%    0%  0.2us(  13us)    0us                    29924  100%    0%    0%  set_task_comm+0x20
    0% 0.03%                  11us(  32us)(0.00%)     18665  100% 0.03%    0%  sigprocmask+0x50
 0.01%    0%  0.1us(  22us)    0us                   286782  100%    0%    0%  sys_close+0x30
 0.00%    0%  0.2us(  28us)    0us                    23247  100%    0%    0%  sys_dup2+0x50
 0.00%    0%  0.1us( 0.8us)    0us                      149  100%    0%    0%  task_dumpable+0x20
    0% 0.41%                  22us( 623us)(0.00%)    296779 99.6% 0.41%    0%  task_rq_lock+0xa0
    0%    0%                   0us                     4287  100%    0%    0%  test_clear_page_dirty+0x90
    0%    0%                   0us                      302  100%    0%    0%  test_clear_page_writeback+0x90
    0%    0%                   0us                      302  100%    0%    0%  test_set_page_writeback+0x90
 0.00%    0%  1.0us( 5.7us)    0us                     1992  100%    0%    0%  try_to_free_buffers+0x90
 0.00%    0% 1176us(1190us)    0us                        2  100%    0%    0%  unmap_vmas+0x540
 0.03% 0.05%  0.7us(  29us)  5.4us(  24us)(0.00%)    129360  100% 0.05%    0%  vma_adjust+0x140
 0.00%    0%  0.2us(  16us)    0us                    67216  100%    0%    0%  vma_adjust+0x2d0
 0.06% 0.02%  0.7us( 749us)  6.1us(  36us)(0.00%)    255972  100% 0.02%    0%  vma_link+0x60
 0.00%    0%  0.4us(  12us)    0us                     6326  100%    0%    0%  vn_hold+0x70
 0.00%    0%  0.1us( 0.6us)    0us                     1207  100%    0%    0%  vn_purge+0x30
 0.00%    0%  0.1us( 3.3us)    0us                     1207  100%    0%    0%  vn_reclaim+0x100
 0.00%    0%  0.1us( 0.3us)    0us                     1207  100%    0%    0%  vn_rele+0x130
 0.00%    0%  0.1us( 3.6us)    0us                     1207  100%    0%    0%  vn_rele+0x70
 0.00%    0%  0.0us( 0.1us)    0us                     1236  100%    0%    0%  vn_revalidate+0xf0
 0.00%    0%  0.1us( 0.1us)    0us                     1207  100%    0%    0%  vn_wakeup+0x20
    0%    0%                   0us                    29462  100%    0%    0%  wait_for_completion+0x1d0
    0%    0%                   0us                    29462  100%    0%    0%  wait_for_completion+0x50
    0%    0%                   0us                    30031  100%    0%    0%  wait_task_zombie+0x170
    0%    0%                   0us                    79650  100%    0%    0%  worker_thread+0x2a0
    0%    0%                   0us                    80491  100%    0%    0%  worker_thread+0x430
 0.00%    0%  0.7us( 1.3us)    0us                      161  100%    0%    0%  xfs_alloc_clear_busy+0x60
 0.00%    0%  0.9us( 3.7us)    0us                      162  100%    0%    0%  xfs_alloc_mark_busy+0x60
 0.00%    0%  0.3us( 1.5us)    0us                      146  100%    0%    0%  xfs_alloc_search_busy+0x60
 0.00%    0%  0.1us( 1.2us)    0us                      136  100%    0%    0%  xfs_iextract+0xf0
 0.05%    0%   17us( 130us)    0us                     7869  100%    0%    0%  xfs_iflush+0x3c0
 0.00%    0%  0.4us(  28us)    0us                    18630  100%    0%    0%  xfs_iget_core+0x430
 0.00%    0%  0.3us( 4.2us)    0us                       98  100%    0%    0%  xfs_map_blocks+0xf0

- - - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RWLOCK READS   HOLD    MAX  RDR BUSY PERIOD      WAIT
  UTIL  CON    MEAN   RDRS   MEAN(  MAX )   MEAN(  MAX )( %CPU)     TOTAL NOWAIT SPIN  NAME

       0.01%                               7.9us( 186us)(0.00%)    922136  100% 0.01%  *TOTAL*

 0.00%    0%   0.2us     2  0.2us(1003us)    0us                    30502  100%    0%  binfmt_lock
          0%                                 0us                    30213  100%    0%    search_binary_handler+0x80
          0%                                 0us                      289  100%    0%    search_binary_handler+0x420

 0.00%    0%  16.5us     1   16us(  42us)    0us                       97  100%    0%  file_systems_lock
          0%                                 0us                       97  100%    0%    get_filesystem_list+0x30

 29.5% 0.11%   0.8us     2  708us(40446ms)  7.9us( 186us)(0.00%)    114336 99.9% 0.11%  tasklist_lock
       0.01%                               5.8us( 8.9us)(0.00%)     36542  100% 0.01%    do_sigaction+0x260
       0.17%                               7.9us( 186us)(0.00%)     77267 99.8% 0.17%    do_wait+0x160
          0%                                 0us                      371  100%    0%    getrusage+0x40
          0%                                 0us                      149  100%    0%    proc_pid_lookup+0x80
          0%                                 0us                        6  100%    0%    session_of_pgrp+0x20
          0%                                 0us                        1  100%    0%    wrap_mmu_context+0x70

 59.2%    0% 143.5us     2   52ms(40446ms)    0us                     3155  100%    0%  vmlist_lock
          0%                                 0us                     3155  100%    0%    get_vmalloc_info+0x40

          0%                                 0us                    30031  100%    0%  copy_process+0x17d0
          0%                                 0us                     1043  100%    0%  d_path+0x30
          0%                                 0us                    18468  100%    0%  link_path_walk+0x1e50
          0%                                 0us                    24437  100%    0%  link_path_walk+0xf80
          0%                                 0us                   673192  100%    0%  path_lookup+0x60
          0%                                 0us                     6595  100%    0%  sys_getcwd+0x80
          0%                                 0us                    19073  100%    0%  xfs_iget_core+0x60
          0%                                 0us                     1207  100%    0%  xfs_inode_incore+0x60

- - - - - - - - - - -  - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RWLOCK WRITES     HOLD           WAIT (ALL)           WAIT (WW) 
  UTIL  CON    MEAN(  MAX )   MEAN(  MAX )( %CPU)   MEAN(  MAX )     TOTAL NOWAIT SPIN(  WW )  NAME

       0.05%  0.0us( 142us)   15us(  23us)(0.00%)  8.1us(  23us)    162200  100% 0.00%(0.04%)  *TOTAL*

 0.00%    0%  0.1us( 0.1us)    0us                   0us                11  100%    0%(   0%)  [0xe000003073709040]
 0.00%    0%  0.1us( 0.1us)    0us                   0us                11  100%    0%(   0%)    neigh_periodic_timer+0x140

 0.00%    0%   15us( 142us)    0us                   0us                11  100%    0%(   0%)  arp_tbl+0x17c
 0.00%    0%   15us( 142us)    0us                   0us                11  100%    0%(   0%)    neigh_periodic_timer+0x40

    0%    0%                   0us                   0us             10237  100%    0%(   0%)  fasync_lock
    0%    0%                   0us                   0us             10237  100%    0%(   0%)    fasync_helper+0x80

    0% 0.09%                  15us(  23us)(0.00%)  8.1us(  23us)     90097  100% 0.01%(0.08%)  tasklist_lock
    0% 0.01%                 3.7us( 3.7us)(0.00%)  3.7us( 3.7us)     30031  100% 0.01%(0.00%)    copy_process+0xd40
    0% 0.23%                  15us(  23us)(0.00%)  8.3us(  23us)     30031 99.8% 0.02%(0.21%)    exit_notify+0xd0
    0% 0.03%                  14us(  12us)(0.00%)  7.1us(  12us)     30031  100%    0%(0.03%)    release_task+0xb0
    0%    0%                   0us                   0us                 4  100%    0%(   0%)    sys_setpgid+0x90

 0.00%    0%  0.1us(  10us)    0us                   0us             43567  100%    0%(   0%)  set_fs_pwd+0x20
 0.00%    0%  0.1us( 1.1us)    0us                   0us               136  100%    0%(   0%)  xfs_finish_reclaim+0x30
 0.00%    0%  0.1us( 1.3us)    0us                   0us               136  100%    0%(   0%)  xfs_iextract+0x30
 0.00%    0%  0.1us( 9.7us)    0us                   0us             18005  100%    0%(   0%)  xfs_iget_core+0x230
_________________________________________________________________________________________________________________________
Number of read locks found=4

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

* Re: kernbench on 512p
  2004-09-14 17:52                         ` Greg Edwards
@ 2004-09-14 18:16                           ` Manfred Spraul
  2004-09-14 18:43                             ` Greg Edwards
  0 siblings, 1 reply; 35+ messages in thread
From: Manfred Spraul @ 2004-09-14 18:16 UTC (permalink / raw)
  To: Greg Edwards
  Cc: Jesse Barnes, paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

Greg Edwards wrote:

>Manfred,
>
>Lockstat output attached from 2.6.9-rc2 at 512p and 2.6.9-rc2 + your two
>remaining RCU patches at 512p.  kernbench was run without any arguments.
>
>The difference for RCU looks great.
>
>  
>
Which value did you use for RCU_GROUP_SIZE? I'm not sure what's the 
optimal value for 512p - probably 32 or so.

--
    Manfred

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

* Re: kernbench on 512p
  2004-09-14 18:16                           ` Manfred Spraul
@ 2004-09-14 18:43                             ` Greg Edwards
  2004-09-14 19:16                               ` Manfred Spraul
  0 siblings, 1 reply; 35+ messages in thread
From: Greg Edwards @ 2004-09-14 18:43 UTC (permalink / raw)
  To: Manfred Spraul
  Cc: Jesse Barnes, paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

On Tue, Sep 14, 2004 at 08:16:24PM +0200, Manfred Spraul wrote:
| Greg Edwards wrote:
| 
| >Manfred,
| >
| >Lockstat output attached from 2.6.9-rc2 at 512p and 2.6.9-rc2 + your two
| >remaining RCU patches at 512p.  kernbench was run without any arguments.
| >
| >The difference for RCU looks great.
| >
| > 
| >
| Which value did you use for RCU_GROUP_SIZE? I'm not sure what's the 
| optimal value for 512p - probably 32 or so.

I used what was defined in the patch

+#define RCU_GROUP_SIZE 2

I can try running with a couple different values and see how it looks.

Greg

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

* Re: kernbench on 512p
  2004-09-14 18:43                             ` Greg Edwards
@ 2004-09-14 19:16                               ` Manfred Spraul
  0 siblings, 0 replies; 35+ messages in thread
From: Manfred Spraul @ 2004-09-14 19:16 UTC (permalink / raw)
  To: Greg Edwards
  Cc: Jesse Barnes, paulmck, Martin J. Bligh, hawkes, linux-kernel, wli

Greg Edwards wrote:

>| >
>| Which value did you use for RCU_GROUP_SIZE? I'm not sure what's the 
>| optimal value for 512p - probably 32 or so.
>
>I used what was defined in the patch
>
>+#define RCU_GROUP_SIZE 2
>
>I can try running with a couple different values and see how it looks.
>
>  
>
Ok, that explains the lockstat: I've missed data on rcu_group_state.lock.

I'd just use 32. The code uses a two-level bitmap and the group size 
specifies the size of the lower level.
Thus you use right now a 2/256 split. Therefore you still trash the 
spinlock that protects the upper level. Group size 32 would generate a 
32/16 split.

--
    Manfred


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

end of thread, other threads:[~2004-09-14 19:19 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-08-19 16:16 kernbench on 512p Jesse Barnes
2004-08-19 16:22 ` William Lee Irwin III
2004-08-19 16:29 ` David Mosberger
2004-08-19 16:37   ` Jesse Barnes
2004-08-19 16:40     ` David Mosberger
2004-08-19 17:55       ` Alan Cox
2004-08-20  7:53         ` David Mosberger
2004-08-19 18:25     ` Martin J. Bligh
2004-08-19 18:42       ` Jesse Barnes
2004-08-19 21:11       ` Jesse Barnes
2004-08-19 21:24         ` Jesse Barnes
2004-08-19 21:56           ` Martin J. Bligh
2004-08-20 19:36             ` Maneesh Soni
2004-08-19 23:38           ` Paul E. McKenney
2004-08-20  0:16             ` Jesse Barnes
2004-08-20 15:57               ` Paul E. McKenney
2004-08-20 17:24                 ` Jesse Barnes
2004-08-20 19:22                   ` Manfred Spraul
2004-08-20 20:19                   ` Manfred Spraul
2004-08-23 21:23                     ` Jesse Barnes
2004-08-23 23:13                       ` Jesse Barnes
2004-09-10 19:01                     ` Greg Edwards
2004-09-13 18:21                       ` Manfred Spraul
2004-09-14 17:52                         ` Greg Edwards
2004-09-14 18:16                           ` Manfred Spraul
2004-09-14 18:43                             ` Greg Edwards
2004-09-14 19:16                               ` Manfred Spraul
2004-08-19 21:50         ` Ray Bryant
2004-08-19 22:00           ` Jesse Barnes
2004-08-19 23:03 ` William Lee Irwin III
2004-08-20 17:35   ` William Lee Irwin III
2004-08-20  0:56 ` remove dentry_open::file_ra_init_state() duplicated memset was " Marcelo Tosatti
2004-08-20  6:21   ` Andrew Morton
2004-08-20  7:28     ` Marcelo Tosatti
2004-08-20  8:34       ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox