Linux 4.x Tracing Tools: Using BPF Superpowers

Brendan Gregg
Brendan GreggSenior Performance Architect at Netflix
December	4–9,	2016		|		Boston,	MA	
www.usenix.org/lisa16												#lisa16	
Linux	4.x	Tracing	Tools	
Using	BPF	Superpowers	
Brendan	Gregg,	NeElix	
bgregg@neElix.com
Linux 4.x Tracing Tools: Using BPF Superpowers
Linux 4.x Tracing Tools: Using BPF Superpowers
GIVE	ME	15	MINUTES	
AND	I'LL	CHANGE	YOUR	VIEW	
OF	LINUX	TRACING	
Demo	Gme	
inspired	by	Greg	Law's:	Give	me	fiOeen	minutes	and	I'll	change	your	view	of	GDB
Demo
LISA	2014	
	
perf-tools	
(Orace)
LISA	2016	
	
bcc	tools	
(BPF)
WHAT	DYNAMIC	TRACING	CAN	DO	
Wielding	Superpowers
Previously	
•  Metrics	were	vendor	chosen,	closed	source,	and	incomplete	
•  The	art	of	inference	&	making	do	
# ps alx
F S UID PID PPID CPU PRI NICE ADDR SZ WCHAN TTY TIME CMD
3 S 0 0 0 0 0 20 2253 2 4412 ? 186:14 swapper
1 S 0 1 0 0 30 20 2423 8 46520 ? 0:00 /etc/init
1 S 0 16 1 0 30 20 2273 11 46554 co 0:00 –sh
[…]
Crystal	Ball	Observability	
Dynamic	Tracing
Linux	Event	Sources
Event	Tracing	Efficiency	
send	
receive	
tcpdump	
Kernel	
buffer	
file	system	
1.	read	
2.	dump	
Analyzer	 1.	read	
2.	process	
3.	print	
disks	
Old way: packet capture
New way: dynamic tracing
Tracer	 1.	configure	
2.	read	
tcp_retransmit_skb()	
Eg, tracing TCP retransmits
New	CLI	Tools	
# biolatency
Tracing block device I/O... Hit Ctrl-C to end.
^C
usecs : count distribution
4 -> 7 : 0 | |
8 -> 15 : 0 | |
16 -> 31 : 0 | |
32 -> 63 : 0 | |
64 -> 127 : 1 | |
128 -> 255 : 12 |******** |
256 -> 511 : 15 |********** |
512 -> 1023 : 43 |******************************* |
1024 -> 2047 : 52 |**************************************|
2048 -> 4095 : 47 |********************************** |
4096 -> 8191 : 52 |**************************************|
8192 -> 16383 : 36 |************************** |
16384 -> 32767 : 15 |********** |
32768 -> 65535 : 2 |* |
65536 -> 131071 : 2 |* |
New	VisualizaGons	and	GUIs
NeElix	Intended	Usage	
Flame Graphs
Tracing Reports
…
Self-service	UI:	
should	be	open	sourced;	you	may	also	build/buy	your	own
Conquer	Performance	
Measure	anything
BPF	TRACING	
Introducing	BPF
A	Linux	Tracing	Timeline	
•  1990’s:	StaGc	tracers,	prototype	dynamic	tracers	
•  2000:	LTT	+	DProbes	(dynamic	tracing;	not	integrated)	
•  2004:	kprobes	(2.6.9)	
•  2005:	DTrace	(not	Linux),	SystemTap	(out-of-tree)	
•  2008:	Orace	(2.6.27)	
•  2009:	perf	(2.6.31)	
•  2009:	tracepoints	(2.6.32)	
•  2010-2016:	Orace	&	perf_events	enhancements	
•  2014-2016:	BPF	patches	
also:	LTTng,	ktap,	sysdig,	...
Ye	Olde	BPF	
# tcpdump host 127.0.0.1 and port 22 -d
(000) ldh [12]
(001) jeq #0x800 jt 2 jf 18
(002) ld [26]
(003) jeq #0x7f000001 jt 6 jf 4
(004) ld [30]
(005) jeq #0x7f000001 jt 6 jf 18
(006) ldb [23]
(007) jeq #0x84 jt 10 jf 8
(008) jeq #0x6 jt 10 jf 9
(009) jeq #0x11 jt 10 jf 18
(010) ldh [20]
(011) jset #0x1fff jt 18 jf 12
(012) ldxb 4*([14]&0xf)
(013) ldh [x + 14]
(014) jeq #0x16 jt 17 jf 15
(015) ldh [x + 16]
(016) jeq #0x16 jt 17 jf 18
(017) ret #65535
(018) ret #0
Berkeley	Packet	Filter
BPF	Enhancements	by	Linux	Version	
•  3.18:	bpf	syscall	
•  3.19:	sockets	
•  4.1:	kprobes	
•  4.4:	bpf_perf_event_output	
•  4.6:	stack	traces	
•  4.7:	tracepoints	
•  4.9:	profiling	
16.04	
16.10	
eg,	Ubuntu:
Enhanced
BPF
is in Linux
BPF	
•  aka	eBPF	==	enhanced	Berkeley	Packet	Filter	
–  Lead	developer:	Alexei	Starovoitov	(Facebook)		
•  Many	uses	
–  Virtual	networking	
–  Security	
–  ProgrammaGc	tracing	
•  Different	front-ends	
–  C,	perf,	bcc,	ply,	…	 BPF	mascot
BPF	for	Tracing	
BPF	bytecode	
User	Program	
1.	generate	
2.	load	
Kernel	
kprobes	
uprobes	
tracepoints	
BPF	
maps	
3.	perf_output	
per-
event	
data	
staGsGcs	
3.	async	
read	
verifier
Raw	BPF	
samples/bpf/sock_example.c	
87	lines	truncated
C/BPF	
samples/bpf/tracex1_kern.c	
58	lines	truncated
bcc	
•  BPF	Compiler	CollecGon	
–  hrps://github.com/iovisor/bcc		
–  Lead	developer:	Brenden	Blanco	
(PlumGRID)	
•  Includes	tracing	tools	
•  Front-ends	
–  Python	
–  Lua	
–  C	helper	libraries	
BPF	
Python	
Events	
Kernel	
lua	
bcc	
front-ends	
bcc	tool	 bcc	tool	 …	
…	
user	
kernel	
Tracing	layers:
bcc/BPF	
bcc	examples/tracing/bitehist.py	
enTre	program
ply/BPF	
hrps://github.com/wkz/ply/blob/master/README.md	
enTre	program
The	Tracing	Landscape,	Dec	2016	
Scope	&	Capability	
Ease	of	use	
sysdig	
perf	
Orace	
C/BPF	
ktap	
stap	
Stage	of	
Development	
(my	opinion)	
dtrace4L.	
(brutal)	(less	brutal)	
(alpha)	 (mature)	
bcc/BPF	
ply/BPF	
Raw	BPF
State	of	BPF,	Dec	2016	
1.  Dynamic	tracing,	kernel-level	(BPF	support	for	kprobes)	
2.  Dynamic	tracing,	user-level	(BPF	support	for	uprobes)	
3.  StaGc	tracing,	kernel-level	(BPF	support	for	tracepoints)	
4.  Timed	sampling	events	(BPF	with	perf_event_open)	
5.  PMC	events	(BPF	with	perf_event_open)	
6.  Filtering	(via	BPF	programs)	
7.  Debug	output	(bpf_trace_printk())	
8.  Per-event	output	(bpf_perf_event_output())	
9.  Basic	variables	(global	&	per-thread	variables,	via	BPF	maps)	
10.  AssociaGve	arrays	(via	BPF	maps)	
11.  Frequency	counGng	(via	BPF	maps)	
12.  Histograms	(power-of-2,	linear,	and	custom,	via	BPF	maps)	
13.  Timestamps	and	Gme	deltas	(bpf_kGme_get_()	and	BPF)	
14.  Stack	traces,	kernel	(BPF	stackmap)	
15.  Stack	traces,	user	(BPF	stackmap)	
16.  Overwrite	ring	buffers	
17.  String	factory	(stringmap)	
18.  OpGonal:	bounded	loops,	<	and	<=,	…	
1.  StaGc	tracing,	user-level	(USDT	probes	via	uprobes)	
2.  StaGc	tracing,	dynamic	USDT	(needs	library	support)	
3.  Debug	output	(Python	with	BPF.trace_pipe()	and	
BPF.trace_fields())	
4.  Per-event	output	(BPF_PERF_OUTPUT	macro	and	
BPF.open_perf_buffer())	
5.  Interval	output	(BPF.get_table()	and	table.clear())	
6.  Histogram	prinGng	(table.print_log2_hist())	
7.  C	struct	navigaGon,	kernel-level	(maps	to	bpf_probe_read())	
8.  Symbol	resoluGon,	kernel-level	(ksym(),	ksymaddr())	
9.  Symbol	resoluGon,	user-level	(usymaddr())	
10.  BPF	tracepoint	support	(via	TRACEPOINT_PROBE)	
11.  BPF	stack	trace	support	(incl.	walk	method	for	stack	frames)	
12.  Examples	(under	/examples)	
13.  Many	tools	(/tools)	
14.  Tutorials	(/docs/tutorial*.md)	
15.  Reference	guide	(/docs/reference_guide.md)	
16.  Open	issues:	(hrps://github.com/iovisor/bcc/issues)	
State	of	bcc,	Dec	2016	
done	
not	yet
HOW	TO	USE	BCC/BPF	
For	end-users
InstallaGon	
hrps://github.com/iovisor/bcc/blob/master/INSTALL.md	
•  eg,	Ubuntu	Xenial:		
–  puts	tools	in	/usr/share/bcc/tools,	and	tools/old	for	older	kernels	
–  16.04	is	good,	16.10	berer:	more	tools	work	
–  bcc	should	also	arrive	as	an	official	Ubuntu	snap	
# echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | 

sudo tee /etc/apt/sources.list.d/iovisor.list
# sudo apt-get update
# sudo apt-get install bcc-tools
Pre-bcc	Performance	Checklist	
1.  	uptime
2.  	dmesg | tail
3.  	vmstat 1
4.  	mpstat -P ALL 1
5.  	pidstat 1
6.  	iostat -xz 1
7.  	free -m
8.  	sar -n DEV 1
9.  	sar -n TCP,ETCP 1
10. 	top
hrp://techblog.neElix.com/2015/11/linux-performance-analysis-in-60s.html
bcc	General	Performance	Checklist	
1.  	execsnoop
2.  	opensnoop
3.  	ext4slower	(…)	
4.  	biolatency
5.  	biosnoop
6.  	cachestat
7.  	tcpconnect
8.  	tcpaccept
9.  	tcpretrans
10.  	gethostlatency
11.  	runqlat
12.  	profile
1.	execsnoop	
# execsnoop
PCOMM PID RET ARGS
bash 15887 0 /usr/bin/man ls
preconv 15894 0 /usr/bin/preconv -e UTF-8
man 15896 0 /usr/bin/tbl
man 15897 0 /usr/bin/nroff -mandoc -rLL=169n -rLT=169n -Tutf8
man 15898 0 /usr/bin/pager -s
nroff 15900 0 /usr/bin/locale charmap
nroff 15901 0 /usr/bin/groff -mtty-char -Tutf8 -mandoc -rLL=169n -rLT=169n
groff 15902 0 /usr/bin/troff -mtty-char -mandoc -rLL=169n -rLT=169n -Tutf8
groff 15903 0 /usr/bin/grotty
[…]
2.	opensnoop	
# opensnoop
PID COMM FD ERR PATH
27159 catalina.sh 3 0 /apps/tomcat8/bin/setclasspath.sh
4057 redis-server 5 0 /proc/4057/stat
2360 redis-server 5 0 /proc/2360/stat
30668 sshd 4 0 /proc/sys/kernel/ngroups_max
30668 sshd 4 0 /etc/group
30668 sshd 4 0 /root/.ssh/authorized_keys
30668 sshd 4 0 /root/.ssh/authorized_keys
30668 sshd -1 2 /var/run/nologin
30668 sshd -1 2 /etc/nologin
30668 sshd 4 0 /etc/login.defs
30668 sshd 4 0 /etc/passwd
30668 sshd 4 0 /etc/shadow
30668 sshd 4 0 /etc/localtime
4510 snmp-pass 4 0 /proc/cpuinfo
[…]
3.	ext4slower	
# ext4slower 1
Tracing ext4 operations slower than 1 ms
TIME COMM PID T BYTES OFF_KB LAT(ms) FILENAME
06:49:17 bash 3616 R 128 0 7.75 cksum
06:49:17 cksum 3616 R 39552 0 1.34 [
06:49:17 cksum 3616 R 96 0 5.36 2to3-2.7
06:49:17 cksum 3616 R 96 0 14.94 2to3-3.4
06:49:17 cksum 3616 R 10320 0 6.82 411toppm
06:49:17 cksum 3616 R 65536 0 4.01 a2p
06:49:17 cksum 3616 R 55400 0 8.77 ab
06:49:17 cksum 3616 R 36792 0 16.34 aclocal-1.14
06:49:17 cksum 3616 R 15008 0 19.31 acpi_listen
06:49:17 cksum 3616 R 6123 0 17.23 add-apt-repository
06:49:17 cksum 3616 R 6280 0 18.40 addpart
06:49:17 cksum 3616 R 27696 0 2.16 addr2line
06:49:17 cksum 3616 R 58080 0 10.11 ag
[…]
also:	btrfsslower,	xfsslower,	zfslower
4.	biolatency	
# biolatency -mT 1
Tracing block device I/O... Hit Ctrl-C to end.
06:20:16
msecs : count distribution
0 -> 1 : 36 |**************************************|
2 -> 3 : 1 |* |
4 -> 7 : 3 |*** |
8 -> 15 : 17 |***************** |
16 -> 31 : 33 |********************************** |
32 -> 63 : 7 |******* |
64 -> 127 : 6 |****** |
[…]
5.	biosnoop	
# biosnoop
TIME(s) COMM PID DISK T SECTOR BYTES LAT(ms)
0.000004001 supervise 1950 xvda1 W 13092560 4096 0.74
0.000178002 supervise 1950 xvda1 W 13092432 4096 0.61
0.001469001 supervise 1956 xvda1 W 13092440 4096 1.24
0.001588002 supervise 1956 xvda1 W 13115128 4096 1.09
1.022346001 supervise 1950 xvda1 W 13115272 4096 0.98
1.022568002 supervise 1950 xvda1 W 13188496 4096 0.93
1.023534000 supervise 1956 xvda1 W 13188520 4096 0.79
1.023585003 supervise 1956 xvda1 W 13189512 4096 0.60
2.003920000 xfsaild/md0 456 xvdc W 62901512 8192 0.23
2.003931001 xfsaild/md0 456 xvdb W 62901513 512 0.25
2.004034001 xfsaild/md0 456 xvdb W 62901520 8192 0.35
2.004042000 xfsaild/md0 456 xvdb W 63542016 4096 0.36
2.004204001 kworker/0:3 26040 xvdb W 41950344 65536 0.34
2.044352002 supervise 1950 xvda1 W 13192672 4096 0.65
[…]
6.	cachestat	
# cachestat
HITS MISSES DIRTIES READ_HIT% WRITE_HIT% BUFFERS_MB CACHED_MB
170610 41607 33 80.4% 19.6% 11 288
157693 6149 33 96.2% 3.7% 11 311
174483 20166 26 89.6% 10.4% 12 389
434778 35 40 100.0% 0.0% 12 389
435723 28 36 100.0% 0.0% 12 389
846183 83800 332534 55.2% 4.5% 13 553
96387 21 24 100.0% 0.0% 13 553
120258 29 44 99.9% 0.0% 13 553
255861 24 33 100.0% 0.0% 13 553
191388 22 32 100.0% 0.0% 13 553
[…]
7.	tcpconnect	
# tcpconnect
PID COMM IP SADDR DADDR DPORT
25333 recordProgra 4 127.0.0.1 127.0.0.1 28527
25338 curl 4 100.66.3.172 52.22.109.254 80
25340 curl 4 100.66.3.172 31.13.73.36 80
25342 curl 4 100.66.3.172 104.20.25.153 80
25344 curl 4 100.66.3.172 50.56.53.173 80
25365 recordProgra 4 127.0.0.1 127.0.0.1 28527
26119 ssh 6 ::1 ::1 22
25388 recordProgra 4 127.0.0.1 127.0.0.1 28527
25220 ssh 6 fe80::8a3:9dff:fed5:6b19 fe80::8a3:9dff:fed5:6b19 22
[…]
8.	tcpaccept	
# tcpaccept
PID COMM IP RADDR LADDR LPORT
2287 sshd 4 11.16.213.254 100.66.3.172 22
4057 redis-server 4 127.0.0.1 127.0.0.1 28527
4057 redis-server 4 127.0.0.1 127.0.0.1 28527
4057 redis-server 4 127.0.0.1 127.0.0.1 28527
4057 redis-server 4 127.0.0.1 127.0.0.1 28527
2287 sshd 6 ::1 ::1 22
4057 redis-server 4 127.0.0.1 127.0.0.1 28527
4057 redis-server 4 127.0.0.1 127.0.0.1 28527
2287 sshd 6 fe80::8a3:9dff:fed5:6b19 fe80::8a3:9dff:fed5:6b19 22
4057 redis-server 4 127.0.0.1 127.0.0.1 28527
[…]
9.	tcpretrans	
# tcpretrans
TIME PID IP LADDR:LPORT T> RADDR:RPORT STATE
01:55:05 0 4 10.153.223.157:22 R> 69.53.245.40:34619 ESTABLISHED
01:55:05 0 4 10.153.223.157:22 R> 69.53.245.40:34619 ESTABLISHED
01:55:17 0 4 10.153.223.157:22 R> 69.53.245.40:22957 ESTABLISHED
[…]
10.	gethostlatency	
# gethostlatency
TIME PID COMM LATms HOST
06:10:24 28011 wget 90.00 www.iovisor.org
06:10:28 28127 wget 0.00 www.iovisor.org
06:10:41 28404 wget 9.00 www.netflix.com
06:10:48 28544 curl 35.00 www.netflix.com.au
06:11:10 29054 curl 31.00 www.plumgrid.com
06:11:16 29195 curl 3.00 www.facebook.com
06:11:24 25313 wget 3.00 www.usenix.org
06:11:25 29404 curl 72.00 foo
06:11:28 29475 curl 1.00 foo
[…]
11.	runqlat	
# runqlat -m 5
Tracing run queue latency... Hit Ctrl-C to end.
msecs : count distribution
0 -> 1 : 3818 |****************************************|
2 -> 3 : 39 | |
4 -> 7 : 39 | |
8 -> 15 : 62 | |
16 -> 31 : 2214 |*********************** |
32 -> 63 : 226 |** |
[…]
12.	profile	
# profile
Sampling at 49 Hertz of all threads by user + kernel stack... Hit Ctrl-C to end.
^C
[…]
ffffffff813d0af8 __clear_user
ffffffff813d5277 iov_iter_zero
ffffffff814ec5f2 read_iter_zero
ffffffff8120be9d __vfs_read
ffffffff8120c385 vfs_read
ffffffff8120d786 sys_read
ffffffff817cc076 entry_SYSCALL_64_fastpath
00007fc5652ad9b0 read
- dd (25036)
7
[…]
Other	bcc	Tracing	Tools	
•  Single-purpose	
–  bitesize	
–  capabile	
–  memleak	
–  ext4dist	(btrfs,	…)	
•  MulG	tools	
–  funccount	
–  argdist	
–  trace	
–  stackcount	
hrps://github.com/iovisor/bcc#tools
trace	
•  Trace	custom	events.	Ad	hoc	analysis:	
# trace 'sys_read (arg3 > 20000) "read %d bytes", arg3'
TIME PID COMM FUNC -
05:18:23 4490 dd sys_read read 1048576 bytes
05:18:23 4490 dd sys_read read 1048576 bytes
05:18:23 4490 dd sys_read read 1048576 bytes
05:18:23 4490 dd sys_read read 1048576 bytes
^C
by	Sasha	Goldshtein
trace	One-Liners	
trace –K blk_account_io_start
Trace this kernel function, and print info with a kernel stack trace
trace 'do_sys_open "%s", arg2'
Trace the open syscall and print the filename being opened
trace 'sys_read (arg3 > 20000) "read %d bytes", arg3'
Trace the read syscall and print a message for reads >20000 bytes
trace r::do_sys_return
Trace the return from the open syscall
trace 'c:open (arg2 == 42) "%s %d", arg1, arg2'
Trace the open() call from libc only if the flags (arg2) argument is 42
trace 'p:c:write (arg1 == 1) "writing %d bytes to STDOUT", arg3'
Trace the write() call from libc to monitor writes to STDOUT
trace 'r:c:malloc (retval) "allocated = %p", retval
Trace returns from malloc and print non-NULL allocated buffers
trace 't:block:block_rq_complete "sectors=%d", args->nr_sector'
Trace the block_rq_complete kernel tracepoint and print # of tx sectors
trace 'u:pthread:pthread_create (arg4 != 0)'
Trace the USDT probe pthread_create when its 4th argument is non-zero
from:	trace	-h
argdist	
# argdist -H 'p::tcp_cleanup_rbuf(struct sock *sk, int copied):int:copied'
[15:34:45]
copied : count distribution
0 -> 1 : 15088 |********************************** |
2 -> 3 : 0 | |
4 -> 7 : 0 | |
8 -> 15 : 0 | |
16 -> 31 : 0 | |
32 -> 63 : 0 | |
64 -> 127 : 4786 |*********** |
128 -> 255 : 1 | |
256 -> 511 : 1 | |
512 -> 1023 : 4 | |
1024 -> 2047 : 11 | |
2048 -> 4095 : 5 | |
4096 -> 8191 : 27 | |
8192 -> 16383 : 105 | |
16384 -> 32767 : 0 | |
32768 -> 65535 : 10086 |*********************** |
65536 -> 131071 : 60 | |
131072 -> 262143 : 17285 |****************************************|
[...]
by	Sasha	Goldshtein
argdist	One-Liners	
argdist -H 'p::__kmalloc(u64 size):u64:size'
Print a histogram of allocation sizes passed to kmalloc
argdist -p 1005 -C 'p:c:malloc(size_t size):size_t:size:size==16'
Print a frequency count of how many times process 1005 called malloc for 16 bytes
argdist -C 'r:c:gets():char*:$retval#snooped strings'
Snoop on all strings returned by gets()
argdist -H 'r::__kmalloc(size_t size):u64:$latency/$entry(size)#ns per byte'
Print a histogram of nanoseconds per byte from kmalloc allocations
argdist -C 'p::__kmalloc(size_t size, gfp_t flags):size_t:size:flags&GFP_ATOMIC'
Print frequency count of kmalloc allocation sizes that have GFP_ATOMIC
argdist -p 1005 -C 'p:c:write(int fd):int:fd' -T 5
Print frequency counts of how many times writes were issued to a particular file descriptor
number, in process 1005, but only show the top 5 busiest fds
argdist -p 1005 -H 'r:c:read()'
Print a histogram of error codes returned by read() in process 1005
argdist -C 'r::__vfs_read():u32:$PID:$latency > 100000'
Print frequency of reads by process where the latency was >0.1ms
from:	argdist	-h
BCC/BPF	VISUALIZATIONS	
Coming	to	a	GUI	near	you
Latency	Heatmaps
CPU	+	Off-CPU	Flame	Graphs	
hrp://www.brendangregg.com/flamegraphs.html	
•  Can	now	be	
BPF	opGmized
Off-Wake	Flame	
Graphs	
•  Shows	blocking	stack	with	
waker	stack	
–  Berer	understand	why	blocked	
–  Merged	in-kernel	using	BPF	
–  Include	mulGple	waker	stacks	==	
chain	graphs	
•  We	couldn't	do	this	before
HOW	TO	PROGRAM	BCC/BPF	
Overview	for	tool	developers
Linux	Event	Sources	
Linux	4.3	
Linux	4.7	 Linux	4.9	
Linux	4.9	
Linux	4.1	
BPF	stacks	
Linux	4.6	
BPF	output	
Linux	4.4	
(version	
feature	
arrived)
Methodology	
•  Find/draw	a	funcGonal	diagram	
–  Eg,	storage	I/O	subsystem:	
•  Apply	performance	methods	
hrp://www.brendangregg.com/methodology.html	
1.  Workload	CharacterizaGon	
2.  Latency	Analysis	
3.  USE	Method	
•  Start	with	the	Q's,	
then	find	the	A's
bitehist.py	Output	
# ./bitehist.py
Tracing... Hit Ctrl-C to end.
^C
kbytes : count distribution
0 -> 1 : 3 | |
2 -> 3 : 0 | |
4 -> 7 : 211 |********** |
8 -> 15 : 0 | |
16 -> 31 : 0 | |
32 -> 63 : 0 | |
64 -> 127 : 1 | |
128 -> 255 : 800 |**************************************|
bitehist.py	Code	
bcc	examples/tracing/bitehist.py
bytehist.py	Internals	
C	BPF	Program	
User-Level	
BPF.arach_kprobe()	
Kernel	
Event	
Map	StaGsGcs	
async	read	
BPF	Bytecode	
compile	
Verifier	
error	
BPF	Bytecode	
Python	Program	
print
bytehist.py	Annotated	
bcc	examples/tracing/bitehist.py	
C	BPF	Program	 Python	Program	Map	
StaGsGcs	
"kprobe__"	is	a	shortcut	for	BPF.arach_kprobe()	
Event
Current	ComplicaGons	
•  IniGalize	all	variables	
•  Extra	bpf_probe_read()s	
•  BPF_PERF_OUTPUT()	
•  Verifier	errors
bcc	Tutorials	
1.  hrps://github.com/iovisor/bcc/blob/master/INSTALL.md	
2.  …/docs/tutorial.md	
3.  …/docs/tutorial_bcc_python_developer.md	
4.  …/docs/reference_guide.md	
5.  .../CONTRIBUTING-SCRIPTS.md
bcc	lua	
bcc	examples/lua/strlen_count.lua
Summary	
BPF	Tracing	in	Linux	
•  3.19:	sockets	
•  3.19:	maps	
•  4.1:	kprobes	
•  4.3:	uprobes	
•  4.4:	BPF	output	
•  4.6:	stacks	
•  4.7:	tracepoints	
•  4.9:	profiling	
•  4.9:	PMCs	
hrps://github.com/iovisor/bcc#tools	
Future	Work	
•  More	tooling	
•  Bug	fixes	
•  Berer	errors	
•  VisualizaGons	
•  GUIs	
•  High-level	
language
Links	&	References	
•  iovisor	bcc:	
•  hrps://github.com/iovisor/bcc			hrps://github.com/iovisor/bcc/tree/master/docs		
•  hrp://www.brendangregg.com/blog/	(search	for	"bcc")	
•  hrp://blogs.microsoO.co.il/sasha/2016/02/14/two-new-ebpf-tools-memleak-and-argdist/	
•  On	designing	tracing	tools:	hrps://www.youtube.com/watch?v=uibLwoVKjec		
•  BPF:	
•  hrps://www.kernel.org/doc/DocumentaGon/networking/filter.txt	
•  hrps://github.com/iovisor/bpf-docs		
•  hrps://suchakra.wordpress.com/tag/bpf/		
•  Flame	Graphs:	
•  hrp://www.brendangregg.com/flamegraphs.html	
•  hrp://www.brendangregg.com/blog/2016-01-20/ebpf-offcpu-flame-graph.html	
•  hrp://www.brendangregg.com/blog/2016-02-01/linux-wakeup-offwake-profiling.html	
•  Dynamic	InstrumentaGon:	
•  hrp://Op.cs.wisc.edu/par-distr-sys/papers/Hollingsworth94Dynamic.pdf	
•  hrps://en.wikipedia.org/wiki/DTrace		
•  DTrace:	Dynamic	Tracing	in	Oracle	Solaris,	Mac	OS	X	and	FreeBSD,	Brendan	Gregg,	Jim	Mauro;	PrenGce	Hall	2011	
•  NeElix	Tech	Blog	on	Vector:	
•  hrp://techblog.neElix.com/2015/04/introducing-vector-neElixs-on-host.html	
•  Greg	Law's	GDB	talk:	hrps://www.youtube.com/watch?v=PorfLSr3DDI		
•  Linux	Performance:	hrp://www.brendangregg.com/linuxperf.html
Thanks	
•  QuesGons?	
•  iovisor	bcc:	hrps://github.com/iovisor/bcc		
•  hrp://www.brendangregg.com	
•  hrp://slideshare.net/brendangregg		
•  bgregg@neElix.com	
•  @brendangregg	
	
Thanks	to	Alexei	Starovoitov	(Facebook),	Brenden	Blanco	
(PLUMgrid),	Sasha	Goldshtein	(Sela),	Daniel	Borkmann	(Cisco),	
Wang	Nan	(Huawei),	and	other	BPF	and	bcc	contributors!
1 of 68

Recommended

Meet cute-between-ebpf-and-tracing by
Meet cute-between-ebpf-and-tracingMeet cute-between-ebpf-and-tracing
Meet cute-between-ebpf-and-tracingViller Hsiao
8.8K views75 slides
Linux kernel tracing by
Linux kernel tracingLinux kernel tracing
Linux kernel tracingViller Hsiao
16.9K views70 slides
Performance Wins with eBPF: Getting Started (2021) by
Performance Wins with eBPF: Getting Started (2021)Performance Wins with eBPF: Getting Started (2021)
Performance Wins with eBPF: Getting Started (2021)Brendan Gregg
1.4K views30 slides
Performance Wins with BPF: Getting Started by
Performance Wins with BPF: Getting StartedPerformance Wins with BPF: Getting Started
Performance Wins with BPF: Getting StartedBrendan Gregg
2K views24 slides
Linux Performance Analysis: New Tools and Old Secrets by
Linux Performance Analysis: New Tools and Old SecretsLinux Performance Analysis: New Tools and Old Secrets
Linux Performance Analysis: New Tools and Old SecretsBrendan Gregg
603.9K views75 slides
Container Performance Analysis by
Container Performance AnalysisContainer Performance Analysis
Container Performance AnalysisBrendan Gregg
448.6K views75 slides

More Related Content

What's hot

Linux 4.x Tracing: Performance Analysis with bcc/BPF by
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPFBrendan Gregg
10.7K views70 slides
BPF - in-kernel virtual machine by
BPF - in-kernel virtual machineBPF - in-kernel virtual machine
BPF - in-kernel virtual machineAlexei Starovoitov
11.7K views41 slides
BPF: Tracing and more by
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
200.3K views72 slides
Introduction to eBPF by
Introduction to eBPFIntroduction to eBPF
Introduction to eBPFRogerColl2
317 views19 slides
YOW2020 Linux Systems Performance by
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems PerformanceBrendan Gregg
1.9K views64 slides
Broken Linux Performance Tools 2016 by
Broken Linux Performance Tools 2016Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016Brendan Gregg
822.4K views95 slides

What's hot(20)

Linux 4.x Tracing: Performance Analysis with bcc/BPF by Brendan Gregg
Linux 4.x Tracing: Performance Analysis with bcc/BPFLinux 4.x Tracing: Performance Analysis with bcc/BPF
Linux 4.x Tracing: Performance Analysis with bcc/BPF
Brendan Gregg10.7K views
BPF: Tracing and more by Brendan Gregg
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
Brendan Gregg200.3K views
Introduction to eBPF by RogerColl2
Introduction to eBPFIntroduction to eBPF
Introduction to eBPF
RogerColl2317 views
YOW2020 Linux Systems Performance by Brendan Gregg
YOW2020 Linux Systems PerformanceYOW2020 Linux Systems Performance
YOW2020 Linux Systems Performance
Brendan Gregg1.9K views
Broken Linux Performance Tools 2016 by Brendan Gregg
Broken Linux Performance Tools 2016Broken Linux Performance Tools 2016
Broken Linux Performance Tools 2016
Brendan Gregg822.4K views
BPF Internals (eBPF) by Brendan Gregg
BPF Internals (eBPF)BPF Internals (eBPF)
BPF Internals (eBPF)
Brendan Gregg15.3K views
Linux BPF Superpowers by Brendan Gregg
Linux BPF SuperpowersLinux BPF Superpowers
Linux BPF Superpowers
Brendan Gregg422.6K views
Velocity 2015 linux perf tools by Brendan Gregg
Velocity 2015 linux perf toolsVelocity 2015 linux perf tools
Velocity 2015 linux perf tools
Brendan Gregg1.1M views
eBPF Trace from Kernel to Userspace by SUSE Labs Taipei
eBPF Trace from Kernel to UserspaceeBPF Trace from Kernel to Userspace
eBPF Trace from Kernel to Userspace
SUSE Labs Taipei8.5K views
Kernel Recipes 2017: Using Linux perf at Netflix by Brendan Gregg
Kernel Recipes 2017: Using Linux perf at NetflixKernel Recipes 2017: Using Linux perf at Netflix
Kernel Recipes 2017: Using Linux perf at Netflix
Brendan Gregg1.5M views
YOW2018 Cloud Performance Root Cause Analysis at Netflix by Brendan Gregg
YOW2018 Cloud Performance Root Cause Analysis at NetflixYOW2018 Cloud Performance Root Cause Analysis at Netflix
YOW2018 Cloud Performance Root Cause Analysis at Netflix
Brendan Gregg142.2K views
LSFMM 2019 BPF Observability by Brendan Gregg
LSFMM 2019 BPF ObservabilityLSFMM 2019 BPF Observability
LSFMM 2019 BPF Observability
Brendan Gregg8.3K views
UM2019 Extended BPF: A New Type of Software by Brendan Gregg
UM2019 Extended BPF: A New Type of SoftwareUM2019 Extended BPF: A New Type of Software
UM2019 Extended BPF: A New Type of Software
Brendan Gregg33K views
Linux Performance Analysis and Tools by Brendan Gregg
Linux Performance Analysis and ToolsLinux Performance Analysis and Tools
Linux Performance Analysis and Tools
Brendan Gregg531.1K views
Understanding eBPF in a Hurry! by Ray Jenkins
Understanding eBPF in a Hurry!Understanding eBPF in a Hurry!
Understanding eBPF in a Hurry!
Ray Jenkins1.5K views
Linux Systems Performance 2016 by Brendan Gregg
Linux Systems Performance 2016Linux Systems Performance 2016
Linux Systems Performance 2016
Brendan Gregg504.5K views
Berkeley Packet Filters by Kernel TLV
Berkeley Packet FiltersBerkeley Packet Filters
Berkeley Packet Filters
Kernel TLV6.4K views

Viewers also liked

Modern SQL in Open Source and Commercial Databases by
Modern SQL in Open Source and Commercial DatabasesModern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial DatabasesMarkus Winand
450.7K views174 slides
Modern Data Center Network Architecture - The house that Clos built by
Modern Data Center Network Architecture - The house that Clos builtModern Data Center Network Architecture - The house that Clos built
Modern Data Center Network Architecture - The house that Clos builtCumulus Networks
11.8K views29 slides
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2 by
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2Tanel Poder
12.6K views21 slides
Tanel Poder Oracle Scripts and Tools (2010) by
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder
46.2K views79 slides
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1 by
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1Tanel Poder
14K views29 slides
EuroBSDcon 2017 System Performance Analysis Methodologies by
EuroBSDcon 2017 System Performance Analysis MethodologiesEuroBSDcon 2017 System Performance Analysis Methodologies
EuroBSDcon 2017 System Performance Analysis MethodologiesBrendan Gregg
15.8K views65 slides

Viewers also liked(20)

Modern SQL in Open Source and Commercial Databases by Markus Winand
Modern SQL in Open Source and Commercial DatabasesModern SQL in Open Source and Commercial Databases
Modern SQL in Open Source and Commercial Databases
Markus Winand450.7K views
Modern Data Center Network Architecture - The house that Clos built by Cumulus Networks
Modern Data Center Network Architecture - The house that Clos builtModern Data Center Network Architecture - The house that Clos built
Modern Data Center Network Architecture - The house that Clos built
Cumulus Networks11.8K views
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2 by Tanel Poder
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 2
Tanel Poder12.6K views
Tanel Poder Oracle Scripts and Tools (2010) by Tanel Poder
Tanel Poder Oracle Scripts and Tools (2010)Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder Oracle Scripts and Tools (2010)
Tanel Poder46.2K views
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1 by Tanel Poder
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1
Tanel Poder - Troubleshooting Complex Oracle Performance Issues - Part 1
Tanel Poder14K views
EuroBSDcon 2017 System Performance Analysis Methodologies by Brendan Gregg
EuroBSDcon 2017 System Performance Analysis MethodologiesEuroBSDcon 2017 System Performance Analysis Methodologies
EuroBSDcon 2017 System Performance Analysis Methodologies
Brendan Gregg15.8K views
G1 Garbage Collector: Details and Tuning by Simone Bordet
G1 Garbage Collector: Details and TuningG1 Garbage Collector: Details and Tuning
G1 Garbage Collector: Details and Tuning
Simone Bordet18.7K views
Troubleshooting PostgreSQL Streaming Replication by Alexey Lesovsky
Troubleshooting PostgreSQL Streaming ReplicationTroubleshooting PostgreSQL Streaming Replication
Troubleshooting PostgreSQL Streaming Replication
Alexey Lesovsky9.6K views
Am I reading GC logs Correctly? by Tier1 App
Am I reading GC logs Correctly?Am I reading GC logs Correctly?
Am I reading GC logs Correctly?
Tier1 App2K views
RxNetty vs Tomcat Performance Results by Brendan Gregg
RxNetty vs Tomcat Performance ResultsRxNetty vs Tomcat Performance Results
RxNetty vs Tomcat Performance Results
Brendan Gregg13K views
Row Pattern Matching in SQL:2016 by Markus Winand
Row Pattern Matching in SQL:2016Row Pattern Matching in SQL:2016
Row Pattern Matching in SQL:2016
Markus Winand109.3K views
Designing Tracing Tools by Brendan Gregg
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing Tools
Brendan Gregg5.7K views
Java Performance Analysis on Linux with Flame Graphs by Brendan Gregg
Java Performance Analysis on Linux with Flame GraphsJava Performance Analysis on Linux with Flame Graphs
Java Performance Analysis on Linux with Flame Graphs
Brendan Gregg24.7K views
Shell,信号量以及java进程的退出 by wang hongjiang
Shell,信号量以及java进程的退出Shell,信号量以及java进程的退出
Shell,信号量以及java进程的退出
wang hongjiang2.5K views
Netflix: From Clouds to Roots by Brendan Gregg
Netflix: From Clouds to RootsNetflix: From Clouds to Roots
Netflix: From Clouds to Roots
Brendan Gregg67.8K views
H2O - the optimized HTTP server by Kazuho Oku
H2O - the optimized HTTP serverH2O - the optimized HTTP server
H2O - the optimized HTTP server
Kazuho Oku76.4K views
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala by Helena Edelson
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, ScalaLambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Lambda Architecture with Spark Streaming, Kafka, Cassandra, Akka, Scala
Helena Edelson75K views
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015) by Robert "Chip" Senkbeil
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Reactive dashboard’s using apache spark by Rahul Kumar
Reactive dashboard’s using apache sparkReactive dashboard’s using apache spark
Reactive dashboard’s using apache spark
Rahul Kumar37.5K views
Real-Time Anomaly Detection with Spark MLlib, Akka and Cassandra by Natalino Busa
Real-Time Anomaly Detection  with Spark MLlib, Akka and  CassandraReal-Time Anomaly Detection  with Spark MLlib, Akka and  Cassandra
Real-Time Anomaly Detection with Spark MLlib, Akka and Cassandra
Natalino Busa64.9K views

Similar to Linux 4.x Tracing Tools: Using BPF Superpowers

Velocity 2017 Performance analysis superpowers with Linux eBPF by
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPFBrendan Gregg
735.2K views54 slides
USENIX ATC 2017 Performance Superpowers with Enhanced BPF by
USENIX ATC 2017 Performance Superpowers with Enhanced BPFUSENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPFBrendan Gregg
7.1K views60 slides
OSSNA 2017 Performance Analysis Superpowers with Linux BPF by
OSSNA 2017 Performance Analysis Superpowers with Linux BPFOSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPFBrendan Gregg
5.1K views68 slides
Modern Linux Tracing Landscape by
Modern Linux Tracing LandscapeModern Linux Tracing Landscape
Modern Linux Tracing LandscapeSasha Goldshtein
1.9K views30 slides
Systems@Scale 2021 BPF Performance Getting Started by
Systems@Scale 2021 BPF Performance Getting StartedSystems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting StartedBrendan Gregg
1.5K views30 slides
Efficient System Monitoring in Cloud Native Environments by
Efficient System Monitoring in Cloud Native EnvironmentsEfficient System Monitoring in Cloud Native Environments
Efficient System Monitoring in Cloud Native EnvironmentsGergely Szabó
123 views56 slides

Similar to Linux 4.x Tracing Tools: Using BPF Superpowers(20)

Velocity 2017 Performance analysis superpowers with Linux eBPF by Brendan Gregg
Velocity 2017 Performance analysis superpowers with Linux eBPFVelocity 2017 Performance analysis superpowers with Linux eBPF
Velocity 2017 Performance analysis superpowers with Linux eBPF
Brendan Gregg735.2K views
USENIX ATC 2017 Performance Superpowers with Enhanced BPF by Brendan Gregg
USENIX ATC 2017 Performance Superpowers with Enhanced BPFUSENIX ATC 2017 Performance Superpowers with Enhanced BPF
USENIX ATC 2017 Performance Superpowers with Enhanced BPF
Brendan Gregg7.1K views
OSSNA 2017 Performance Analysis Superpowers with Linux BPF by Brendan Gregg
OSSNA 2017 Performance Analysis Superpowers with Linux BPFOSSNA 2017 Performance Analysis Superpowers with Linux BPF
OSSNA 2017 Performance Analysis Superpowers with Linux BPF
Brendan Gregg5.1K views
Systems@Scale 2021 BPF Performance Getting Started by Brendan Gregg
Systems@Scale 2021 BPF Performance Getting StartedSystems@Scale 2021 BPF Performance Getting Started
Systems@Scale 2021 BPF Performance Getting Started
Brendan Gregg1.5K views
Efficient System Monitoring in Cloud Native Environments by Gergely Szabó
Efficient System Monitoring in Cloud Native EnvironmentsEfficient System Monitoring in Cloud Native Environments
Efficient System Monitoring in Cloud Native Environments
Gergely Szabó123 views
re:Invent 2019 BPF Performance Analysis at Netflix by Brendan Gregg
re:Invent 2019 BPF Performance Analysis at Netflixre:Invent 2019 BPF Performance Analysis at Netflix
re:Invent 2019 BPF Performance Analysis at Netflix
Brendan Gregg5.5K views
Designing Tracing Tools by Sysdig
Designing Tracing ToolsDesigning Tracing Tools
Designing Tracing Tools
Sysdig 522 views
Kernel Recipes 2017 - Performance analysis Superpowers with Linux BPF - Brend... by Anne Nicolas
Kernel Recipes 2017 - Performance analysis Superpowers with Linux BPF - Brend...Kernel Recipes 2017 - Performance analysis Superpowers with Linux BPF - Brend...
Kernel Recipes 2017 - Performance analysis Superpowers with Linux BPF - Brend...
Anne Nicolas479 views
Kernel Recipes 2017: Performance Analysis with BPF by Brendan Gregg
Kernel Recipes 2017: Performance Analysis with BPFKernel Recipes 2017: Performance Analysis with BPF
Kernel Recipes 2017: Performance Analysis with BPF
Brendan Gregg5.3K views
ATO Linux Performance 2018 by Brendan Gregg
ATO Linux Performance 2018ATO Linux Performance 2018
ATO Linux Performance 2018
Brendan Gregg3.3K views
Building Network Functions with eBPF & BCC by Kernel TLV
Building Network Functions with eBPF & BCCBuilding Network Functions with eBPF & BCC
Building Network Functions with eBPF & BCC
Kernel TLV3K views
Low Overhead System Tracing with eBPF by Akshay Kapoor
Low Overhead System Tracing with eBPFLow Overhead System Tracing with eBPF
Low Overhead System Tracing with eBPF
Akshay Kapoor860 views
XDP in Practice: DDoS Mitigation @Cloudflare by C4Media
XDP in Practice: DDoS Mitigation @CloudflareXDP in Practice: DDoS Mitigation @Cloudflare
XDP in Practice: DDoS Mitigation @Cloudflare
C4Media2.1K views
ebpf and IO Visor: The What, how, and what next! by Affan Syed
ebpf and IO Visor: The What, how, and what next!ebpf and IO Visor: The What, how, and what next!
ebpf and IO Visor: The What, how, and what next!
Affan Syed3.4K views
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch... by Hsien-Hsin Sean Lee, Ph.D.
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
Lec7 Computer Architecture by Hsien-Hsin Sean Lee Georgia Tech -- Dynamic Sch...
The power of linux advanced tracer [POUG18] by Mahmoud Hatem
The power of linux advanced tracer [POUG18]The power of linux advanced tracer [POUG18]
The power of linux advanced tracer [POUG18]
Mahmoud Hatem1.3K views
PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec... by Faisal Akber
PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...
PGCon 2014 - What Do You Mean my Database Server Core Dumped? - How to Inspec...
Faisal Akber1.3K views

More from Brendan Gregg

YOW2021 Computing Performance by
YOW2021 Computing PerformanceYOW2021 Computing Performance
YOW2021 Computing PerformanceBrendan Gregg
2K views108 slides
Computing Performance: On the Horizon (2021) by
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)Brendan Gregg
92.5K views113 slides
LPC2019 BPF Tracing Tools by
LPC2019 BPF Tracing ToolsLPC2019 BPF Tracing Tools
LPC2019 BPF Tracing ToolsBrendan Gregg
1.8K views9 slides
YOW2018 CTO Summit: Working at netflix by
YOW2018 CTO Summit: Working at netflixYOW2018 CTO Summit: Working at netflix
YOW2018 CTO Summit: Working at netflixBrendan Gregg
3.5K views21 slides
eBPF Perf Tools 2019 by
eBPF Perf Tools 2019eBPF Perf Tools 2019
eBPF Perf Tools 2019Brendan Gregg
8.4K views39 slides
BPF Tools 2017 by
BPF Tools 2017BPF Tools 2017
BPF Tools 2017Brendan Gregg
2.4K views44 slides

More from Brendan Gregg(12)

YOW2021 Computing Performance by Brendan Gregg
YOW2021 Computing PerformanceYOW2021 Computing Performance
YOW2021 Computing Performance
Brendan Gregg2K views
Computing Performance: On the Horizon (2021) by Brendan Gregg
Computing Performance: On the Horizon (2021)Computing Performance: On the Horizon (2021)
Computing Performance: On the Horizon (2021)
Brendan Gregg92.5K views
LPC2019 BPF Tracing Tools by Brendan Gregg
LPC2019 BPF Tracing ToolsLPC2019 BPF Tracing Tools
LPC2019 BPF Tracing Tools
Brendan Gregg1.8K views
YOW2018 CTO Summit: Working at netflix by Brendan Gregg
YOW2018 CTO Summit: Working at netflixYOW2018 CTO Summit: Working at netflix
YOW2018 CTO Summit: Working at netflix
Brendan Gregg3.5K views
NetConf 2018 BPF Observability by Brendan Gregg
NetConf 2018 BPF ObservabilityNetConf 2018 BPF Observability
NetConf 2018 BPF Observability
Brendan Gregg2.7K views
Linux Performance 2018 (PerconaLive keynote) by Brendan Gregg
Linux Performance 2018 (PerconaLive keynote)Linux Performance 2018 (PerconaLive keynote)
Linux Performance 2018 (PerconaLive keynote)
Brendan Gregg425.8K views
How Netflix Tunes EC2 Instances for Performance by Brendan Gregg
How Netflix Tunes EC2 Instances for PerformanceHow Netflix Tunes EC2 Instances for Performance
How Netflix Tunes EC2 Instances for Performance
Brendan Gregg523.9K views
LISA17 Container Performance Analysis by Brendan Gregg
LISA17 Container Performance AnalysisLISA17 Container Performance Analysis
LISA17 Container Performance Analysis
Brendan Gregg9.3K views
USENIX ATC 2017: Visualizing Performance with Flame Graphs by Brendan Gregg
USENIX ATC 2017: Visualizing Performance with Flame GraphsUSENIX ATC 2017: Visualizing Performance with Flame Graphs
USENIX ATC 2017: Visualizing Performance with Flame Graphs
Brendan Gregg671.9K views

Recently uploaded

.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTVSplunk
86 views20 slides
Five Things You SHOULD Know About Postman by
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About PostmanPostman
25 views43 slides
PharoJS - Zürich Smalltalk Group Meetup November 2023 by
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023Noury Bouraqadi
113 views17 slides
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur by
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
"Thriving Culture in a Product Company — Practical Story", Volodymyr TsukurFwdays
40 views31 slides
Micron CXL product and architecture update by
Micron CXL product and architecture updateMicron CXL product and architecture update
Micron CXL product and architecture updateCXL Forum
27 views7 slides
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...NUS-ISS
23 views70 slides

Recently uploaded(20)

.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by Splunk
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
Splunk86 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman25 views
PharoJS - Zürich Smalltalk Group Meetup November 2023 by Noury Bouraqadi
PharoJS - Zürich Smalltalk Group Meetup November 2023PharoJS - Zürich Smalltalk Group Meetup November 2023
PharoJS - Zürich Smalltalk Group Meetup November 2023
Noury Bouraqadi113 views
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur by Fwdays
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
"Thriving Culture in a Product Company — Practical Story", Volodymyr Tsukur
Fwdays40 views
Micron CXL product and architecture update by CXL Forum
Micron CXL product and architecture updateMicron CXL product and architecture update
Micron CXL product and architecture update
CXL Forum27 views
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by NUS-ISS
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
NUS-ISS23 views
"Role of a CTO in software outsourcing company", Yuriy Nakonechnyy by Fwdays
"Role of a CTO in software outsourcing company", Yuriy Nakonechnyy"Role of a CTO in software outsourcing company", Yuriy Nakonechnyy
"Role of a CTO in software outsourcing company", Yuriy Nakonechnyy
Fwdays40 views
Combining Orchestration and Choreography for a Clean Architecture by ThomasHeinrichs1
Combining Orchestration and Choreography for a Clean ArchitectureCombining Orchestration and Choreography for a Clean Architecture
Combining Orchestration and Choreography for a Clean Architecture
ThomasHeinrichs168 views
JCon Live 2023 - Lice coding some integration problems by Bernd Ruecker
JCon Live 2023 - Lice coding some integration problemsJCon Live 2023 - Lice coding some integration problems
JCon Live 2023 - Lice coding some integration problems
Bernd Ruecker67 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10165 views
The details of description: Techniques, tips, and tangents on alternative tex... by BookNet Canada
The details of description: Techniques, tips, and tangents on alternative tex...The details of description: Techniques, tips, and tangents on alternative tex...
The details of description: Techniques, tips, and tangents on alternative tex...
BookNet Canada110 views
"How we switched to Kanban and how it integrates with product planning", Vady... by Fwdays
"How we switched to Kanban and how it integrates with product planning", Vady..."How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady...
Fwdays61 views
Microchip: CXL Use Cases and Enabling Ecosystem by CXL Forum
Microchip: CXL Use Cases and Enabling EcosystemMicrochip: CXL Use Cases and Enabling Ecosystem
Microchip: CXL Use Cases and Enabling Ecosystem
CXL Forum129 views
Understanding GenAI/LLM and What is Google Offering - Felix Goh by NUS-ISS
Understanding GenAI/LLM and What is Google Offering - Felix GohUnderstanding GenAI/LLM and What is Google Offering - Felix Goh
Understanding GenAI/LLM and What is Google Offering - Felix Goh
NUS-ISS39 views
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor... by Vadym Kazulkin
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
How to reduce cold starts for Java Serverless applications in AWS at JCON Wor...
Vadym Kazulkin70 views
[2023] Putting the R! in R&D.pdf by Eleanor McHugh
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdf
Eleanor McHugh38 views
Data-centric AI and the convergence of data and model engineering: opportunit... by Paolo Missier
Data-centric AI and the convergence of data and model engineering:opportunit...Data-centric AI and the convergence of data and model engineering:opportunit...
Data-centric AI and the convergence of data and model engineering: opportunit...
Paolo Missier29 views
CXL at OCP by CXL Forum
CXL at OCPCXL at OCP
CXL at OCP
CXL Forum208 views

Linux 4.x Tracing Tools: Using BPF Superpowers