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

NAME

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

SYNOPSIS

10       javaflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
11       pythonflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
12       rubyflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
13       phpflow [-h] [-M METHOD] [-C CLAZZ] [-v] pid
14       uflow [-h] [-M METHOD] [-C CLAZZ] [-v] [-l {java,python,ruby,php}] pid
15

DESCRIPTION

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

REQUIREMENTS

32       CONFIG_BPF and bcc.
33

OPTIONS

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

EXAMPLES

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

FIELDS

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

OVERHEAD

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

SOURCE

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

OS

90       Linux
91

STABILITY

93       Unstable - in development.
94

AUTHOR

96       Sasha Goldshtein
97

SEE ALSO

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