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

NAME

6       uflow,  javaflow,  perlflow,  phpflow,  pythonflow, rubyflow, tclflow -
7       Print a flow 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       tclflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
16       uflow     [-h]     [-M     METHOD]     [-C     CLAZZ]     [-v]      [-l
17       {java,perl,php,python,ruby,tcl}] pid
18

DESCRIPTION

20       uflow  traces  method  calls  and  prints them in a flow graph that can
21       facilitate debugging and diagnostics by following the program's  execu‐
22       tion (method flow).
23
24       This  tool relies on USDT probes embedded in many high-level languages,
25       such as Java, Perl, PHP, Python, Ruby, and Tcl. It requires  a  runtime
26       instrumented  with  these probes, which in some cases requires building
27       from source with a USDT-specific flag,  such  as  "--enable-dtrace"  or
28       "--with-dtrace".  For  Java processes, the startup flag "-XX:+Extended‐
29       DTraceProbes" is required. For PHP processes, the environment  variable
30       USE_ZEND_DTRACE must be set to 1.
31
32       Since this uses BPF, only the root user can use this tool.
33

REQUIREMENTS

35       CONFIG_BPF and bcc.
36

OPTIONS

38       -M METHOD
39              Print  only  method calls where the method name begins with this
40              string.
41
42       -C CLAZZ
43              Print only method calls where the class name  begins  with  this
44              string.  The  class  name interpretation strongly depends on the
45              language. For example, in  Java  use  "package/subpackage/Class‐
46              Name" to refer to classes.
47
48       -v     Print the resulting BPF program, for debugging purposes.
49
50       {java,perl,php,python,ruby,tcl}
51              The language to trace.
52
53       pid    The process id to trace.
54

EXAMPLES

56       Follow method flow in a Ruby process:
57              # uflow ruby 148
58
59       Follow  method  flow  in  a  Java  process  where  the  class  name  is
60       java.lang.Thread:
61              # uflow -C java/lang/Thread java 1802
62

FIELDS

64       CPU    The CPU number on which the method was invoked. This  is  useful
65              to easily see where the output skips to a different CPU.
66
67       PID    The process id.
68
69       TID    The thread id.
70
71       TIME   The duration of the method call.
72
73       METHOD The method name.
74

OVERHEAD

76       This  tool  has  extremely high overhead because it prints every method
77       call. For some scenarios, you might see lost samples in the  output  as
78       the  tool  is  unable  to keep up with the rate of data coming from the
79       kernel. Filtering by class or method prefix can help reduce the  amount
80       of data printed, but there is still a very high overhead in the collec‐
81       tion mechanism. Do not use for performance- sensitive  production  sce‐
82       narios, and always test first.
83

SOURCE

85       This is from bcc.
86
87              https://github.com/iovisor/bcc
88
89       Also  look  in  the  bcc distribution for a companion _example.txt file
90       containing example usage, output, and commentary for this tool.
91

OS

93       Linux
94

STABILITY

96       Unstable - in development.
97

AUTHOR

99       Sasha Goldshtein
100

SEE ALSO

102       trace(8), ustat(8)
103
104
105
106USER COMMANDS                     2018-10-09                          uflow(8)
Impressum