Bob,

Catching up late on this thread.

Would it be possible for you to collect the following data :
- /usr/sbin/lockstat -CcwP -n 50000 -D 20 -s 40 sleep 5
- /usr/sbin/lockstat -HcwP -n 50000 -D 20 -s 40 sleep 5
- /usr/sbin/lockstat -kIW -i 977 -D 20 -s 40 sleep 5

Or if you have access to the GUDs tool please collect data using that.

We need to understand how ARC plays a role here.

Thanks and regards,
Sanjeev.
On Sat, Jul 04, 2009 at 02:49:05PM -0500, Bob Friesenhahn wrote:
> On Sat, 4 Jul 2009, Jonathan Edwards wrote:
>>
>> this is only going to help if you've got problems in zfetch .. you'd 
>> probably see this better by looking for high lock contention in zfetch 
>> with lockstat
>
> This is what lockstat says when performance is poor:
>
> Adaptive mutex spin: 477 events in 30.019 seconds (16 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller  
> -------------------------------------------------------------------------------
>    47  10%  10% 0.00     5813 0xffffffff80256000     untimeout+0x24
>    46  10%  19% 0.00     2223 0xffffffffb0a2f200     taskq_thread+0xe3
>    38   8%  27% 0.00     2252 0xffffffffb0a2f200     cv_wait+0x70
>    29   6%  34% 0.00     1115 0xffffffff80256000     callout_execute+0xeb
>    26   5%  39% 0.00     3006 0xffffffffb0a2f200     taskq_dispatch+0x1b8
>    22   5%  44% 0.00     1200 0xffffffffa06158c0     post_syscall+0x206
>    18   4%  47% 0.00     3858 arc_eviction_mtx       arc_do_user_evicts+0x76
>    16   3%  51% 0.00     1352 arc_eviction_mtx       arc_buf_add_ref+0x2d
>    15   3%  54% 0.00     5376 0xffffffffb1adac28     taskq_thread+0xe3
>    11   2%  56% 0.00     2520 0xffffffffb1adac28     taskq_dispatch+0x1b8
>     9   2%  58% 0.00     2158 0xffffffffbb909e20     pollwakeup+0x116
>     9   2%  60% 0.00     2431 0xffffffffb1adac28     cv_wait+0x70
>     8   2%  62% 0.00     3912 0xffffffff80259000     untimeout+0x24
>     7   1%  63% 0.00     3679 0xffffffffb10dfbc0     polllock+0x3f
>     7   1%  65% 0.00     2171 0xffffffffb0a2f2d8     cv_wait+0x70
>     6   1%  66% 0.00      771 0xffffffffb3f23708     pcache_delete_fd+0xac
>     6   1%  67% 0.00     4679 0xffffffffb0a2f2d8     taskq_dispatch+0x1b8
>     5   1%  68% 0.00      500 0xffffffffbe555040     fifo_read+0xf8
>     5   1%  69% 0.00    15838 0xffffffff8025c000     untimeout+0x24
>     4   1%  70% 0.00     1213 0xffffffffac44b558     sd_initpkt_for_buf+0x110
>     4   1%  71% 0.00      638 0xffffffffa28722a0     polllock+0x3f
>     4   1%  72% 0.00      610 0xffffffff80259000     timeout_common+0x39
>     4   1%  73% 0.00    10691 0xffffffff80256000     timeout_common+0x39
>     3   1%  73% 0.00     1559 htable_mutex+0x78      htable_release+0x8a
>     3   1%  74% 0.00     3610 0xffffffffbb909e20     cv_timedwait_sig+0x1c1
>     3   1%  74% 0.00     1636 0xffffffffa240d410     
> ohci_allocate_periodic_in_resource+0x71
>     2   0%  75% 0.00     5959 0xffffffffbe555040     fifo_read+0x5c
>     2   0%  75% 0.00     3744 0xffffffffbe555040     polllock+0x3f
>     2   0%  76% 0.00      635 0xffffffffb3f23708     pollwakeup+0x116
>     2   0%  76% 0.00      709 0xffffffffb3f23708     cv_timedwait_sig+0x1c1
>     2   0%  77% 0.00      831 0xffffffffb3dd2070     pcache_insert+0x13d
>     2   0%  77% 0.00     5976 0xffffffffb3dd2070     pollwakeup+0x116
>     2   0%  77% 0.00     1339 0xffffffffb1eb9b80     
> metaslab_group_alloc+0x136
>     2   0%  78% 0.00     1514 0xffffffffb0a2f2d8     taskq_thread+0xe3
>     2   0%  78% 0.00     4042 0xffffffffb0a22988     vdev_queue_io_done+0xc3
>     2   0%  79% 0.00     3428 0xffffffffb0a21f08     vdev_queue_io_done+0xc3
>     2   0%  79% 0.00     1002 0xffffffffac44b558     sd_core_iostart+0x37
>     2   0%  79% 0.00     1387 0xffffffffa8c56d80     xbuf_iostart+0x7d
>     2   0%  80% 0.00      698 0xffffffffa58a3318     sd_return_command+0x11b
>     2   0%  80% 0.00      385 0xffffffffa58a3318     sd_start_cmds+0x115
>     2   0%  81% 0.00      562 0xffffffffa5647800     ssfcp_scsi_start+0x30
>     2   0%  81% 0.00     1620 0xffffffffa4162d58     ssfcp_scsi_init_pkt+0x1be
>     2   0%  82% 0.00      897 0xffffffffa4162d58     ssfcp_scsi_start+0x42
>     2   0%  82% 0.00      475 0xffffffffa4162b78     ssfcp_scsi_start+0x42
>     2   0%  82% 0.00      697 0xffffffffa40fb158     sd_start_cmds+0x115
>     2   0%  83% 0.00    10901 0xffffffffa28722a0     fifo_write+0x5b
>     2   0%  83% 0.00     4379 0xffffffffa28722a0     fifo_read+0xf8
>     2   0%  84% 0.00     1534 0xffffffffa2638390     emlxs_tx_get+0x38
>     2   0%  84% 0.00     1601 0xffffffffa2638350     emlxs_issue_iocb_cmd+0xc1
>     2   0%  84% 0.00     6697 0xffffffffa2503f08     vdev_queue_io_done+0x7b
>     2   0%  85% 0.00     4113 0xffffffffa24040b0     
> gcpu_ntv_mca_poll_wrapper+0x64
>     2   0%  85% 0.00      928 0xfffffe85dc140658     pollwakeup+0x116
>     1   0%  86% 0.00      404 iommulib_lock          lookup_cache+0x2c
>     1   0%  86% 0.00     4867 pidlock                thread_exit+0x6f
>     1   0%  86% 0.00     1245 plocks+0x3c0           pollhead_delete+0x23
>     1   0%  86% 0.00     2452 plocks+0x3c0           pollhead_insert+0x35
>     1   0%  86% 0.00      882 htable_mutex+0x3c0     htable_lookup+0x83
>     1   0%  87% 0.00    28547 htable_mutex+0x3c0     htable_create+0xe3
>     1   0%  87% 0.00    21173 htable_mutex+0x3c0     htable_release+0x8a
>     1   0%  87% 0.00     1235 htable_mutex+0x370     htable_lookup+0x83
>     1   0%  87% 0.00     3212 htable_mutex+0x370     htable_release+0x8a
>     1   0%  87% 0.00      793 htable_mutex+0x78      htable_lookup+0x83
>     1   0%  88% 0.00      981 buf_hash_table+0x1210  arc_buf_add_ref+0x7c
>     1   0%  88% 0.00     1222 buf_hash_table+0x1c50  arc_buf_add_ref+0x7c
>     1   0%  88% 0.00     1585 buf_hash_table+0x2490  arc_buf_remove_ref+0x6d
>     1   0%  88% 0.00  1545158 ARC_mru+0x58           remove_reference+0x56
>     1   0%  88% 0.00      564 0xffffffffbcad4a00     strrput+0x19a
>     1   0%  89% 0.00     1033 0xffffffffbcad4a00     polllock+0x3f
>     1   0%  89% 0.00      587 0xffffffffbd328098     putnext+0x6c
>     1   0%  89% 0.00    11576 0xffffffffbd328098     strrput+0x19a
>     1   0%  89% 0.00      847 0xffffffffb3f23708     pcache_insert+0x13d
>     1   0%  90% 0.00      703 0xffffffffbb909e20     poll_common+0x258
>     1   0%  90% 0.00     1286 0xffffffffbcad4870     kstrgetmsg+0x79
>     1   0%  90% 0.00     1528 0xffffffffb1012e00     cv_wait+0x70
>     1   0%  90% 0.00      404 0xffffffffb1011de0     zio_notify_parent+0x37
>     1   0%  90% 0.00      764 0xffffffffb1011de0     zio_create+0x29f
>     1   0%  91% 0.00     5887 0xffffffffb0a2f3b0     cv_wait+0x70
>     1   0%  91% 0.00      883 0xffffffffb1ad3de0     metaslab_group_alloc+0x7e
>     1   0%  91% 0.00      555 0xffffffffb10dfbc0     fifo_write+0x5b
>     1   0%  91% 0.00      692 0xffffffffb3dd2070     pollrelock+0x36
>     1   0%  91% 0.00     4390 0xffffffffb0a22988     vdev_queue_io+0x6e
>     1   0%  92% 0.00     1449 0xffffffffb0a21f60     vdev_cache_write+0x64
>     1   0%  92% 0.00      859 0xffffffffb0a21a20     vdev_cache_write+0x64
>     1   0%  92% 0.00      446 0xffffffffb0a20ec8     vdev_queue_io+0x6e
>     1   0%  92% 0.00     1987 0xffffffffb0a21f08     vdev_queue_io+0x6e
>     1   0%  92% 0.00     5968 0xffffffffb0a21f08     vdev_queue_io_done+0x3a
>     1   0%  93% 0.00      280 0xffffffffac44b558     sd_start_cmds+0x115
>     1   0%  93% 0.00      527 0xffffffffac44b118     sd_core_iostart+0x37
>     1   0%  93% 0.00      380 0xffffffffac51aed8     sd_initpkt_for_buf+0x110
>     1   0%  93% 0.00      742 0xffffffffac51aed8     sdstrategy+0x53
>     1   0%  94% 0.00      696 0xffffffffac51aed8     sd_start_cmds+0x115
>     1   0%  94% 0.00     5398 0xffffffffb0a1c988     vdev_queue_io_done+0x3a
>     1   0%  94% 0.00     6102 0xffffffffb0a1c988     vdev_queue_io_done+0x7b
>     1   0%  94% 0.00      988 0xffffffffa40fbcd8     sd_return_command+0x11b
>     1   0%  94% 0.00      298 0xffffffffa4101460     ssfcp_scsi_init_pkt+0x3b4
>     1   0%  95% 0.00      302 0xffffffffa40fbcd8     sdstrategy+0x53
>     1   0%  95% 0.00     1436 0xffffffffa40fb158     sdintr+0x3a
>     1   0%  95% 0.00      764 0xffffffffa40fbcd8     sd_initpkt_for_buf+0x110
>     1   0%  95% 0.00      846 0xffffffffa40fbcd8     sd_start_cmds+0x115
>     1   0%  95% 0.00     1172 0xffffffffa5644f60     vdev_cache_write+0x64
>     1   0%  96% 0.00     8401 0xffffffffa5644f08     vdev_queue_io_done+0xc3
>     1   0%  96% 0.00      417 0xffffffffa5644f08     vdev_queue_io+0x6e
>     1   0%  96% 0.00     3419 0xffffffffa5644f08     vdev_queue_io_done+0x7b
>     1   0%  96% 0.00     1341 0xffffffffa58a3318     sd_core_iostart+0x37
>     1   0%  96% 0.00      431 0xffffffffa22cc840     fc_ulp_init_packet+0x31
>     1   0%  97% 0.00      569 0xffffffff807a4000     callout_execute+0xeb
>     1   0%  97% 0.00      695 0xffffffff8025c000     callout_execute+0xeb
>     1   0%  97% 0.00      500 0xffffffff80244000     callout_execute+0xeb
>     1   0%  97% 0.00      855 0xfffffe85dc140658     pcache_insert+0x13d
>     1   0%  97% 0.00    13339 0xfffffe85d67ddc48     cv_wait+0x70
>     1   0%  98% 0.00     5377 0xffffffff80253000     untimeout+0x24
>     1   0%  98% 0.00     5104 0xffffffff80253000     timeout_common+0x39
>     1   0%  98% 0.00      508 0xffffffff80253000     callout_execute+0xeb
>     1   0%  98% 0.00      260 0xffffffffa2638420     emlxs_register_pkt+0x30
>     1   0%  99% 0.00     1059 0xffffffffa2638390     emlxs_tx_put+0x79
>     1   0%  99% 0.00      411 0xffffffffa3e3a298     sdstrategy+0x53
>     1   0%  99% 0.00      336 0xffffffffa3d6e380     fc_ulp_init_packet+0x31
>     1   0%  99% 0.00      926 0xffffffffa3cdfc58     sd_start_cmds+0x115
>     1   0%  99% 0.00      894 0xffffffffa3e3a298     sd_core_iostart+0x37
>     1   0% 100% 0.00      766 0xffffffffa3e3a298     sd_buf_iodone+0x23
>     1   0% 100% 0.00      340 0xffffffffa3e58420     emlxs_register_pkt+0x30
>     1   0% 100% 0.00     1516 0xffffffffa3e58420     emlxs_unregister_pkt+0x53
> -------------------------------------------------------------------------------
>
> Adaptive mutex block: 7 events in 30.019 seconds (0 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller  
> -------------------------------------------------------------------------------
>     1  14%  14% 0.00    39004 0xffffffffbe555040     fifo_read+0x5c
>     1  14%  29% 0.00    78624 0xffffffffb3dd2070     pollwakeup+0x116
>     1  14%  43% 0.00     6668 0xffffffffb0a2f200     taskq_dispatch+0x1b8
>     1  14%  57% 0.00    35694 0xffffffffb0a2f3b0     cv_wait+0x70
>     1  14%  71% 0.00    22697 0xffffffffb0a21f08     vdev_queue_io_done+0xc3
>     1  14%  86% 0.00    20174 0xffffffffb0a1c988     vdev_queue_io_done+0x3a
>     1  14% 100% 0.00     7365 0xfffffe85d67ddc48     cv_wait+0x70  
> -------------------------------------------------------------------------------
>
> Spin lock spin: 478 events in 30.019 seconds (16 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller  
> -------------------------------------------------------------------------------
>   131  27%  27% 0.00     1383 0xffffffffa21a89f8     disp_lock_enter+0x1e
>    93  19%  47% 0.00      962 0xffffffffa250e9c0     disp_lock_enter+0x1e
>    84  18%  64% 0.00     3085 0xffffffffa21a8a28     disp_lock_enter+0x1e
>    73  15%  80% 0.00     2105 cpu0_disp              disp_lock_enter+0x1e
>    33   7%  87% 0.00     3548 0xffffffffa21a8a28     disp_lock_enter_high+0x9
>    22   5%  91% 0.00     6011 cpu0_disp              disp_lock_enter_high+0x9
>    21   4%  96% 0.00     2222 hres_lock              hr_clock_lock+0x1d
>     9   2%  97% 0.00     3869 0xffffffffa21a89f8     disp_lock_enter_high+0x9
>     8   2%  99% 0.00     1649 0xffffffffa250e9c0     disp_lock_enter_high+0x9
>     4   1% 100% 0.00      624 cp_default             disp_lock_enter+0x1e 
>  
> -------------------------------------------------------------------------------
>
> Thread lock spin: 6 events in 30.019 seconds (0 events/sec)
>
> Count indv cuml rcnt     nsec Lock                   Caller  
> -------------------------------------------------------------------------------
>     2  33%  33% 0.00      698 transition_lock        ts_update_list+0x5c
>     2  33%  67% 0.00      779 cpu[3]+0xf8            cv_wait+0x3e
>     1  17%  83% 0.00      452 cpu[3]+0xf8            cv_timedwait_sig+0xe1
>     1  17% 100% 0.00      324 cpu[2]+0xf8            
> cv_timedwait_sig+0xe1  
> -------------------------------------------------------------------------------
>
> --
> Bob Friesenhahn
> bfrie...@simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
> GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/
> _______________________________________________
> zfs-discuss mailing list
> zfs-discuss@opensolaris.org
> http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

-- 
----------------
Sanjeev Bagewadi
Solaris RPE 
Bangalore, India
_______________________________________________
zfs-discuss mailing list
zfs-discuss@opensolaris.org
http://mail.opensolaris.org/mailman/listinfo/zfs-discuss

Reply via email to