1# Copyright 2017 gRPC authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#     http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15# Stats data declaration
16# use tools / codegen / core / gen_stats_data.py to turn this into stats_data.h
17
18# overall
19- counter: client_calls_created
20  doc: Number of client side calls created by this process
21- counter: server_calls_created
22  doc: Number of server side calls created by this process
23- histogram: call_initial_size
24  max: 262144
25  buckets: 64
26  doc: Initial size of the grpc_call arena created at call start
27- counter: cqs_created
28  doc: Number of completion queues created
29- counter: client_channels_created
30  doc: Number of client channels created
31- counter: client_subchannels_created
32  doc: Number of client subchannels created
33- counter: server_channels_created
34  doc: Number of server channels created
35# polling
36- counter: syscall_poll
37  doc: Number of polling syscalls (epoll_wait, poll, etc) made by this process
38- counter: syscall_wait
39  doc: Number of sleeping syscalls made by this process
40- histogram: poll_events_returned
41  max: 1024
42  buckets: 128
43  doc: How many events are called for each syscall_poll
44- counter: pollset_kick
45  doc: How many polling wakeups were performed by the process
46       (only valid for epoll1 right now)
47- counter: pollset_kicked_without_poller
48  doc: How many times was a polling wakeup requested without an active poller
49       (only valid for epoll1 right now)
50- counter: pollset_kicked_again
51  doc: How many times was the same polling worker awoken repeatedly before
52       waking up
53       (only valid for epoll1 right now)
54- counter: pollset_kick_wakeup_fd
55  doc: How many times was an eventfd used as the wakeup vector for a polling
56       wakeup
57       (only valid for epoll1 right now)
58- counter: pollset_kick_wakeup_cv
59  doc: How many times was a condition variable used as the wakeup vector for a
60       polling wakeup
61       (only valid for epoll1 right now)
62- counter: pollset_kick_own_thread
63  doc: How many times could a polling wakeup be satisfied by keeping the waking
64       thread awake?
65       (only valid for epoll1 right now)
66# polling
67- counter: syscall_epoll_ctl
68  doc: Number of epoll_ctl calls made (only valid for epollex right now)
69- counter: pollset_fd_cache_hits
70  doc: Number of epoll_ctl calls skipped because the fd was cached as
71       already being added.  (only valid for epollex right now)
72# stats system
73- counter: histogram_slow_lookups
74  doc: Number of times histogram increments went through the slow
75       (binary search) path
76# tcp
77- counter: syscall_write
78  doc: Number of write syscalls (or equivalent - eg sendmsg) made by this process
79- counter: syscall_read
80  doc: Number of read syscalls (or equivalent - eg recvmsg) made by this process
81- histogram: tcp_write_size
82  max: 16777216 # 16 meg max write tracked
83  buckets: 64
84  doc: Number of bytes offered to each syscall_write
85- histogram: tcp_write_iov_size
86  max: 1024
87  buckets: 64
88  doc: Number of byte segments offered to each syscall_write
89- histogram: tcp_read_size
90  max: 16777216
91  buckets: 64
92  doc: Number of bytes received by each syscall_read
93- histogram: tcp_read_offer
94  max: 16777216
95  buckets: 64
96  doc: Number of bytes offered to each syscall_read
97- histogram: tcp_read_offer_iov_size
98  max: 1024
99  buckets: 64
100  doc: Number of byte segments offered to each syscall_read
101- counter: tcp_backup_pollers_created
102  doc: Number of times a backup poller has been created (this can be expensive)
103- counter: tcp_backup_poller_polls
104  doc: Number of polls performed on the backup poller
105# chttp2
106- counter: http2_op_batches
107  doc: Number of batches received by HTTP2 transport
108- counter: http2_op_cancel
109  doc: Number of cancelations received by HTTP2 transport
110- counter: http2_op_send_initial_metadata
111  doc: Number of batches containing send initial metadata
112- counter: http2_op_send_message
113  doc: Number of batches containing send message
114- counter: http2_op_send_trailing_metadata
115  doc: Number of batches containing send trailing metadata
116- counter: http2_op_recv_initial_metadata
117  doc: Number of batches containing receive initial metadata
118- counter: http2_op_recv_message
119  doc: Number of batches containing receive message
120- counter: http2_op_recv_trailing_metadata
121  doc: Number of batches containing receive trailing metadata
122- histogram: http2_send_message_size
123  max: 16777216
124  buckets: 64
125  doc: Size of messages received by HTTP2 transport
126- histogram: http2_send_initial_metadata_per_write
127  max: 1024
128  buckets: 64
129  doc: Number of streams initiated written per TCP write
130- histogram: http2_send_message_per_write
131  max: 1024
132  buckets: 64
133  doc: Number of streams whose payload was written per TCP write
134- histogram: http2_send_trailing_metadata_per_write
135  max: 1024
136  buckets: 64
137  doc: Number of streams terminated per TCP write
138- histogram: http2_send_flowctl_per_write
139  max: 1024
140  buckets: 64
141  doc: Number of flow control updates written per TCP write
142- counter: http2_settings_writes
143  doc: Number of settings frames sent
144- counter: http2_pings_sent
145  doc: Number of HTTP2 pings sent by process
146- counter: http2_writes_begun
147  doc: Number of HTTP2 writes initiated
148- counter: http2_writes_offloaded
149  doc: Number of HTTP2 writes offloaded to the executor from application threads
150- counter: http2_writes_continued
151  doc: Number of HTTP2 writes that finished seeing more data needed to be
152       written
153- counter: http2_partial_writes
154  doc: Number of HTTP2 writes that were made knowing there was still more data
155       to be written (we cap maximum write size to syscall_write)
156- counter: http2_initiate_write_due_to_initial_write
157  doc: Number of HTTP2 writes initiated due to 'initial_write'
158- counter: http2_initiate_write_due_to_start_new_stream
159  doc: Number of HTTP2 writes initiated due to 'start_new_stream'
160- counter: http2_initiate_write_due_to_send_message
161  doc: Number of HTTP2 writes initiated due to 'send_message'
162- counter: http2_initiate_write_due_to_send_initial_metadata
163  doc: Number of HTTP2 writes initiated due to 'send_initial_metadata'
164- counter: http2_initiate_write_due_to_send_trailing_metadata
165  doc: Number of HTTP2 writes initiated due to 'send_trailing_metadata'
166- counter: http2_initiate_write_due_to_retry_send_ping
167  doc: Number of HTTP2 writes initiated due to 'retry_send_ping'
168- counter: http2_initiate_write_due_to_continue_pings
169  doc: Number of HTTP2 writes initiated due to 'continue_pings'
170- counter: http2_initiate_write_due_to_goaway_sent
171  doc: Number of HTTP2 writes initiated due to 'goaway_sent'
172- counter: http2_initiate_write_due_to_rst_stream
173  doc: Number of HTTP2 writes initiated due to 'rst_stream'
174- counter: http2_initiate_write_due_to_close_from_api
175  doc: Number of HTTP2 writes initiated due to 'close_from_api'
176- counter: http2_initiate_write_due_to_stream_flow_control
177  doc: Number of HTTP2 writes initiated due to 'stream_flow_control'
178- counter: http2_initiate_write_due_to_transport_flow_control
179  doc: Number of HTTP2 writes initiated due to 'transport_flow_control'
180- counter: http2_initiate_write_due_to_send_settings
181  doc: Number of HTTP2 writes initiated due to 'send_settings'
182- counter: http2_initiate_write_due_to_bdp_estimator_ping
183  doc: Number of HTTP2 writes initiated due to 'bdp_estimator_ping'
184- counter: http2_initiate_write_due_to_flow_control_unstalled_by_setting
185  doc: Number of HTTP2 writes initiated due to 'flow_control_unstalled_by_setting'
186- counter: http2_initiate_write_due_to_flow_control_unstalled_by_update
187  doc: Number of HTTP2 writes initiated due to 'flow_control_unstalled_by_update'
188- counter: http2_initiate_write_due_to_application_ping
189  doc: Number of HTTP2 writes initiated due to 'application_ping'
190- counter: http2_initiate_write_due_to_keepalive_ping
191  doc: Number of HTTP2 writes initiated due to 'keepalive_ping'
192- counter: http2_initiate_write_due_to_transport_flow_control_unstalled
193  doc: Number of HTTP2 writes initiated due to 'transport_flow_control_unstalled'
194- counter: http2_initiate_write_due_to_ping_response
195  doc: Number of HTTP2 writes initiated due to 'ping_response'
196- counter: http2_initiate_write_due_to_force_rst_stream
197  doc: Number of HTTP2 writes initiated due to 'force_rst_stream'
198- counter: http2_spurious_writes_begun
199  doc: Number of HTTP2 writes initiated with nothing to write
200- counter: hpack_recv_indexed
201  doc: Number of HPACK indexed fields received
202- counter: hpack_recv_lithdr_incidx
203  doc: Number of HPACK literal headers received with incremental indexing
204- counter: hpack_recv_lithdr_incidx_v
205  doc: Number of HPACK literal headers received with incremental indexing and literal keys
206- counter: hpack_recv_lithdr_notidx
207  doc: Number of HPACK literal headers received with no indexing
208- counter: hpack_recv_lithdr_notidx_v
209  doc: Number of HPACK literal headers received with no indexing and literal keys
210- counter: hpack_recv_lithdr_nvridx
211  doc: Number of HPACK literal headers received with never-indexing
212- counter: hpack_recv_lithdr_nvridx_v
213  doc: Number of HPACK literal headers received with never-indexing and literal keys
214- counter: hpack_recv_uncompressed
215  doc: Number of uncompressed strings received in metadata
216- counter: hpack_recv_huffman
217  doc: Number of huffman encoded strings received in metadata
218- counter: hpack_recv_binary
219  doc: Number of binary strings received in metadata
220- counter: hpack_recv_binary_base64
221  doc: Number of binary strings received encoded in base64 in metadata
222- counter: hpack_send_indexed
223  doc: Number of HPACK indexed fields sent
224- counter: hpack_send_lithdr_incidx
225  doc: Number of HPACK literal headers sent with incremental indexing
226- counter: hpack_send_lithdr_incidx_v
227  doc: Number of HPACK literal headers sent with incremental indexing and literal keys
228- counter: hpack_send_lithdr_notidx
229  doc: Number of HPACK literal headers sent with no indexing
230- counter: hpack_send_lithdr_notidx_v
231  doc: Number of HPACK literal headers sent with no indexing and literal keys
232- counter: hpack_send_lithdr_nvridx
233  doc: Number of HPACK literal headers sent with never-indexing
234- counter: hpack_send_lithdr_nvridx_v
235  doc: Number of HPACK literal headers sent with never-indexing and literal keys
236- counter: hpack_send_uncompressed
237  doc: Number of uncompressed strings sent in metadata
238- counter: hpack_send_huffman
239  doc: Number of huffman encoded strings sent in metadata
240- counter: hpack_send_binary
241  doc: Number of binary strings received in metadata
242- counter: hpack_send_binary_base64
243  doc: Number of binary strings received encoded in base64 in metadata
244# combiner locks
245- counter: combiner_locks_initiated
246  doc: Number of combiner lock entries by process
247       (first items queued to a combiner)
248- counter: combiner_locks_scheduled_items
249  doc: Number of items scheduled against combiner locks
250- counter: combiner_locks_scheduled_final_items
251  doc: Number of final items scheduled against combiner locks
252- counter: combiner_locks_offloaded
253  doc: Number of combiner locks offloaded to different threads
254# call combiner locks
255- counter: call_combiner_locks_initiated
256  doc: Number of call combiner lock entries by process
257       (first items queued to a call combiner)
258- counter: call_combiner_locks_scheduled_items
259  doc: Number of items scheduled against call combiner locks
260- counter: call_combiner_set_notify_on_cancel
261  doc: Number of times a cancellation callback was set on a call combiner
262- counter: call_combiner_cancelled
263  doc: Number of times a call combiner was cancelled
264# executor
265- counter: executor_scheduled_short_items
266  doc: Number of finite runtime closures scheduled against the executor
267       (gRPC thread pool)
268- counter: executor_scheduled_long_items
269  doc: Number of potentially infinite runtime closures scheduled against the
270       executor (gRPC thread pool)
271- counter: executor_scheduled_to_self
272  doc: Number of closures scheduled by the executor to the executor
273- counter: executor_wakeup_initiated
274  doc: Number of thread wakeups initiated within the executor
275- counter: executor_queue_drained
276  doc: Number of times an executor queue was drained
277- counter: executor_push_retries
278  doc: Number of times we raced and were forced to retry pushing a closure to
279       the executor
280# server
281- counter: server_requested_calls
282  doc: How many calls were requested (not necessarily received) by the server
283- histogram: server_cqs_checked
284  buckets: 8
285  max: 64
286  doc: How many completion queues were checked looking for a CQ that had
287       requested the incoming call
288- counter: server_slowpath_requests_queued
289  doc: How many times was the server slow path taken (indicates too few
290       outstanding requests)
291# cq
292- counter: cq_ev_queue_trylock_failures
293  doc: Number of lock (trylock) acquisition failures on completion queue event
294       queue. High value here indicates high contention on completion queues
295- counter: cq_ev_queue_trylock_successes
296  doc: Number of lock (trylock) acquisition successes on completion queue event
297       queue.
298- counter: cq_ev_queue_transient_pop_failures
299  doc: Number of times NULL was popped out of completion queue's event queue
300       even though the event queue was not empty
301