1uflow(8)                    System Manager's Manual                   uflow(8)
2
3
4

NAME

6       uflow, javaflow, perlflow, phpflow, pythonflow, rubyflow - Print a flow
7       graph of method calls in high-level languages.
8

SYNOPSIS

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

DESCRIPTION

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

REQUIREMENTS

34       CONFIG_BPF and bcc.
35

OPTIONS

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

EXAMPLES

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

FIELDS

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

OVERHEAD

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

SOURCE

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

OS

92       Linux
93

STABILITY

95       Unstable - in development.
96

AUTHOR

98       Sasha Goldshtein
99

SEE ALSO

101       trace(8), ustat(8)
102
103
104
105USER COMMANDS                     2016-11-07                          uflow(8)
Impressum