1uflow(8) System Manager's Manual uflow(8)
2
3
4
6 uflow, javaflow, perlflow, phpflow, pythonflow, rubyflow - Print a flow
7 graph of method calls in high-level languages.
8
10 javaflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
11 perlflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
12 phpflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
13 pythonflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
14 rubyflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
15 uflow [-h] [-M METHOD] [-C CLAZZ] [-v] [-l {java,perl,php,python,ruby}]
16 pid
17
19 uflow traces method calls and prints them in a flow graph that can
20 facilitate debugging and diagnostics by following the program's execu‐
21 tion (method flow).
22
23 This tool relies on USDT probes embedded in many high-level languages,
24 such as Java, Perl, PHP, Python, and Ruby. It requires a runtime
25 instrumented with these probes, which in some cases requires building
26 from source with a USDT-specific flag, such as "--enable-dtrace" or
27 "--with-dtrace". For Java processes, the startup flag "-XX:+Extended‐
28 DTraceProbes" is required. For PHP processes, the environment variable
29 USE_ZEND_DTRACE must be set to 1.
30
31 Since this uses BPF, only the root user can use this tool.
32
34 CONFIG_BPF and bcc.
35
37 -M METHOD
38 Print only method calls where the method name begins with this
39 string.
40
41 -C CLAZZ
42 Print only method calls where the class name begins with this
43 string. The class name interpretation strongly depends on the
44 language. For example, in Java use "package/subpackage/Class‐
45 Name" to refer to classes.
46
47 -v Print the resulting BPF program, for debugging purposes.
48
49 {java,perl,php,python,ruby}
50 The language to trace.
51
52 pid The process id to trace.
53
55 Follow method flow in a Ruby process:
56 # uflow ruby 148
57
58 Follow method flow in a Java process where the class name is
59 java.lang.Thread:
60 # uflow -C java/lang/Thread java 1802
61
63 CPU The CPU number on which the method was invoked. This is useful
64 to easily see where the output skips to a different CPU.
65
66 PID The process id.
67
68 TID The thread id.
69
70 TIME The duration of the method call.
71
72 METHOD The method name.
73
75 This tool has extremely high overhead because it prints every method
76 call. For some scenarios, you might see lost samples in the output as
77 the tool is unable to keep up with the rate of data coming from the
78 kernel. Filtering by class or method prefix can help reduce the amount
79 of data printed, but there is still a very high overhead in the collec‐
80 tion mechanism. Do not use for performance- sensitive production sce‐
81 narios, and always test first.
82
84 This is from bcc.
85
86 https://github.com/iovisor/bcc
87
88 Also look in the bcc distribution for a companion _example.txt file
89 containing example usage, output, and commentary for this tool.
90
92 Linux
93
95 Unstable - in development.
96
98 Sasha Goldshtein
99
101 trace(8), ustat(8)
102
103
104
105USER COMMANDS 2016-11-07 uflow(8)