Understanding Ruby with BPF - rbperf
Understanding Ruby with BPF Javier Honduvilla CotoOctober 28th-29th, 2020 Why BPF? Why BPF? - Flexibility Why BPF? - Flexibility - Low overhead Why BPF? - Flexibility - Low Why BPF? - Flexibility - Low overhead - Continuous profiling - No modifications of the tracee rbperf rbperf - Profile Ruby programs rbperf - Profile Ruby programs - Trace complex Ruby programs execution syscall, etc) BPF code (bpf/rbperf.c) Read frame Driver (rbperf.py) 1. Adds info (pid to profile, thread address) 3. Receives stacktrace 4. Serialisation and persistence BPF tail-calls Bounded 0 码力 | 19 页 | 972.07 KB | 1 年前3Containers and BPF: twagent story
Containers and BPF: twagent story Andrey Ignatov, Facebook October 28, 2020 1 ● a daemon ● runs on every Facebook server ● manages all Facebook containers ● a part of the bigger TW system, see the ● cgroup v2 ● ... other usual building blocks ... ● cgroup-bpf programs 2 Vast majority of twagent tasks have one or more cgroup-bpf features enabled: ● mostly networking: ○ IP assignment (when sysctl access control Let’s look at some of them .. Example of cgroup-bpf programs (bpftool cgroup tree ): cgroup-bpf 3 Task IP assignment (aka IP-per-task) ● Facebook DC network is IPv60 码力 | 9 页 | 427.42 KB | 1 年前3Debugging the BPF Virtual Machine
Debugging the BPF Virtual Machine Lorenzo Fontana October 28, 2020 ● Debugging is useful to understand how things work ● Sometimes, eBPF programs can’t even load ● I couldn’t find good resources on this this, so, here I am ● I break lots of eBPF programs ● The BPF Virtual machine is not easy to understand Why ? The BPF subsystem lives in the kernel AND The kernel can be debugged using gdb The build/vmlinux (gdb) target remote localhost:1234 (gdb) bpf/syscall.c:4180 (gdb) bpf/syscall.c:796 (gdb) b bpf/syscall.c:121 (gdb) b kernel/bpf/ringbuf.c:159 Debug! Remember to: - Load the eBPF program0 码力 | 10 页 | 233.09 KB | 1 年前3Structure and Interpretation of Computer Programs
0 码力 | 136 页 | 7.35 MB | 5 月前3How to ship BPF with your Go project
How to ship BPF with your Go project Lorenz Bauer October 28, 2020 Goal ● Count the number of packets on lo ● Print the count to the console ● From a single Go binary Use the source, Luke github github.com/lmb/ship-bpf-with-go github.com/cilium/ebpf0 码力 | 3 页 | 174.11 KB | 1 年前3Steering connections to sockets with BPF socket lookup hook
Steering connections to sockets with BPF socket lookup hook Jakub Sitnicki, Cloudflare @jkbs0 @cloudflare October 28-29, 2020 Who am I? ● Software Engineer at Cloudflare Spectrum TCP/UDP reverse proxy proxy, Linux kernel, ... ● Contributor to Linux kernel networking & BPF subsystems Goal Run a TCP echo service on ports 7, 77, and 777 … using one TCP listening socket. Fun? We will need… ❏ VM Networking Receive path for local delivery Service dispatch with BPF socket lookup packet metadata BPF program lookup result 010 101 010 struct bpf_sk_lookup { __u32 family; __u32 protocol; __u320 码力 | 23 页 | 441.22 KB | 1 年前3Neighborhoods Banding Together: Reasoning Globally about Programs
CppCon, September 2020 Neighborhoods Banding Together Reasoning Globally about Programs Lisa LippincottThe code here is written in a fantasy C++, with extensions supporting local reasoning.void foo()0 码力 | 49 页 | 1.03 MB | 5 月前3Bridging the Gap: Writing Portable Programs for CPU and GPU
1/66Bridging the Gap: Writing Portable Programs for CPU and GPU using CUDA Thomas Mejstrik Sebastian Woblistin 2/66Content 1 Motivation Audience etc.. Cuda crash course Quiz time 2 Patterns Oldschool tell me about afterwards7/66 Motivation Patterns The dark path Cuda proposal Thank you Why write programs for CPU and GPU Difference CPU/GPU Algorithms are designed differently Latency/Throughput Memory sense? Scope of the talk7/66 Motivation Patterns The dark path Cuda proposal Thank you Why write programs for CPU and GPU Difference CPU/GPU Why it makes sense? Library/Framework developers Embarrassingly0 码力 | 124 页 | 4.10 MB | 5 月前3How and When You Should Measure CPU Overhead of eBPF Programs
Measure CPU Overhead of eBPF Programs Bryce Kahle, Datadog October 28, 2020 Why should I profile eBPF programs? CI variance tracking Tools kernel.bpf_stats_enabled kernel.bpf_stats_enabled sysctl – Added Added in kernel v5.1 (off by default) – Turns on stats collection for all eBPF programs – exposes total run_time_ns and run_cnt – Use cases: – Benchmarking + CI/CD – Sampling profiler in production stats sysctl procfs Three ways to access kernel eBPF stats bpftool prog show bpf syscall BPF_OBJ_GET_INFO_BY_FD procfs BPF_ENABLE_STATS Added in kernel v5.8 FD-based alternative to sysctl Handles multiple0 码力 | 20 页 | 2.04 MB | 1 年前3SuperCharge Your IPC Programs With C++20 and CCI Pattern
Rules • IPC stands for Intra-Process Communication • Programs stand for software running in a constrained environment ▪ CCI stands for: oContract oConcept oImplementationProblem Definition: Channel0 码力 | 57 页 | 7.11 MB | 5 月前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100
相关搜索词
UnderstandingRubywithBPFrbperfContainersandtwagentstoryDebuggingtheVirtualMachineStructureInterpretationofComputerProgramsHowtoshipyourGoprojectSteeringconnectionssocketssocketlookuphookNeighborhoodsBandingTogetherReasoningGloballyaboutBridgingGapWritingPortableforCPUGPUWhenYouShouldMeasureOverheadeBPFSuperChargeYourIPCWithC++20CCIPattern