bcc Python Developer Tutorial
tiantao2012
这个作者很懒,什么都没留下…
展开
-
Lesson 7. hello_perf_output.py
之前的例子我们都是通过bpf_trace_printk()来打印log,这种方式打印的log的格式是固定的 下面这个例子的就是告诉自定义要打印的成员 其输出的log类似。可以看到和前面完全不同的打印 TIME(s) COMM PID MESSAGE 0.000000000 bash 22986 Hello,翻译 2018-01-10 16:01:52 · 585 阅读 · 0 评论 -
Lesson 3. sync_timing.py
下面这个函数会打印每次调用sys_sync的时间. 输出类似: Tracing for quick sync's... Ctrl-C to end At time 0.00 s: multiple syncs detected, last 95 ms ago At time 0.10 s: multiple syncs detected, last 96 ms ago #必须要从bcc库中翻译 2018-01-10 14:54:56 · 671 阅读 · 0 评论 -
Lesson 2. hello_fields.py
下面这个函数实现的功能是:当用户在调用sys_clone 时,会打印调用的时间,comm,pid,message 具体的输出如下: TIME(s) COMM PID MESSAGE 24585001.174885999 sshd 1432 Hello, World! 24585001.195710000 sshd翻译 2018-01-10 14:53:10 · 419 阅读 · 0 评论 -
Lesson 1. Hello World
#!/usr/bin/env python # Copyright (c) PLUMgrid, Inc. # Licensed under the Apache License, Version 2.0 (the "License") # run in project examples directory with: # sudo ./hello_world.py" # see trace_fi翻译 2018-01-10 14:50:23 · 648 阅读 · 0 评论 -
Lesson 9. bitehist.py
下面这个例子和之前的例子相比少了执行了attach_kprobe。具体看看是怎么实现的呢? #!/usr/bin/python # # bitehist.py Block I/O size histogram. # For Linux, uses BCC, eBPF. Embedded C. # # Written as a basic example of using a histogra翻译 2018-01-10 16:37:25 · 477 阅读 · 0 评论 -
Lesson 12. urandomread.py
下面这个脚本只是在已有kernelcode 基础上增加一个监控点。本例就是为random中的urandom_read增加一个监控点,则还有就可以通过perf list看到这个监控点 #!/usr/bin/python # # urandomread Example of instrumenting a kernel tracepoint. # For Linux, u翻译 2018-01-10 17:22:45 · 501 阅读 · 0 评论 -
Lesson 16. task_switch.c
下面这个例子会在每次调用finish_task_switch的时候调用count_sched from bcc import BPF from time import sleep #load 一个文件到kernel space b = BPF(src_file="task_switch.c") b.attach_kprobe(event="finish_task_switch", fn_name翻译 2018-01-10 20:23:09 · 893 阅读 · 0 评论 -
Lesson 15. nodejs_http_server.py
下面这个例子可以统计某个进程中的一个函数时的情况 #!/usr/bin/python # # nodejs_http_server Basic example of node.js USDT tracing. # For Linux, uses BCC, BPF. Embedded C. # # USAGE: nodejs_http_ser翻译 2018-01-10 20:22:21 · 438 阅读 · 0 评论 -
Lesson 14. strlen_count.py
下面这个例子是统计user space中使用strlen 次数的例子,也就是BPF 出来用于kernel 之外 还可以用于user space的debug #!/usr/bin/python # # strlen_count Trace strlen() and print a frequency count of strings. # For Linux, u翻译 2018-01-10 20:21:14 · 477 阅读 · 0 评论 -
Lesson 11. vfsreadlat.py
前面都是通过BPF来load 一个函数到kernel space,其实还可以通过BPF load 一个c的源码包到kernel space,并且可以在 要监控的函数进入和推出是分别调用回调函数 #!/usr/bin/python # from bcc import BPF #导入第三方库,这样python中就可以用c中定义的变量 from ctypes import c_ushort, c_翻译 2018-01-10 17:06:21 · 459 阅读 · 0 评论 -
Lesson 6. disksnoop.py
#!/usr/bin/python # # disksnoop.py Trace block device I/O: basic version of iosnoop. # For Linux, uses BCC, eBPF. Embedded C. # # Written as a basic example of tracing latency. # # Copyright (c) 2015翻译 2018-01-10 14:55:57 · 454 阅读 · 0 评论