- 12 Jan, 2018 1 commit
-
-
Yonghong Song authored
Fixing issue #1515. Currently, each usdt probe (provider, probe_name) can only have locations from the single binary. It is possible that USDT probes are defined in a header file which eventually causes the same usdt probe having locations in several different binary/shared_objects. In such cases, we are not able to attach the same bpf program to all these locations. This patch addresses this issue by defining each location to be `bin_path + addr_offset` vs. previous `addr_offset` only. This way, each internal Probe class can represent all locations for the same (provider, probe_name) pair. The `tplist.py` output is re-organized with the (provider, probe_name) in the top level like below: ``` ... rtld:lll_futex_wake [sema 0x0] location #1 /usr/lib64/ld-2.17.so 0xaac8 argument #1 8 unsigned bytes @ di argument #2 4 signed bytes @ 1 argument #3 4 signed bytes @ 0 location #2 /usr/lib64/ld-2.17.so 0xe9b9 argument #1 8 unsigned bytes @ di argument #2 4 signed bytes @ 1 argument #3 4 signed bytes @ 0 location #3 /usr/lib64/ld-2.17.so 0xef3b argument #1 8 unsigned bytes @ di argument #2 4 signed bytes @ 1 argument #3 4 signed bytes @ 0 ... ``` Tested with the following commands ``` tplist.py trace.py -p <pid> 'u::probe "arg1 = %d", arg1' trace.py u:<binary_path>:probe "arg1 = %d", arg1' argdist.py -p <pid> 'u::probe():s64:arg1' argdist.py -C 'u:<binary_path>:probe():s64:arg1' funccount.py -p <pid> 'u:<binary_path>:probe' funccount.py 'u:<binary_path>:probe' ``` Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 10 Jan, 2018 7 commits
-
-
yonghong-song authored
Add new bpf_xdp_adjust_meta to docs/kernel-versions.md
-
yonghong-song authored
Try use new API to create [k,u]probe with perf_event_open
-
Gary Lin authored
Also adjust the order of helper functions.
-
Song Liu authored
New kernel API allows creating [k,u]probe with perf_event_open. This patch tries to use the new API. If the new API doesn't work, we fall back to old API. bpf_detach_probe() looks up the event being removed. If the event is not found, we skip the clean up procedure. Signed-off-by: Song Liu <songliubraving@fb.com>
-
Song Liu authored
The new [k,u]probe API allows creating [k,u]probe together with perf_event_open. This patch adds functions to use the new API. Note: these new functions are not used until next patch, so this patch doesn't change the behavior. The change is splitted into two patches for cleaner review. Signed-off-by: Song Liu <songliubraving@fb.com>
-
yonghong-song authored
Increase bpf_attach_tracing_event buffer size
-
Teng Qin authored
-
- 09 Jan, 2018 1 commit
-
-
yonghong-song authored
tcptracer: initialize skc_net variable
-
- 08 Jan, 2018 2 commits
-
-
4ast authored
fix a verifier failure
-
Yonghong Song authored
when running with latest linus tree and net-next, the python test tests/python/test_tracepoint.py failed with the following symptoms: ``` ...... R0=map_value(id=0,off=0,ks=4,vs=64,imm=0) R6=map_value(id=0,off=0,ks=4,vs=64,imm=0) R7=ctx(id=0,off=0,imm=0) R10=fp0,call_-1 34: (69) r1 = *(u16 *)(r7 +8) 35: (67) r1 <<= 48 36: (c7) r1 s>>= 48 37: (0f) r7 += r1 math between ctx pointer and register with unbounded min value is not allowed ...... ``` The reason of failure is due to added tightening in verifier introduced by the following commit: ``` commit f4be569a429987343e3f424d3854b3622ffae436 Author: Alexei Starovoitov <ast@kernel.org> Date: Mon Dec 18 20:12:00 2017 -0800 bpf: fix integer overflows ...... ``` The patch changes `offset` type in `ctx + offset` from signed to unsigned so that we do not have `unbounded min value` so the test trace_tracepoint.py can pass. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 04 Jan, 2018 3 commits
-
-
4ast authored
sync bpf compat headers with latest net-next
-
Yonghong Song authored
Signed-off-by: Yonghong Song <yhs@fb.com>
-
4ast authored
fix runqlen.py with 4.15 kernel
-
- 03 Jan, 2018 1 commit
-
-
Yonghong Song authored
The following kernel commit changes linux_src:kernel/sched/sched.h struct cfs_rq structure: ``` commit 1ea6c46a23f1213d1972bfae220db5c165e27bba Author: Peter Zijlstra <peterz@infradead.org> Date: Sat May 6 15:59:54 2017 +0200 sched/fair: Propagate an effective runnable_load_avg The load balancer uses runnable_load_avg as load indicator. For !cgroup this is: runnable_load_avg = \Sum se->avg.load_avg ; where se->on_rq That is, a direct sum of all runnable tasks on that runqueue. As opposed to load_avg, which is a sum of all tasks on the runqueue, which includes a blocked component. ... ``` The commit is in kernel 4.15 release and will make current runqlen.py internal cfs_rq_partial structure not syncing with the kernel one. As a result, runqlen.py will produce incorrect results on 4.15. This patch attempts to solve this issue by compiling a bpf program, which accesses one of fields introduced by the above commit. The successful compilation will indicate that we should amend the cfs_rq_partial structure. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 31 Dec, 2017 1 commit
-
-
yonghong-song authored
tcplife: add tcp:tcp_set_state tracepoint support
-
- 30 Dec, 2017 2 commits
-
-
Brendan Gregg authored
-
Brendan Gregg authored
-
- 28 Dec, 2017 6 commits
-
-
4ast authored
fix a compilation error with latest llvm/clang trunk
-
Yonghong Song authored
bcc build with latest llvm/clang trunk failed with the below error: ...... [ 35%] Built target api-static /home/yhs/work/bcc/src/cc/frontends/clang/tp_frontend_action.cc: In member function ‘bool ebpf::TracepointTypeVisitor::Visit FunctionDecl(clang::FunctionDecl*)’: /home/yhs/work/bcc/src/cc/frontends/clang/tp_frontend_action.cc:163:60: error: no matching function for call to ‘clang::Qual Type::getAsString(clang::SplitQualType)’ auto type_name = QualType::getAsString(type.split()); ^ ...... The error is caused by the below clang commit: commit fcc28fd8cc8139cf1e4763459447880768579d8e Author: Aaron Ballman <aaron@aaronballman.com> Date: Thu Dec 21 21:42:42 2017 +0000 Re-commit r321223, which adds a printing policy to the ASTDumper. ...... - std::string getAsString() const { - return getAsString(split()); + static std::string getAsString(SplitQualType split, + const PrintingPolicy &Policy) { + return getAsString(split.Ty, split.Quals, Policy); } + static std::string getAsString(const Type *ty, Qualifiers qs, + const PrintingPolicy &Policy); - static std::string getAsString(SplitQualType split) { - return getAsString(split.Ty, split.Quals); - } - - static std::string getAsString(const Type *ty, Qualifiers qs); - + std::string getAsString() const; std::string getAsString(const PrintingPolicy &Policy) const; ...... The signature of static function getAsString(), which is used in src/cc/frontends/clang/tp_frontend_action.cc, got changed, and this caused the compilation error. The patch chooses a different way to get type_name which works for llvm 4.0 to 6.0 (tested). Signed-off-by: Yonghong Song <yhs@fb.com>
-
yonghong-song authored
CentOS 6 support
-
4ast authored
fix build issue for llvm 5.0.1
-
nikolay.samofatov authored
-
Yonghong Song authored
Fix issue #1502. A few cmake version checking greater than 5 includes 5.0.1 which results in compilation failure. Change version checking to explicitly equal to or greater than version 6. Signed-off-by: Yonghong Song <yhs@fb.com>
-
- 22 Dec, 2017 1 commit
-
-
yonghong-song authored
ucalls: convert bytes to str
-
- 21 Dec, 2017 1 commit
-
-
yonghong-song authored
Fix incorrect lost_cb type in Python
-
- 20 Dec, 2017 4 commits
-
-
Teng Qin authored
-
yonghong-song authored
Fix and improvement for perf_reader's lost_cb
-
Teng Qin authored
-
Teng Qin authored
-
- 19 Dec, 2017 1 commit
-
-
Brendan Gregg authored
-
- 18 Dec, 2017 3 commits
-
-
Brendan Gregg authored
Handle unknown user in cachetop
-
Brendan Gregg authored
tcpretrans: extend for sum up
-
yonghong-song authored
histogram: support sorting bucket before dumping table
-
- 17 Dec, 2017 2 commits
-
-
yonghong-song authored
Improve trace.py formatting and printing options
-
htbegin authored
add a test case for bucket_sort_fn and show its use scenario as well
-
- 16 Dec, 2017 4 commits