1 / 5

Profiling Applications

Profiling Applications. David Rubio Forsythe Solutions Group, Inc. drubio@forsythe.com. Overall Performance Analysis Approach. Concentrate on business critical application(s) Understand thread states Blocked (Sleeping) – on what? Running – what code? Use appropriate tools truss, strace

stella
Download Presentation

Profiling Applications

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Profiling Applications David Rubio Forsythe Solutions Group, Inc.drubio@forsythe.com

  2. Overall Performance Analysis Approach • Concentrate on business critical application(s) • Understand thread states • Blocked (Sleeping) – on what? • Running – what code? • Use appropriate tools • truss, strace • snoop, tcpdump • pfiles, lsof • prstat –Lmn20 1 • DTrace • Latency Profiles • I/O • Network • Memory • Functions in application

  3. Profiling Application Execution • Useful DTrace one-liner to capture what code is being executed: # dtrace -n 'profile-301 /arg1/ {@[execname, ustack()] = count()} tick-20s {trunc(@,16); exit(0)}' dtrace: description 'profile-301 ' matched 2 probes … java libjvm.so`__1cJMarkSweepOIsAliveClosureLdo_object_b6MpnHoopDesc__i_+0x8 libjvm.so`__1cLPSMarkSweepQinvoke_no_policy6Fpii_v_+0x6b4 libjvm.so`__1cLPSMarkSweepGinvoke6Fpii_v_+0xa4 libjvm.so`__1cVVM_ParallelGCSystemGCEdoit6M_v_+0xf8 libjvm.so`__1cMVM_OperationIevaluate6M_v_+0x80 libjvm.so`__1cIVMThreadDrun6M_v_+0x6e0 libjvm.so`__1cG_start6Fpv_0_+0x208 libc.so.1`_lwp_start 209 ns-slapd libdb.so.2`__memp_stat_hash+0x54 libdb.so.2`__memp_trickle_pp+0x144 libback-ldbm.so`trickle_threadmain+0xb8 libnspr4.so`_pt_root+0xc8 libc.so.1`_lwp_start 368

  4. Profiling Application Latency #!/usr/sbin/dtrace -s /* * Usage: time-funcs.d -p pid * time-funcs.d -c 'application args' */ pid$target:::entry { self->ts[self->depth++] = timestamp; } pid$target:::return /self->ts[--self->depth] != 0/ { @[probefunc ] = quantize(timestamp - self->ts[self->depth]); self->ts[self->depth] = 0; } tick-30s { exit(0); } END { trunc(@, 20);}

  5. Partial Output from D Script select value ------------- Distribution ------------- count 33554432 | 0 67108864 |@@@@@@@@@@@@@@@@@@@@@@ 294 134217728 |@@@@@@@@@ 118 268435456 | 0 536870912 |@@@@@@@@@ 116 1073741824 | 0 pthread_cond_timedwait value ------------- Distribution ------------- count 524288 | 0 1048576 | 1 2097152 | 0 4194304 | 0 8388608 | 1 16777216 | 2 33554432 |@@ 8 67108864 |@@@@@@@ 32 …

More Related