libunwind-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Libunwind-devel] libunwind-1.0


From: Arun Sharma
Subject: [Libunwind-devel] libunwind-1.0
Date: Fri, 2 Sep 2011 22:21:31 -0700

I'm happy to announce libunwind-1.0. This is the result of more than
two years of development by many people on multiple architectures and
operating systems.

Linux (x64 and ARM) are well supported. You're advised to use a recent
toolchain (gcc-4.5+), so the compiler generates unwind information for
every instruction it emits. A recent version of glibc (as in released
in the last two years) would also improve the chances that unwinding
works well.

Features
=======

** Fast unwind (rbp, rsp, rip only) on x86_64 with a fallback to
   slow code path (Lassi Tuura)
** Improved local and remote unwinding on ARM (Ken Werner)
** Testing, stability and many fixes on x86 (Paul Pluzhnikov)
** FreeBSD port and clean separation of OS specific bits
   (Konstantin Belousov)

Performance
===========

On a 1.6 GHz Atom:

Full unwind:

./Lperf-simple
unw_getcontext : cold avg=  329.018 nsec, warm avg=  169.277 nsec
unw_init_local : cold avg=  538.826 nsec, warm avg=   88.215 nsec
no cache        : unw_step : 1st= 6273.108 min= 4631.168 avg= 4713.607 nsec
global cache    : unw_step : 1st= 1689.173 min= 1234.828 avg= 1261.078 nsec
per-thread cache: unw_step : 1st=  962.671 min=  443.099 avg=  449.955 nsec

Fast unwind (only RIP - you don't get to see arguments):

./Lperf-trace
unw_getcontext : cold avg=  329.018 nsec, warm avg=  169.277 nsec
unw_init_local : cold avg=  519.753 nsec, warm avg=   88.215 nsec
no cache        : unw_step : 1st= 8576.321 min=   56.231 avg=   60.247 nsec
global cache    : unw_step : 1st=  321.640 min=   56.231 avg=   59.303 nsec
per-thread cache: unw_step : 1st=  206.929 min=   56.231 avg=   59.065 nsec

Challenges
=========

dl_iterate_phdr() is not async signal safe. This continues to be a
problem in large scale deployments. Shouldn't be a problem for one-off
profiling, debugging scenarios.

Who uses libunwind
================

* google-perftools (cpu and heap profiling)
* jemalloc (heap profiling)
* poor man's profiler (http://poormansprofiler.org/,
https://github.com/knielsen/knielsen-pmp)

and probably a number of other use cases I don't know about.

Without further ado:

http://download.savannah.gnu.org/releases/libunwind/libunwind-1.0.tar.gz

 -Arun



reply via email to

[Prev in Thread] Current Thread [Next in Thread]