4ast [Mon, 19 Dec 2016 16:13:46 +0000 (08:13 -0800)]
Merge pull request #774 from goldshtn/usdt-tools
USDT tools for higher level languages
Sasha Goldshtein [Mon, 19 Dec 2016 09:54:31 +0000 (09:54 +0000)]
uobjnew: Remove -l switch from examples
Sasha Goldshtein [Mon, 19 Dec 2016 09:52:34 +0000 (09:52 +0000)]
uobjnew: Attach uprobe only to the requested process
When C allocations are traced, attach the `malloc`
uprobe only to the requested process -- otherwise, we
get allocation information from the entire system.
Sasha Goldshtein [Sat, 29 Oct 2016 21:03:44 +0000 (14:03 -0700)]
README: Add u* tools based on USDT probes
Sasha Goldshtein [Sat, 29 Oct 2016 21:00:25 +0000 (14:00 -0700)]
uflow: Add man page and companion examples file
Sasha Goldshtein [Sat, 29 Oct 2016 20:44:55 +0000 (13:44 -0700)]
uthreads: Add man page and companion examples file
Sasha Goldshtein [Sat, 29 Oct 2016 20:33:24 +0000 (13:33 -0700)]
uobjnew: Add man page and companion examples file
Sasha Goldshtein [Sat, 29 Oct 2016 20:20:52 +0000 (13:20 -0700)]
ugc: Add man page and companion examples file
Sasha Goldshtein [Sat, 29 Oct 2016 20:08:39 +0000 (13:08 -0700)]
ucalls: Add man page and companion examples file
Sasha Goldshtein [Sat, 29 Oct 2016 19:35:29 +0000 (12:35 -0700)]
ustat: Add man page and companion example file
Sasha Goldshtein [Thu, 27 Oct 2016 22:58:14 +0000 (15:58 -0700)]
ustat: Graceful error handling
If the process in question doesn't have the USDT probes we
expect, handle the failure gracefully. After all, it could
be a binary compiled without USDT support, the pid could be
recycled to some other application, or -- the process name
could match, but by accident, and really belong to some
other runtime.
Sasha Goldshtein [Thu, 27 Oct 2016 22:17:58 +0000 (15:17 -0700)]
ustat: Replace \0 with spaces in cmdline
The /proc/PID/cmdline file has \0 for spaces in the command
line, and there may be trailing \0 characters as well.
Replace them all with spaces.
Sasha Goldshtein [Wed, 26 Oct 2016 19:52:06 +0000 (12:52 -0700)]
uflow: Trace method execution flow
This tool traces method executions and prints out messages
with a nesting depth indicator that allows relatively easy
visualization of program flow. To reduce overhead, `-C` and
`-M` switches take class and method prefixes to filter the
output by. The filtering takes place in the BPF program, so
the unnecessary data never ends up in user space.
Usage examples:
```
uflow java 185
uflow -M index python 180
uflow -C 'IRB::Irb' ruby 10041
```
Sasha Goldshtein [Wed, 26 Oct 2016 13:50:31 +0000 (06:50 -0700)]
ustat: Change 'count' argument type to int
Sasha Goldshtein [Wed, 26 Oct 2016 13:40:35 +0000 (06:40 -0700)]
ustat: Sort by pid if no other sort column provided
Sasha Goldshtein [Wed, 26 Oct 2016 13:34:06 +0000 (06:34 -0700)]
tools: Add block comments to u* scripts
Sasha Goldshtein [Tue, 25 Oct 2016 18:52:39 +0000 (11:52 -0700)]
ustat: Activity stats from high-level languages
This tool gathers statistics (by pid) on method calls,
class loads, garbage collections, thread creations, object
allocations, and exceptions raised and prints them in a
top-like style. Supported languages currently include
Java, Python, Ruby, and Node. Not all languages provide
the necessary probes for all event types.
Usage examples:
```
ustat -C
ustat -l java 1
ustat -l ruby -S objnew
```
Sasha Goldshtein [Tue, 25 Oct 2016 18:51:46 +0000 (11:51 -0700)]
python: Expose active probes from USDT object
Allow callers to obtain the list of active (enabled) USDT
probes from the USDT object, if they need to enable the
uprobes by hand without using the bcc attach support. This
is required when the same uprobe needs to be enabled in
more than one process.
Sasha Goldshtein [Tue, 25 Oct 2016 18:51:32 +0000 (11:51 -0700)]
python: Do not call USDT.get_text() twice
Sasha Goldshtein [Tue, 25 Oct 2016 12:28:29 +0000 (05:28 -0700)]
uobjnew: Summarize object allocations
Use various USDT probes in Java and Ruby, and `malloc()`
uprobe in C, to summarize object allocations by type or
by size. Print statistics at the end or at intervals, with
optional trimming of top types by number of instances
allocated or number of bytes.
Sasha Goldshtein [Tue, 25 Oct 2016 11:30:54 +0000 (04:30 -0700)]
ucalls: TODO reminder to probe C methods
Sasha Goldshtein [Tue, 25 Oct 2016 11:28:53 +0000 (04:28 -0700)]
ugc: Fix order of arguments in usage comment
Sasha Goldshtein [Tue, 25 Oct 2016 11:28:06 +0000 (04:28 -0700)]
uthreads: Add pthread support
Trace `pthread_start` calls and get the symbol for the
newly-started thread for printing. Also allow no-Java runs
with no language specified for pthread-only tracing.
Sasha Goldshtein [Tue, 25 Oct 2016 11:08:10 +0000 (04:08 -0700)]
uthreads: Trace thread creation/destruction events
`uthreads` attaches to thread start and stop USDT probes
and traces out thread creation and destruction events.
Currently, only Java is supported.
Sasha Goldshtein [Tue, 25 Oct 2016 09:18:35 +0000 (02:18 -0700)]
ucalls: Trace syscalls
Add `-S` switch for tracing syscalls with or without high-
level language method calls. When `-S` is provided, attach
to all `sys_` and `SyS_` entry points in the kernel and
trace the number of calls and execution latency (if `-L`
was also specified).
This is now also a useful general-purpose tool for syscall
count/latency summarizing when a language is not specified.
Sasha Goldshtein [Tue, 25 Oct 2016 07:08:33 +0000 (00:08 -0700)]
ugc: Node support
Add Node support for gc__start and gc__done probes, which
includes GC type flag parsing.
Sasha Goldshtein [Thu, 20 Oct 2016 23:08:37 +0000 (16:08 -0700)]
tools: Script skeletons
Skeletons for method flow, object allocations, general
event statistics, and thread statistics.
Sasha Goldshtein [Thu, 20 Oct 2016 23:07:23 +0000 (16:07 -0700)]
ugc: Add description messages for GC events
For runtimes that make it available, we now extract GC
event information such as heap sizes and print this
information in addition to the GC duration and timestamp.
Sasha Goldshtein [Mon, 17 Oct 2016 16:04:37 +0000 (09:04 -0700)]
ugc: Monitor GC events in high-level languages
`ugc` monitors GC start and end events in Java, Python,
and Ruby, printing out a message when a GC cycle completes
along with the duration of the GC and an optional
additional description that depends on the target language.
NOTE: This WIP does not have any interesting additional
descriptions yet.
Usage example:
```
ugc java 1448 # monitor Java GCs in process 1448
```
Sasha Goldshtein [Mon, 17 Oct 2016 11:13:48 +0000 (04:13 -0700)]
ucalls: Summarize method calls with USDT
`ucalls` is a new tool that uses the USDT probes in high-
level languages (Java, Python, Ruby) to summarize the
number of method calls and optionally their latency. This
is similar to `funccount` and `funclatency` but for methods
in Java, Python, Ruby, and other languages that might have
USDT probes for method entry and exit.
`ucalls` uses the `method__entry` and `method__return`
probes in Java and Ruby, and the `function__entry` and
`function__return` probes in Python. The Python probes are
not as accurate because they do not report the class name,
but are still useful.
The optional `-L` switch indicates whether latency numbers
are required. By default, only the number of calls to each
method is printed. The `-T` switch filters out the top
methods (by number of calls or total latency).
4ast [Fri, 16 Dec 2016 22:31:58 +0000 (14:31 -0800)]
Merge pull request #862 from palmtenor/cppusdt
Add USDT support to C++ API
Teng Qin [Fri, 16 Dec 2016 04:57:33 +0000 (20:57 -0800)]
Example of using USDT
Teng Qin [Thu, 15 Dec 2016 21:20:09 +0000 (13:20 -0800)]
Add USDT support to C++ API
Teng Qin [Thu, 15 Dec 2016 21:55:22 +0000 (13:55 -0800)]
Define a constant for USDT program include header
4ast [Wed, 14 Dec 2016 23:37:09 +0000 (15:37 -0800)]
Merge pull request #861 from brendangregg/master
Improve linear histogram limit, and improve error message.
Brendan Gregg [Wed, 14 Dec 2016 22:54:43 +0000 (14:54 -0800)]
Improve linear histogram limit, and improve error message.
4ast [Wed, 14 Dec 2016 21:47:03 +0000 (13:47 -0800)]
Merge pull request #860 from brendangregg/master
runqlen: use bpf_get_smp_processor_id()
Brendan Gregg [Wed, 14 Dec 2016 21:28:13 +0000 (13:28 -0800)]
runqlen: use bpf_get_smp_processor_id()
4ast [Wed, 14 Dec 2016 21:12:54 +0000 (13:12 -0800)]
Merge pull request #859 from brendangregg/master
add runqlen tool
Brendan Gregg [Wed, 14 Dec 2016 20:10:59 +0000 (12:10 -0800)]
add runqlen tool
Brendan Gregg [Wed, 14 Dec 2016 19:31:00 +0000 (11:31 -0800)]
add print_linear_hist() for linear histograms
4ast [Wed, 14 Dec 2016 02:13:26 +0000 (18:13 -0800)]
Merge pull request #856 from brendangregg/master
check effective userid on run #850
4ast [Wed, 14 Dec 2016 00:26:05 +0000 (16:26 -0800)]
Merge pull request #837 from zlim/docker
add Quick Start Guide for bcc docker
Brendan Gregg [Tue, 13 Dec 2016 23:18:29 +0000 (15:18 -0800)]
check effective userid on run #850
4ast [Mon, 12 Dec 2016 16:27:30 +0000 (08:27 -0800)]
Merge pull request #852 from qmonnet/kernelfeatures
docs: Update eBPF features list
Quentin Monnet [Mon, 12 Dec 2016 12:42:51 +0000 (13:42 +0100)]
docs: Update eBPF features list
Update of BPF features list, following the release of kernel 4.9.
4ast [Sun, 11 Dec 2016 02:05:31 +0000 (18:05 -0800)]
Merge pull request #818 from ceeaspb/master
offwaketime: update with get_stackid fixes #437
ceeaspb [Sat, 26 Nov 2016 22:36:10 +0000 (22:36 +0000)]
update offwaketime with get_stackid
4ast [Fri, 9 Dec 2016 23:06:45 +0000 (15:06 -0800)]
Merge pull request #849 from palmtenor/cppperfevent
Expose perf event support in C++ API
Teng Qin [Fri, 9 Dec 2016 20:57:02 +0000 (12:57 -0800)]
Perf event example using C++ API
Teng Qin [Fri, 9 Dec 2016 01:46:13 +0000 (17:46 -0800)]
Expose PMU event support in C++ API
4ast [Fri, 9 Dec 2016 16:40:29 +0000 (08:40 -0800)]
Merge pull request #846 from palmtenor/improve_buffer
Improve C++ API perf buffer polling
Teng Qin [Fri, 9 Dec 2016 08:07:55 +0000 (00:07 -0800)]
Improve C++ API perf buffer polling
4ast [Fri, 9 Dec 2016 06:34:31 +0000 (22:34 -0800)]
Merge pull request #843 from shodoco/flag
add support for bpf map flags
4ast [Fri, 9 Dec 2016 06:32:46 +0000 (22:32 -0800)]
Merge pull request #844 from palmtenor/cleanprog
Make sure program FDs get cleaned up correctly
Teng Qin [Fri, 9 Dec 2016 02:03:33 +0000 (18:03 -0800)]
Make sure programs get cleaned up correctly
4ast [Fri, 9 Dec 2016 04:37:38 +0000 (20:37 -0800)]
Merge pull request #845 from affansyed/master
Fix for issue 829 I reported
affansyed [Fri, 9 Dec 2016 04:04:52 +0000 (09:04 +0500)]
fix issue 829
Needed to make array initialized to null before bpf_probe_read as the
verifier was rejecting the original code. will probably need to fix the
tutorial as well
affansyed [Fri, 9 Dec 2016 04:00:08 +0000 (09:00 +0500)]
Merge pull request #1 from iovisor/master
updating my local repo
Huapeng Zhou [Wed, 7 Dec 2016 02:10:38 +0000 (18:10 -0800)]
add support for bpf map flags
4ast [Thu, 8 Dec 2016 01:26:37 +0000 (17:26 -0800)]
Merge pull request #842 from zhiyisun/dev
Fix bug of missing to install simple_tc.py
Zhiyi Sun [Thu, 8 Dec 2016 01:24:39 +0000 (09:24 +0800)]
Set EXAMPLE_PROGRAMS in one line.
Signed-off-by: Zhiyi Sun <zhiyisun@gmail.com>
Zhiyi Sun [Thu, 8 Dec 2016 00:57:14 +0000 (08:57 +0800)]
Merge branch 'master' into dev
Zhiyi Sun [Thu, 8 Dec 2016 00:51:59 +0000 (08:51 +0800)]
Fix bug of missing to install simple_tc.py
examples/networking/CMakeLists.txt set $EXAMPLE_PROGRAMS twice. The
second one(tc_perf_event.py) overwirte the first one(simple_tc.py).
Signed-off-by: Zhiyi Sun <zhiyisun@gmail.com>
Brenden Blanco [Wed, 7 Dec 2016 02:50:07 +0000 (18:50 -0800)]
Merge pull request #840 from zhiyisun/dev
Add support for aarch64
Zhiyi Sun [Tue, 6 Dec 2016 08:21:37 +0000 (16:21 +0800)]
Add support for aarch64
ABI for aarch64: register x0-x7 are used for parameter and result. In
bcc, there are 6 parameter registers are defined. So use x0-x5 as
parameter. frame pointer, link register, stack pointer and pc are added
in PT_REGS_xx according to arm64 architecture.
syscall number of bpf for aarch64 are defined in Kernel
header uapi/asm-generic/unistd.h.
Signed-off-by: Zhiyi Sun <zhiyisun@gmail.com>
4ast [Sat, 3 Dec 2016 01:44:05 +0000 (17:44 -0800)]
Merge pull request #838 from palmtenor/logmsg
Avoid unexpected log message on BPF program load error
Teng Qin [Sat, 3 Dec 2016 00:31:00 +0000 (16:31 -0800)]
Avoid unexpected log message on BPF program load error
4ast [Fri, 2 Dec 2016 04:55:49 +0000 (20:55 -0800)]
Merge pull request #836 from shodoco/lruhash
bcc: add lru_hash and lru_percpu_hash map types
Huapeng Zhou [Fri, 2 Dec 2016 04:01:46 +0000 (20:01 -0800)]
Add lru_hash/lru_percpu_hash to python/lua
shodoco [Fri, 2 Dec 2016 03:35:19 +0000 (19:35 -0800)]
Merge branch 'master' into lruhash
Zi Shen Lim [Thu, 1 Dec 2016 23:06:56 +0000 (15:06 -0800)]
add Quick Start Guide for bcc docker
Huapeng Zhou [Thu, 1 Dec 2016 18:56:36 +0000 (10:56 -0800)]
bcc: add lru_hash and lru_percpu_hash map types
4ast [Thu, 1 Dec 2016 05:18:52 +0000 (21:18 -0800)]
Merge pull request #832 from brendangregg/master
profile: -p should match user PID
Brendan Gregg [Thu, 1 Dec 2016 04:26:26 +0000 (20:26 -0800)]
profile: -p should match user PID
4ast [Thu, 1 Dec 2016 03:50:22 +0000 (19:50 -0800)]
Merge pull request #831 from brendangregg/master
tcplife: reorder logic to catch missed timestamps
Brendan Gregg [Thu, 1 Dec 2016 00:55:45 +0000 (16:55 -0800)]
tcplife: reorder logic to catch missed timestamps
4ast [Wed, 30 Nov 2016 16:29:28 +0000 (08:29 -0800)]
Merge pull request #830 from lcp/fix-data_t
hello_perf_output: match the data type of pid
Gary Lin [Wed, 30 Nov 2016 09:13:37 +0000 (17:13 +0800)]
hello_perf_output: match the data type of pid
Signed-off-by: Gary Lin <glin@suse.com>
4ast [Wed, 30 Nov 2016 05:48:24 +0000 (21:48 -0800)]
Merge pull request #828 from palmtenor/dbgflg
Remove debug flag override in bcc_exception.h
Teng Qin [Wed, 30 Nov 2016 04:11:19 +0000 (20:11 -0800)]
Remove debug flag override in bcc_exception.h
4ast [Wed, 30 Nov 2016 03:13:10 +0000 (19:13 -0800)]
Merge pull request #824 from palmtenor/exception_h
Clean up bcc_exception.h
Teng Qin [Wed, 30 Nov 2016 01:09:20 +0000 (17:09 -0800)]
Use StatusTuple constructor in mkstatus_
Teng Qin [Wed, 30 Nov 2016 00:29:08 +0000 (16:29 -0800)]
Implement StatusTuple class instead of using std::tuple
Teng Qin [Tue, 29 Nov 2016 17:08:33 +0000 (09:08 -0800)]
Remove unused headers and Macro
4ast [Tue, 29 Nov 2016 22:22:31 +0000 (14:22 -0800)]
Merge pull request #825 from brendangregg/master
biotop.py: fix compiler error on newer kernels
Brendan Gregg [Tue, 29 Nov 2016 19:11:31 +0000 (11:11 -0800)]
biotop.py: fix compiler error on newer kernels
Brenden Blanco [Tue, 29 Nov 2016 16:35:46 +0000 (08:35 -0800)]
Merge pull request #823 from kinvolk/krnowak/kernel-dirs-at-runtime
Determine kernel dirs at runtime (fix #743)
4ast [Tue, 29 Nov 2016 16:22:10 +0000 (08:22 -0800)]
Merge pull request #822 from iovisor/llvm_40_build
Add LLVMCoroutines lib for llvm>=4.0 builds
Krzesimir Nowak [Wed, 26 Oct 2016 11:00:09 +0000 (13:00 +0200)]
Determine kernel dirs at runtime (fix #743)
As some module build directories split headers between `source/` and
`build/` and this varies between distributions, determine the location
at runtime.
Brenden Blanco [Tue, 29 Nov 2016 15:37:30 +0000 (07:37 -0800)]
Add LLVMCoroutines lib for llvm>=4.0 builds
Building bcc against a tip of tree llvm introduces a new link failure,
which is fixed by linking against libLLVMCoroutines (which only exists
in 4.0).
Signed-off-by: Brenden Blanco <bblanco@plumgrid.com>
Brenden Blanco [Tue, 29 Nov 2016 09:05:47 +0000 (01:05 -0800)]
Merge pull request #821 from palmtenor/adjust_headers
Improve the structure of exception related header files
Teng Qin [Tue, 29 Nov 2016 05:58:46 +0000 (21:58 -0800)]
Rename exception.h to bcc_exception.h
Teng Qin [Tue, 29 Nov 2016 05:55:32 +0000 (21:55 -0800)]
Move StatusTuple definition to exception.h
4ast [Tue, 29 Nov 2016 02:44:16 +0000 (18:44 -0800)]
Merge pull request #820 from brendangregg/master
tcplife.py: Catch passive closed by server, #788
Brendan Gregg [Tue, 29 Nov 2016 01:57:20 +0000 (17:57 -0800)]
tcplife.py: Catch passive closed by server, #788
4ast [Tue, 29 Nov 2016 00:30:24 +0000 (16:30 -0800)]
Merge pull request #781 from palmtenor/api
C++ helper class for BCC
William Cohen [Mon, 28 Nov 2016 18:51:28 +0000 (13:51 -0500)]
Eliminate rpmlint errors and allow bcc srpm to build on Fedora koji b… (#815)
* Eliminate rpmlint errors and allow bcc srpm to build on Fedora koji build system
The nightly bcc srpm does not build as-is on Fedora 24. To get the
build to work the following changes were made in the bcc.spec file:
-Specify where to find luajit headers and libraries
-Correctly limit the build to the x86_64 architecture
-Add needed build requires so the srpm can build on Fedora koji
-Run ldconfig so shared library information is updated
-Follow spec conventions by putting %changelog at the end of the spec file
* Further refine the bcc.spec file
Make the following improvements to the gcc.spec file:
-Use local_clang_static variable to allow building with locally installed clang
-Adjust build requires to include nucurses-devel and make
-Put the subpackage descriptions and file list in a more logical order
-Correct the binary rpm dependencies for the subpackages
Teng Qin [Wed, 23 Nov 2016 20:23:03 +0000 (12:23 -0800)]
Examples of using BCC C++ API
Teng Qin [Wed, 23 Nov 2016 20:23:03 +0000 (12:23 -0800)]
Basic BCC C++ API