2
2
3
3
## Introduction
4
4
5
- Firecracker implements a framework for instrumentation based tracing.
5
+ Firecracker implements a framework for instrumentation based tracing with the
6
+ aim to improve its debugability.
6
7
7
- Instrumentation based tracing as defined by
8
- [ Sheng Liang on usenix.org] ( https://www.usenix.org/legacy/publications/library/proceedings/coots99/full_papers/liang/liang_html/node9.html ) :
8
+ Instrumentation based tracing was defined by
9
+ [ Sheng Liang on usenix.org] ( https://www.usenix.org/legacy/publications/library/proceedings/coots99/full_papers/liang/liang_html/node9.html )
10
+ as:
9
11
10
12
> There are two ways to obtain profiling information: either statistical
11
13
> sampling or code instrumentation. Statistical sampling is less disruptive to
@@ -16,8 +18,6 @@ Instrumentation based tracing as defined by
16
18
> percentage of time spent in frequently-called methods, whereas code
17
19
> instrumentation can report the exact number of time each method is invoked.
18
20
19
- The focus with tracing in Firecracker is to improve debug-ability.
20
-
21
21
Enabling tracing adds logs output on each functions entry and exit. This assists
22
22
debugging problems that relate to deadlocks or high latencies by quickly
23
23
identifying elongated function calls.
@@ -26,11 +26,12 @@ identifying elongated function calls.
26
26
27
27
Firecracker implements instrumentation based tracing via
28
28
[ ` log ` ] ( https://github.com/rust-lang/log ) and
29
- [ ` log_instrument ` ] ( https://github.com/JonathanWoollett-Light /log-instrument) ,
30
- outputting a ` Trace ` level log when entering and exiting every function.
29
+ [ ` log_instrument ` ] ( ../src /log-instrument) , outputting a ` Trace ` level log when
30
+ entering and exiting every function.
31
31
32
- It is disabled by default at compile-time. Tracing functionality has no impact
33
- on the release binary.
32
+ Adding traces impacts Firecracker binary size and its performance, so
33
+ instrumentation is not present by default. Instrumentation is also not present
34
+ on the release binaries.
34
35
35
36
You can use ` cargo run --bin clippy-tracing -- ` to build and run the latest
36
37
version in the repo or you can run ` cargo install --path src/clippy-tracing ` to
0 commit comments