You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 14 Next »

oprofile

This is a sampling profiler, so it has minimal impact on Traffic Servers performance.

Running the profiler and checking the status. Make sure the call depth is set to where you want it.

// start the deamon
bcall@snowball trafficserver$ sudo opcontrol --start-daemon
WARNING: Deprecated config file /etc/modprobe.conf, all config files belong into /etc/modprobe.d/.
Detected stale lock file. Removing.
Using default event: CPU_CLK_UNHALTED:100000:0:1:1
Using 2.6+ OProfile kernel interface.
Using log file /var/lib/oprofile/samples/oprofiled.log
Daemon started.

// check the status
bcall@snowball trafficserver$ sudo opcontrol --status
Daemon running: pid 29524
Separate options: library
vmlinux file: none
Image filter: none
Call-graph depth: 6

After making sure the daemon is running aand your settings are set to what you want. Start traffic server and start running the benchmark. I normally wait a few seconds for things to warm up before I start to profile the code.

// profile the code for 60 seconds
bcall@snowball trafficserver$ sudo opcontrol -s; sleep 60; sudo opcontrol -t
Profiler running.
Stopping profiling.

Running a basic report will tell you what functions are showing up in the sampled profile the most.

bcall@snowball trafficserver$ sudo opreport --symbols /usr/local/bin/traffic_server | head
CPU: Core 2, speed 2003 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (Unhalted core cycles) count 100000
samples % image name app name symbol name
5158 4.6037 traffic_server traffic_server ink_freelist_new
3223 2.8767 traffic_server traffic_server HttpSM::_instantiate_func(HttpSM*, HttpSM*)
3060 2.7312 traffic_server traffic_server mime_hdr_field_find(MIMEHdrImpl*, char const*, int)
3044 2.7169 traffic_server traffic_server ink_freelist_free
2586 2.3081 libc-2.11.1.so traffic_server memcpy
2487 2.2197 traffic_server traffic_server HttpCompat::parse_tok_list(StrList*, int, char const*, int, char)
2309 2.0609 libc-2.11.1.so traffic_server vfprintf

Running a callgraph report.

bcall@snowball trafficserver$ sudo opreport -cg --symbols /usr/local/bin/traffic_server | head -50
samples % linenr info image name app name symbol name
-------------------------------------------------------------------------------
18 26.4706 HttpSM.cc:2640 traffic_server traffic_server HttpSM::main_handler(int, void*)
20 29.4118 HttpAccept.cc:33 traffic_server traffic_server HttpAccept::mainEvent(int, void*)
30 44.1176 HttpClientSession.cc:428 traffic_server traffic_server HttpClientSession::state_api_callout(int, void*)
5158 4.6037 ink_queue.cc:169 traffic_server traffic_server ink_freelist_new
5158 100.000 ink_queue.cc:169 traffic_server traffic_server ink_freelist_new self
-------------------------------------------------------------------------------
26 100.000 HttpSM.cc:2640 traffic_server traffic_server HttpSM::main_handler(int, void*)
3223 2.8767 HttpSM.cc:154 traffic_server traffic_server HttpSM::_instantiate_func(HttpSM*, HttpSM*)
3223 100.000 HttpSM.cc:154 traffic_server traffic_server HttpSM::_instantiate_func(HttpSM*, HttpSM*) self
-------------------------------------------------------------------------------
3060 2.7312 MIME.cc:1380 traffic_server traffic_server mime_hdr_field_find(MIMEHdrImpl*, char const*, int)
3060 100.000 MIME.cc:1380 traffic_server traffic_server mime_hdr_field_find(MIMEHdrImpl*, char const*, int) self

Google profiler

This too is a sampling profiler, so it has minimal impact on Traffic Servers performance.

Callgrind

Callgrind is will slow down the performance of traffic server significantly.

  • No labels