zoukankan      html  css  js  c++  java
  • 笔记:BPF Performance Tools Chapter 1. Introduction

    关键词:bpf、ebpf、bcc、bpftrace、kprobe、uprobe、tracepoint、usdt等等。

    本章主要介绍基本概念以及相关资源之间关系

    • BPF和eBPF的演变以及用途
    • 基本概念Tracing/Snooping/Samping/Profiling/Observability以及之间区别
    • 一张图表示bcc/bpftrace/libbcc/libbpf/bpf之间关系
    • 一张图介绍bpf能做哪些性能优化
    • 静态跟踪和动态跟踪
    • 简单示例bcc和bpftrace用途

    1. Tracing/Snooping、Sampling/Profiling区别

    Tracing/Snooping是基于事件的跟踪,Samping/Profiling是基于时间的采样。

    Tracing/Snooping可能导致跟踪引入负荷剧增;Samping/Profiling引入的测试负荷相对稳定,但是有可能丢失部分信息。

    2. bcc、bpftrace、libbcc、libbpf、bpf之间的关系

    可以将整个架构分成三层:前端bcc和bpftrace、中间层libbcc和libbpf、内核BPF。

    其他类似bcc/bpftrace的工具还有:适合嵌入式设备的ply、基于Python的工具。

    相关资源列表:

    bcc:https://github.com/iovisor/bcc

    bpftrace:https://github.com/iovisor/bpftrace

    ply:https://github.com/iovisor/ply

    3. Linux系统和应用bpf性能工具集

    对照本图,针对不同模块可以使用相应的工具进行观察、跟踪,协助定位解决性能问题。

    4. 静态跟踪和动态跟踪

    动态:kprobes和uprobes

    动态跟踪可以在程序运行时插入跟踪,在不使用的时候开销极低。

    静态:tracepoints和usdt

    相对于动态跟踪,静态跟踪更加稳定。但是不够灵活,数量也受限。

    BPF跟踪支持内核静态的tracepoints和用户空间的USDT(User-level Statically Defined Tracing)。

    5. 初识bcc和bpftrace

    bpftrace -e 'tracepoint:syscalls:sys_enter_open { printf("%s %s
    ", comm,  str(args->filename)); }'
    bpftrace -l 'tracepoint:syscalls:sys_enter_open*'
    bpftrace -e 'tracepoint:syscalls:sys_enter_open* { @[probe] = count(); }'
    opensnoop.bt
    opensnoop
    opensnoop -x
  • 相关阅读:
    Filter&Listener
    jsp&mvc开发模式&jstl标签&三层架构
    Tomcat&Servlet
    xml
    SpringMVC
    io流-缓冲流
    io流-文件流节点流
    Io流
    JAVA中反射机制
    IDEA 将web项目部署到tomcat中运行
  • 原文地址:https://www.cnblogs.com/arnoldlu/p/13029383.html
Copyright © 2011-2022 走看看