Top Banner
Hardware-assisted software tracing Adrien Vergé [email protected]
66

Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Feb 14, 2019

Download

Documents

trandung
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Hardware-assistedsoftware tracing

Adrien Vergé[email protected]

Page 2: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

talk about tracing

Page 3: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

improve tracing

using

hardware

Page 4: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

1 Tracing2 Hardware3 Improvements

Page 5: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

1

Tracing

Page 6: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

“a technique used to understand what is going on in a system in

order to debug or monitor it”

Page 7: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

recording events

from the kernel:

in user-space: tracepoints inside your application

IRQ handlers, system calls,scheduling activity, network activity, etc.

Page 8: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Why is my software crashing?Where are the bottlenecks?

How to improve performance?

use less resourcesrun faster

save battery

Page 9: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

a process spawns 2 threads:#1 produces chunks of datathat #2 consumes

thread 1thread 1thread 2thread 2

processprocess

time

exam

ple

Page 10: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

example: LTTng+TMF12:40:48.500 12:40:48.600 12:40:48.700Process TID PTID

bottleneck

bottleneck

bottleneck

26242

26243

26244

26226

26242

26242

12:40:48.500 12:40:48.600 12:40:48.700

CPU 0

CPU 1CPU 2

CPU 3CPU 4

CPU 5CPU 6

CPU 7IRQ 44

IRQ 46IRQ 43

SOFT_IRQ 9SOFT_IRQ 4

SOFT_IRQ 1SOFT_IRQ 7

WAIT_BLOCKEDWAIT_FOR_CPUUSERMODESYSCALLINTERRUPTED

Page 11: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

example: LTTng+TMF12:40:48.500 12:40:48.600 12:40:48.700Process TID PTID

bottleneck

bottleneck

bottleneck

26242

26243

26244

26226

26242

26242

WAIT_BLOCKEDWAIT_FOR_CPUUSERMODESYSCALLINTERRUPTED

execvee c c

m

m

Page 12: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

example: LTTng+TMF12:40:48.500 12:40:48.600 12:40:48.700Process TID PTID

bottleneck

bottleneck

bottleneck

26242

26243

26244

26226

26242

26242

WAIT_BLOCKEDWAIT_FOR_CPUUSERMODESYSCALLINTERRUPTED

read

exec

Page 13: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

example: LTTng+TMF12:40:48.500 12:40:48.600 12:40:48.700Process TID PTID

bottleneck

bottleneck

bottleneck

26242

26243

26244

26226

26242

26242

WAIT_BLOCKEDWAIT_FOR_CPUUSERMODESYSCALLINTERRUPTED

read write wri

write

read

exec

Page 14: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

tracing:recording events

for use in further analysis

Page 15: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

tracing:recording events

for use in further analysis

So it's just logging?

Page 16: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

tracing vs. logging

compact binary trace formatbuffering — avoid disk IO

lockless algorithmslow-level optimizations

result : ~200 μs vs. ~200 ns / event

Page 17: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

tracin

g us

ers heavy workload

servers

real-time

intrusion detection

Google IBM

Autodesk

CAEOPAL-RT

Page 18: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

tracin

g us

ers heavy workload

servers

embedded

systemsreal-time

intrusion detection

Google IBM

Ericsson

FreescaleMontavista

Nokia

SiemensSTMicroelectronicsWind RiverAutodesk

CAEOPAL-RT

Page 19: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

tracin

g us

ers heavy workload

servers

embedded

systemsreal-time

intrusion detection

YOU!

Google IBM

Ericsson

FreescaleMontavista

Nokia

SiemensSTMicroelectronicsWind RiverAutodesk

CAEOPAL-RT

Page 20: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Beyond Heisenberg:observe without altering

— perform light (size) and fast (time)

— don't pollute memory space

— thousands of events / sneed

s

Page 21: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

2

Hardware

Page 22: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Microchips are no longer just CPUs

cred

it: A

RM

Page 23: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Intel (x86)BTS, LBR, PT...

Freescale (PowerPC)Nexus Program Trace,

Data Acquisition...ARMCoreSightETM, ETB, STM...

lots of tracing units

Page 24: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

STM (event tracing)

ETM (execution tracing)

BTS (execution tracing)

lots of tracing units

Page 25: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

supported by (probably good) proprietary software

lots of tracing units

Page 26: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Do you have one of these?

widely spread

cred

it: S

amsu

ng,

tabl

eto

lic.c

om,

play

er.d

e, d

igita

ltren

ds.c

om

Page 27: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

widely spread

Is your Intel CPU newer than this one?

cred

it: I

ntel

Page 28: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

3

Improvements

Page 29: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

3

Improvements1/3 STM on ARM

Page 30: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

System Trace Module (STM)

help softwarerecording

eventsGoal:

Page 31: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

System Trace Module (STM)

Providesdedicated resources

bus, buffer, timestampingNeed to

instrumentsoftware

Page 32: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

CPUETM

STM

ETB

system bus

timestamping

system-on-chip

System Trace Module (STM)

Page 33: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

imple

ment

ation “LTTng-equivalent”

The traced process is instrumented:calling tracepoint() writes to the STM.

Embedding payload is possible. A consumer process retrieves

generated traces and stores them.

Page 34: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

imple

ment

ation

optimized, compact butproprietary format

Traces areencoded in STP.

Page 35: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

result

s

0

5

10

15

20

only tracepoints computation + tracepoints

time

per

itera

tion

(µs)

no tracing

LTTng-UST

STM + ETB

indicative benchmark: overhead mostly depends on the traced application!

Page 36: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

result

s

0

5

10

15

20

only tracepoints computation + tracepoints

time

per

itera

tion

(µs)

no tracing

LTTng-UST

STM + ETB

Page 37: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

3

Improvements2/3 ETM on ARM

Page 38: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

trace executionGoal:

Embedded Trace Macrocell (ETM)

Page 39: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

trace executionGoal:

Embedded Trace Macrocell (ETM)

i.e. save every executedinstruction address

Page 40: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Embedded Trace Macrocell (ETM)

Providesdedicated resources

address comparators,buffer, timestamping

Page 41: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Embedded Trace Macrocell (ETM)

Providesdedicated resources

address comparators,buffer, timestamping

Can focus on aspecific process or function triggers upon custom conditions

Page 42: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Embedded Trace Macrocell (ETM)

Providesdedicated resources

address comparators,buffer, timestamping

No need to instrument

software

Can focus on aspecific process or function triggers upon custom conditions

Page 43: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

CPUETM

STM

ETB

system bus

timestamping

system-on-chip

Embedded Trace Macrocell (ETM)

Page 44: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

imple

ment

ation ETM not meant

to trace events

Page 45: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

imple

ment

ation

do execution tracingon event addresses

set address comparators to trigger in [event, event+4]

ETM not meantto trace events

Idea:

Page 46: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

imple

ment

ation needed to write

kernel support for

process andfunction tracing

Page 47: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

result

s

0

5

10

15

20

25

30

35

40

45

50

only computation more computation

time

per

itera

tion

(µs)

EV

EN

T L

OS

S

no tracingLTTng-USTETM + ETB

Page 48: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

3

Improvements3/3 BTS on x86

Page 49: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

trace executionGoal:

Branch Trace Store (BTS)

Page 50: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

CPU

BTS

RAM

x86 host

branch records

4015a8

7f2aac77e0247f2aac77e012

40ef264015b0

4015b4

Branch Trace Store (BTS)

Page 51: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

does not provide dedicated buffers

cannot focus on a specific process or function: traces every branch!

Branch Trace Store (BTS)

Page 52: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

$ perf record -e branches:u -c 1 -d ./myprogram$ perf script -f time,ip,addr101918.272364: ffffffff814a6f2c => 7f8d7b9b3180101918.272364: ffffffff814a6f2c => 7f8d7b9b3180101918.272364: 7f8d7b9b3183 => 7f8d7b9b6730101918.272364: ffffffff814a6f2c => 7f8d7b9b6730101918.272364: ffffffff814a6f2c => 7f8d7b9b674f101918.272364: ffffffff814a6f2c => 7f8d7b9b6756101918.272364: 7f8d7b9b67c2 => 7f8d7b9b67df101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67ef => 7f8d7b9b6a30101918.272364: 7f8d7b9b6a38 => 7f8d7b9b6a58101918.272364: 7f8d7b9b6a62 => 7f8d7b9b6bc0101918.272364: 7f8d7b9b6bd7 => 7f8d7b9b67d3101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8101918.272364: 7f8d7b9b67e3 => 7f8d7b9b67c8

Page 53: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

“Ishardware-assisted branch tracing faster than pure-software event tracing?”

BTS not meantto trace events

if enabled, traces every branch

Page 54: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

imple

ment

ation hardware-traced

with BTS:

software-tracedwith LTTng:

simple program,every branchrecorded

same program,add a tracepoint()at every branch

Page 55: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

result

s

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

time

per

itera

tion

(µs)

program branching rate (branch/s)

no tracing

LTTng-UST

BTS with perf

Page 56: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

core 0

64K

512K

core 1

64K

512K

core 6

64K

512K

core 7

64K

512K

disk

use

r-sp

ace

system buffer

original perfBTS writes trace

to a dedicated buffer

trace is copied toa bigger memory zone uponbuffer full or context switch

user stores trace todisk using the write

system call

possible copy inanother buffer because

no O_SYNC flag

Page 57: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

core 0

core 1

core 6

core 7

disk

64K

512K ×

number of cores

new “spliced” perfBTS writes trace

to a dedicated buffer

upon buffer full orcontext switch, move to

the next sub-buffer

filled sub-buffersare labeled to be

written to disk later

writing is doneby a kernel taskin user context

Page 58: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

result

s

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

time

per

itera

tion

(µs)

program branching rate (branch/s)

no tracingLTTng-USTBTS with perfBTS with "spliced" perf

Page 59: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Results-75 % overhead compared to LTTng-USTneeds post-decodingSTM

ETM

BTS

-30 % to -50 % overheadlimited number of tracepointsno payload

not suited for event tracing (not flexible)compared to vanilla perf, 2× faster

Page 60: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

otherhardwareFreescale: Data Acquisition

Program Trace

Intel: Processor Trace

Page 61: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

last words

Page 62: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

tracing helps you build efficient software

Page 63: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

using LTTng:very low footprint

Cortex-A9: ~ 5 sµ / event Core i7: ~ 200 ns / event

Page 64: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

using hardware:almost zero footprint

trace in production!

Page 65: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

LinksLTTng and TMF:

https://lttng.org/

STM libraries:https://github.com/adrienverge/libcoresightomap4430

ETM patch:https://lkml.org/lkml/2014/1/30/259

BTS patch:https://github.com/adrienverge/linux/tree/patch_perf_bts_splice

Page 66: Hardware-assisted software tracing - eLinux.org · Hardware-assisted software tracing ... hardware-assisted branch tracing faster than pure-software event tracing?” BTS not meant

Thank you

Questions?