summaryrefslogtreecommitdiffstats
path: root/cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt
diff options
context:
space:
mode:
Diffstat (limited to 'cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt')
-rw-r--r--cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt153
1 files changed, 153 insertions, 0 deletions
diff --git a/cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt b/cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt
new file mode 100644
index 0000000..d8a5aec
--- /dev/null
+++ b/cddl/contrib/dtracetoolkit/Examples/hotkernel_example.txt
@@ -0,0 +1,153 @@
+The following are demonstrations of the hotkernel DTrace program.
+
+
+Here hotkernel is run for a couple of seconds then Ctrl-C is hit,
+
+ # ./hotkernel
+ Sampling... Hit Ctrl-C to end.
+ ^C
+ FUNCTION COUNT PCNT
+ unix`swtch 1 0.1%
+ pcplusmp`apic_redistribute_compute 1 0.1%
+ genunix`strrput 1 0.1%
+ unix`sys_call 1 0.1%
+ genunix`fsflush_do_pages 1 0.1%
+ TS`ts_wakeup 1 0.1%
+ genunix`callout_schedule_1 1 0.1%
+ unix`page_create_putback 1 0.1%
+ unix`mutex_enter 4 0.3%
+ unix`cpu_halt 1575 99.2%
+
+The output summarises which kernel-level function was sampled on the
+CPU the most. This report shows that unix`cpu_halt was sampled 1575
+times, which was 99.2% of the kernel-level samples.
+
+As it turns out, unix`cpu_halt is called on this x86 server as part of the
+kernel idle thread - explaining why it is so often found on the CPU,
+
+ # dtrace -n 'fbt::cpu_halt:entry { @[stack()] = count(); }'
+ dtrace: description 'fbt::cpu_halt:entry ' matched 1 probe
+ ^C
+
+ unix`idle+0x3b
+ unix`thread_start+0x3
+ 956
+
+This kernel stack trace indicates that cpu_halt() is called by idle().
+
+The following is a SPARC example,
+
+ # ./hotkernel
+ Sampling... Hit Ctrl-C to end.
+ ^C
+ FUNCTION COUNT PCNT
+ genunix`fop_ioctl 1 0.1%
+ genunix`allocb_cred 1 0.1%
+ genunix`poll_common 1 0.1%
+ genunix`cv_block 1 0.1%
+ genunix`strioctl 1 0.1%
+ genunix`disp_lock_exit 1 0.1%
+ genunix`crfree 1 0.1%
+ ufs`ufs_getpage 1 0.1%
+ SUNW,UltraSPARC-IIi`copyin 1 0.1%
+ genunix`strmakedata 1 0.1%
+ genunix`cv_waituntil_sig 1 0.1%
+ SUNW,UltraSPARC-IIi`prefetch_page_r 1 0.1%
+ unix`set_freemem 1 0.1%
+ unix`page_trylock 1 0.1%
+ genunix`anon_get_ptr 1 0.1%
+ unix`page_hashin 1 0.1%
+ genunix`bt_getlowbit 1 0.1%
+ unix`pp_load_tlb 1 0.1%
+ unix`_resume_from_idle 1 0.1%
+ unix`hat_pageunload 1 0.1%
+ genunix`strrput 1 0.1%
+ genunix`strpoll 1 0.1%
+ unix`page_do_hashin 1 0.1%
+ unix`cpu_vm_stats_ks_update 1 0.1%
+ genunix`sleepq_wakeone_chan 1 0.1%
+ unix`lock_set_spl 1 0.1%
+ tl`tl_wput 1 0.1%
+ genunix`kstrgetmsg 1 0.1%
+ genunix`qbackenable 1 0.1%
+ genunix`releasef 1 0.1%
+ genunix`callout_execute 1 0.1%
+ uata`ata_hba_start 1 0.1%
+ genunix`pcacheset_cmp 1 0.1%
+ genunix`sleepq_insert 1 0.1%
+ genunix`syscall_mstate 1 0.1%
+ sockfs`sotpi_recvmsg 1 0.1%
+ genunix`strput 1 0.1%
+ genunix`timespectohz 1 0.1%
+ unix`lock_clear_splx 1 0.1%
+ genunix`read 1 0.1%
+ genunix`as_segcompar 1 0.1%
+ unix`atomic_cas_64 1 0.1%
+ unix`mutex_exit 1 0.1%
+ genunix`cv_unsleep 1 0.1%
+ unix`putnext 1 0.1%
+ unix`intr_thread 1 0.1%
+ genunix`hrt2tv 1 0.1%
+ sockfs`socktpi_poll 1 0.1%
+ unix`sfmmu_mlspl_enter 1 0.1%
+ SUNW,UltraSPARC-IIi`get_ecache_tag 1 0.1%
+ SUNW,UltraSPARC-IIi`gethrestime 1 0.1%
+ genunix`cv_timedwait_sig 1 0.1%
+ genunix`getq_noenab 1 0.1%
+ SUNW,UltraSPARC-IIi`flushecacheline 1 0.1%
+ unix`utl0 1 0.1%
+ genunix`anon_alloc 1 0.1%
+ unix`page_downgrade 1 0.1%
+ unix`setfrontdq 1 0.1%
+ genunix`timeout_common 1 0.1%
+ unix`bzero 1 0.1%
+ unix`ktl0 2 0.1%
+ genunix`canputnext 2 0.1%
+ genunix`clear_active_fd 2 0.1%
+ unix`sfmmu_tlb_demap 2 0.1%
+ unix`page_vpadd 2 0.1%
+ SUNW,UltraSPARC-IIi`check_ecache_line 2 0.1%
+ genunix`cyclic_softint 2 0.1%
+ genunix`restore_mstate 2 0.1%
+ genunix`anon_map_getpages 2 0.1%
+ genunix`putq 2 0.1%
+ unix`page_lookup_create 2 0.1%
+ dtrace`dtrace_dynvar_clean 2 0.1%
+ unix`sfmmu_pageunload 2 0.1%
+ genunix`cpu_decay 2 0.1%
+ genunix`kmem_cache_alloc 3 0.2%
+ unix`rw_exit 3 0.2%
+ tl`tl_wput_data_ser 3 0.2%
+ unix`page_get_replacement_page 3 0.2%
+ unix`page_sub 3 0.2%
+ genunix`clock 3 0.2%
+ SUNW,UltraSPARC-IIi`copyout 3 0.2%
+ unix`mutex_enter 4 0.2%
+ genunix`pcache_poll 5 0.3%
+ SUNW,UltraSPARC-IIi`scrub_ecache_line 5 0.3%
+ SUNW,UltraSPARC-IIi`hwblkpagecopy 22 1.2%
+ SUNW,UltraSPARC-IIi`hwblkclr 39 2.1%
+ unix`generic_idle_cpu 506 26.8%
+ unix`idle 1199 63.5%
+
+Which shows the most common function is unix`idle.
+
+
+
+
+Now the hotkernel tool is demonstrated with the -m option, to only print
+out samples by module,
+
+ # ./hotkernel -m
+ Sampling... Hit Ctrl-C to end.
+ ^C
+ MODULE COUNT PCNT
+ usbms 1 0.0%
+ specfs 1 0.0%
+ uhci 1 0.0%
+ sockfs 2 0.0%
+ genunix 28 0.6%
+ unix 4539 99.3%
+
+Here, genunix and unix (the two core parts of the kernel) were the most
+common module to be executing on-CPU.
OpenPOWER on IntegriCloud