summaryrefslogtreecommitdiffstats
path: root/man/pw-top.1.rst.in
blob: ab8569b1fff750bc9b50ccf5b9a5d5194e081f1b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
pw-top
######

---------------------------
The PipeWire process viewer
---------------------------

:Manual section: 1
:Manual group: General Commands Manual

SYNOPSIS
========

| **pw-top** [*options*]

DESCRIPTION
===========

The *pw-top* program provides a dynamic real-time view of the pipewire
node and device statistics.

A hierarchical view is shown of Driver nodes and follower nodes. The Driver
nodes are actively using a timer to schedule dataflow in the followers. The
followers of a driver node as shown below their driver with a + sign in
a tree-like representation.

The columns presented are as follows:

S
  Node status.
    E = ERROR
    C = CREATING
    S = SUSPENDED
    I = IDLE
    R = RUNNING

ID
  The ID of the pipewire node/device, as found in *pw-dump* and *pw-cli*

QUANT
  The current quantum (for drivers) and the suggested quantum for follower
  nodes.

  The quantum by itself needs to be divided by the RATE column to calculate
  the duration of a scheduling period in fractions of a second.

  For a QUANT of 1024 and a RATE of 48000, the duration of one period in the
  graph is 1024/48000 or 21.3 milliseconds.

  Follower nodes can have a 0 QUANT field, which means that the node does not
  have a suggestion for the quantum and thus uses what the driver selected.

  The driver will use the lowest quantum of any of the followers. If none of
  the followers select a quantum, the default quantum in the pipewire configuration
  file will be used.

  The QUANT on the drivers usually translates directly into the number of audio
  samples processed per processing cycle of the graph.

  See also https://gitlab.freedesktop.org/pipewire/pipewire/-/wikis/FAQ#pipewire-buffering-explained

RATE
  The current rate (for drivers) and the suggested rate for follower
  nodes.

  This is the rate at which the *graph* processes data and needs to be combined with
  the QUANT value to derive the duration of a processing cycle in the graph.

  Some nodes can have a 0 RATE, which means that they don't have any rate
  suggestion for the graph. Nodes that suggest a rate can make the graph switch
  rates if the graph is otherwise idle and the new rate is allowed as
  a possible graph rate (see the pipewire configuration file).

  The RATE on (audio) driver nodes usually also translates directly to the
  samplerate used by the device. Although some devices might not be able to
  operate at the given samplerate, in which case resampling will need to be
  done. The negotiated samplerate with the device and stream can be found in
  the FORMAT column.

WAIT
  The waiting time of a node is the elapsed time between when the node
  is ready to start processing and when it actually started processing.

  For Driver nodes, this is the time between when the node wakes up to
  start processing the graph and when the driver (and thus also the graph)
  completes a cycle. The WAIT time for driver is thus the elapsed time
  processing the graph.

  For follower nodes, it is the time spent between being woken up (when all
  dependencies of the node are satisfied) and when processing starts. The
  WAIT time for follower nodes is thus mostly caused by context switching.

  A value of --- means that the node was not signaled.  A value of +++
  means that the node was signaled but not awake.

BUSY
  The processing time is started when the node starts processing until it
  completes and wakes up the next nodes in the graph.

  A value of --- means that the node was not started.  A value of +++
  means that the node was started but did not complete.

W/Q
  Ratio of WAIT / QUANT.

  The W/Q time of the driver node is a good measure of the graph
  load. The running averages of the driver W/Q ratios are used as the DSP
  load in other (JACK) tools.

  Values of --- and +++ are copied from the WAIT column.

B/Q
  Ratio of BUSY / QUANT

  This is a good measure of the load of a particular driver or follower
  node.

  Values of --- and +++ are copied from the BUSY column.

ERR
  Total of Xruns and Errors

  Xruns for drivers are when the graph did not complete a cycle. This can
  be because a node in the graph also has an Xrun. It can also be caused when
  scheduling delays cause a deadline to be missed, causing a hardware
  Xrun.

  Xruns for followers are incremented when the node started processing but
  did not complete before the end of the graph cycle deadline.

FORMAT
  The format used by the driver node or the stream. This is the hardware format
  negotiated with the device or stream.

  If the stream of driver has a different rate than the graph, resampling will
  be done.

  For raw audio formats, the layout is <sampleformat> <channels> <samplerate>.

  For IEC958 passthrough audio formats, the layout is IEC958 <codec> <samplerate>.

  For DSD formats, the layout is <dsd-rate> <channels>.

  For Video formats, the layout is <pixelformat> <width>x<height>.

NAME
  Name assigned to the device/node, as found in *pw-dump* node.name

  Names are prefixed by *+* when they are linked to a driver (entry above with no +)


OPTIONS
=======

-h | --help
  Show help.

-r | --remote=NAME
  The name the *remote* instance to monitor. If left unspecified,
  a connection is made to the default PipeWire instance.

--version
  Show version information.


AUTHORS
=======

The PipeWire Developers <@PACKAGE_BUGREPORT@>; PipeWire is available from @PACKAGE_URL@

SEE ALSO
========

``pipewire(1)``,
``pw-dump(1)``,
``pw-cli(1)``,
``pw-profiler(1)``,