On Mar 25, 2012, at 6:51 PM, Aubrey Li wrote: > On Mon, Mar 26, 2012 at 4:18 AM, Jim Mauro <james.ma...@oracle.com> wrote: >> If you're chasing CPU utilization, specifically %sys (time in the kernel), >> I would start with a time-based kernel profile. >> >> #dtrace -n 'profile-997hz /arg0/ { @[stack()] = count(); } tick-60sec { >> trunc(@, 20); printa(@0; }' >> >> I would be curious to see where the CPU cycles are being consumed first, >> before going down the lock path… >> >> This assume that most or all of CPU utilization is %sys. If it's %usr, we >> take >> a different approach. >> > > Here is the output, I changed to "tick-5sec" and "trunc(@, 5)". > No.2 and No.3 is what I care about. > > Thanks, > -Aubrey > > 21 80536 :tick-5sec > ========== 1 ===================== > genunix`avl_walk+0x6a > genunix`as_gap_aligned+0x2b7 > unix`map_addr_proc+0x179 > unix`map_addr+0x8e > genunix`choose_addr+0x9e > zfs`zfs_map+0x161 > genunix`fop_map+0xc5 > genunix`smmap_common+0x268 > genunix`smmaplf32+0xa2 > genunix`syscall_ap+0x92 > unix`_sys_sysenter_post_swapgs+0x149 > 1427 > > ========= 2 ================= > unix`mutex_delay_default+0x7 > unix`mutex_vector_enter+0x2ae > zfs`zfs_zget+0x46 > zfs`zfs_root+0x55 > genunix`fsop_root+0x2d > genunix`traverse+0x65 > genunix`lookuppnvp+0x446 > genunix`lookuppnatcred+0x119 > genunix`lookupnameatcred+0x97 > genunix`lookupnameat+0x6b > genunix`vn_openat+0x147 > genunix`copen+0x493 > genunix`openat64+0x2d > unix`_sys_sysenter_post_swapgs+0x149 > 2645 > > ========== 3 ===================== > unix`mutex_delay_default+0x7 > unix`mutex_vector_enter+0x2ae > zfs`zfs_zget+0x46 > zfs`zfs_root+0x55 > genunix`fsop_root+0x2d > genunix`traverse+0x65 > genunix`lookuppnvp+0x446 > genunix`lookuppnatcred+0x119 > genunix`lookupnameatcred+0x97 > genunix`lookupnameat+0x6b > genunix`cstatat_getvp+0x11e > genunix`cstatat64_32+0x5d > genunix`fstatat64_32+0x4c > unix`_sys_sysenter_post_swapgs+0x149 > 3201 > > ======== 4 =========== > unix`i86_mwait+0xd > unix`cpu_idle_mwait+0x154 > unix`idle+0x116 > unix`thread_start+0x8 > 3559 > > ========= 5 ============== > tmpfs`tmp_readdir+0x138 > genunix`fop_readdir+0xe8 > genunix`getdents64+0xd5 > unix`_sys_sysenter_post_swapgs+0x149 > 4589 > > ========= 6 ================ > unix`strlen+0x3 > genunix`fop_readdir+0xe8 > genunix`getdents64+0xd5 > unix`_sys_sysenter_post_swapgs+0x149 > 5005 > > =========== 7 ================= > tmpfs`tmp_readdir+0xc7 > genunix`fop_readdir+0xe8 > genunix`getdents64+0xd5 > unix`_sys_sysenter_post_swapgs+0x149 > 9548 > > > ========= 8 ======================= > unix`strlen+0x8 > genunix`fop_readdir+0xe8 > genunix`getdents64+0xd5 > unix`_sys_sysenter_post_swapgs+0x149 > 11166 > > > ============= 9 =================== > unix`strlen+0xe > genunix`fop_readdir+0xe8 > genunix`getdents64+0xd5 > unix`_sys_sysenter_post_swapgs+0x149 > 14491 > > ============= 10 ================== > tmpfs`tmp_readdir+0xbe > genunix`fop_readdir+0xe8 > genunix`getdents64+0xd5 > unix`_sys_sysenter_post_swapgs+0x149 > 39540
Well, there you go. tmpfs is not zfs. -- richard -- ZFS and performance consulting http://www.RichardElling.com SCALE 10x, Los Angeles, Jan 20-22, 2012 _______________________________________________ zfs-discuss mailing list zfs-discuss@opensolaris.org http://mail.opensolaris.org/mailman/listinfo/zfs-discuss