VARNISH-COUNTERS(7)

NAME
varnish-counters - Varnish counter field definitions

LCK – LOCK COUNTERS
        Counters which track the activity in the different classes of mutex-locks.

        The counts may be slightly wrong if there are more than one lock instantiated in each class (ie: .creat > 1)

creat – counter - debug
        Created locks

destroy – counter - debug
        Destroyed locks

locks – counter - debug
        Lock Operations

dbg_busy – counter - debug
        Contended lock operations

        If the lck debug bit is set: Lock operations which returned EBUSY on the first locking attempt.

        If the lck debug bit is unset, this counter will never be incremented even if lock operations are contended.

dbg_try_fail – counter - debug
        Contended trylock operations

        If the lck debug bit is set: Trylock operations which returned EBUSY.

        If the lck debug bit is unset, this counter will never be incremented even if lock operations are contended.

MAIN – MAIN COUNTERS

summs – counter - debug
        stat summ operations

        Number of times per-thread statistics were summed into the global counters.

uptime – counter - info
        Child process uptime

        How long the child process has been running.

sess_conn – counter - info
        Sessions accepted

        Count of sessions successfully accepted

sess_fail – counter - info
        Session accept failures

        Count of failures to accept TCP connection.

        This counter is the sum of the sess_fail_* counters, which give more detailed information.

sess_fail_econnaborted – counter - info
        Session accept failures: connection aborted

        Detailed reason for sess_fail: Connection aborted by the client, usually harmless.

sess_fail_eintr – counter - info
        Session accept failures: interrupted system call

        Detailed reason for sess_fail: The accept() call was interrupted, usually harmless

sess_fail_emfile – counter - info
        Session accept failures: too many open files

        Detailed reason for sess_fail: No file descriptor was available. Consider raising RLIMIT_NOFILE (see ulimit -n).

sess_fail_ebadf – counter - info
        Session accept failures: bad file descriptor

        Detailed reason for sess_fail: The listen socket file descriptor was invalid. Should never happen.

sess_fail_enomem – counter - info
        Session accept failures: not enough memory

        Detailed reason for sess_fail: Most likely insufficient socket buffer memory. Should never happen

sess_fail_other – counter - info
        Session accept failures: other

        Detailed reason for sess_fail: neither of the above, see SessError log (varnishlog -g raw -i SessError).

client_req_400 – counter - info
        Client requests received, subject to 400 errors

        400 means we couldn't make sense of the request, it was malformed in some drastic way.

client_req_417 – counter - info
        Client requests received, subject to 417 errors

        417 means that something went wrong with an Expect: header.

client_req – counter - info
        Good client requests received

        The count of parseable client requests seen.

esi_req – counter - info
        ESI subrequests

        Number of ESI subrequests made.

cache_hit – counter - info
        Cache hits

        Count of cache hits. A cache hit indicates that an object has been delivered to a client without fetching it from a backend server.

cache_hit_grace – counter - info
        Cache grace hits

        Count of cache hits with grace. A cache hit with grace is a cache hit where the object is expired. Note that such hits are also included in the cache_hit counter.

cache_hitpass – counter - info
        Cache hits for pass.

        Count of hits for pass. A cache hit for pass indicates that Varnish is going to pass the request to the backend and this decision has been cached in it self. This counts how many times the cached decision is being used.

cache_hitmiss – counter - info
        Cache hits for miss.

        Count of hits for miss. A cache hit for miss indicates that Varnish is going to proceed as for a cache miss without request coalescing, and this decision has been cached. This counts how many times the cached decision is being used.

cache_miss – counter - info
        Cache misses

        Count of misses. A cache miss indicates the object was fetched from the backend before delivering it to the client.

beresp_uncacheable – counter - info
                Uncacheable backend responses

        Count of backend responses considered uncacheable.

beresp_shortlived – counter - info
                Shortlived objects

        Count of objects created with ttl+grace+keep shorter than the 'shortlived' runtime parameter.

backend_conn – counter - info
        Backend conn. success

        How many backend connections have successfully been established.

backend_unhealthy – counter - info
        Backend conn. not attempted

backend_busy – counter - info
        Backend conn. too many

backend_fail – counter - info
        Backend conn. failures

backend_reuse – counter - info
        Backend conn. reuses

        Count of backend connection reuses. This counter is increased whenever we reuse a recycled connection.

backend_recycle – counter - info
        Backend conn. recycles

        Count of backend connection recycles. This counter is increased whenever we have a keep-alive connection that is put back into the pool of connections. It has not yet been used, but it might be, unless the backend closes it.

backend_retry – counter - info
        Backend conn. retry

backend_wait – counter - info
        Backend conn. waited in queue for a connection

        Count of backend requests that waited in a backend_wait queue for a connection to become available. The size of a backend wait queue is defined by the backend wait_limit property. The wait queue is only used when max_connections to the backend are in use.

backend_wait_fail – counter - info
        Backend conn. waited in queue and did not get a connection

        Count of backend requests that waited in a backend_wait queue for a connection to become available and did not get one (timed out). The maximum time to wait in the queue is defined by the backend wait_timeout property.

fetch_head – counter - info
        Fetch no body (HEAD)

        beresp with no body because the request is HEAD.

fetch_length – counter - info
        Fetch with Length

        beresp.body with Content-Length.

fetch_chunked – counter - info
        Fetch chunked

        beresp.body with Chunked.

fetch_eof – counter - info
        Fetch EOF

        beresp.body with EOF.

fetch_bad – counter - info
        Fetch bad T-E

        beresp.body length/fetch could not be determined.

fetch_none – counter - info
        Fetch no body

        beresp.body empty

fetch_1xx – counter - info
        Fetch no body (1xx)

        beresp with no body because of 1XX response.

fetch_204 – counter - info
        Fetch no body (204)

        beresp with no body because of 204 response.

fetch_304 – counter - info
        Fetch no body (304)

        beresp with no body because of 304 response.

fetch_failed – counter - info
        Fetch failed (all causes)

        beresp fetch failed.

bgfetch_no_thread – counter - info
        Background fetch failed (no thread)

        A bgfetch triggered by a grace hit failed, no thread available.

pools – gauge - info
        Number of thread pools

        Number of thread pools. See also parameter thread_pools. NB: Presently pools cannot be removed once created.

threads – gauge - info
        Total number of threads

        Number of threads in all pools. See also parameters thread_pools, thread_pool_min and thread_pool_max.

threads_limited – counter - info
        Threads hit max

        Number of times more threads were needed, but limit was reached in a thread pool. See also parameter thread_pool_max.

threads_created – counter - info
        Threads created

        Total number of threads created in all pools.

threads_destroyed – counter - info
        Threads destroyed

        Total number of threads destroyed in all pools.

threads_failed – counter - info
        Thread creation failed

        Number of times creating a thread failed. See VSL::Debug for diagnostics. See also parameter thread_fail_delay.

thread_queue_len – gauge - info
        Length of session queue

        Length of session queue waiting for threads. NB: Only updates once per second. See also parameter thread_queue_limit.

busy_sleep – counter - info
        Number of requests sent to sleep on busy objhdr

        Number of requests sent to sleep without a worker thread because they found a busy object.

busy_wakeup – counter - info
        Number of requests woken after sleep on busy objhdr

        Number of requests taken off the busy object sleep list and rescheduled.

busy_killed – counter - info
        Number of requests killed after sleep on busy objhdr

        Number of requests killed from the busy object sleep list due to lack of resources.

sess_queued – counter - info
        Sessions queued for thread

        Number of times session was queued waiting for a thread. See also parameter thread_queue_limit.

sess_dropped – counter - info
        Sessions dropped for thread

        Number of times an HTTP/1 session was dropped because the queue was too long already. See also parameter thread_queue_limit.

req_dropped – counter - info
        Requests dropped

        Number of times an HTTP/2 stream was refused because the queue was too long already. See also parameter thread_queue_limit.

req_reset – counter - info
        Requests reset

        Number of times a client left before the VCL processing of its requests completed. For HTTP/2 sessions, either the stream was reset by an RST_STREAM frame from the client, or a stream or connection error occurred.

n_object – gauge - info
        object structs made

        Approximate number of HTTP objects (headers + body, if present) in the cache.

n_vampireobject – gauge - diag
        unresurrected objects

        Number of unresurrected objects

n_objectcore – gauge - info
        objectcore structs made

        Approximate number of object metadata elements in the cache. Each object needs an objectcore, extra objectcores are for hit-for-miss, hit-for-pass and busy objects.

n_objecthead – gauge - info
        objecthead structs made

        Approximate number of different hash entries in the cache.

n_backend – gauge - info
        Number of backends

        Number of backends known to us.

n_expired – counter - info
        Number of expired objects

        Number of objects that expired from cache because of old age.

n_superseded – counter - diag
        Number of superseded objects

        Number of times an object was superseded by a new one.

n_lru_nuked – counter - info
        Number of LRU nuked objects

        How many objects have been forcefully evicted from storage to make room for a new object.

n_lru_moved – counter - diag
        Number of LRU moved objects

        Number of move operations done on the LRU list.

n_lru_limited – counter - info
        Reached nuke_limit

        Number of times more storage space were needed, but limit was reached in a nuke_limit. See also parameter nuke_limit.

losthdr – counter - info
        HTTP header overflows

s_sess – counter - info
        Total sessions seen

n_pipe – gauge - info
        Number of ongoing pipe sessions

pipe_limited – counter - info
        Pipes hit pipe_sess_max

        Number of times more pipes were needed, but the limit was reached. See also parameter pipe_sess_max.

s_pipe – counter - info
        Total pipe sessions seen

s_pass – counter - info
        Total pass-ed requests seen

s_fetch – counter - info
        Total backend fetches initiated

        Total backend fetches initiated, including background fetches.

s_bgfetch – counter - info
        Total backend background fetches initiated

s_synth – counter - info
        Total synthetic responses made

s_req_hdrbytes – counter - info
        Request header bytes

        Total request header bytes received

s_req_bodybytes – counter - info
        Request body bytes

        Total request body bytes received

s_resp_hdrbytes – counter - info
        Response header bytes

        Total response header bytes transmitted

s_resp_bodybytes – counter - info
        Response body bytes

        Total response body bytes transmitted

s_pipe_hdrbytes – counter - info
        Pipe request header bytes

        Total request bytes received for piped sessions

s_pipe_in – counter - info
        Piped bytes from client

        Total number of bytes forwarded from clients in pipe sessions

s_pipe_out – counter - info
        Piped bytes to client

        Total number of bytes forwarded to clients in pipe sessions

sess_closed – counter - info
        Session Closed

sess_closed_err – counter - info
        Session Closed with error

        Total number of sessions closed with errors. See sc_* diag counters for detailed breakdown

sess_readahead – counter - info
        Session Read Ahead

sess_herd – counter - diag
        Session herd

        Number of times the timeout_linger triggered

sc_rem_close – counter - diag
        Session OK REM_CLOSE

        Number of session closes with REM_CLOSE (Client Closed)

sc_req_close – counter - diag
        Session OK REQ_CLOSE

        Number of session closes with REQ_CLOSE (Client requested close)

sc_req_http10 – counter - diag
        Session Err REQ_HTTP10

        Number of session closes with Error REQ_HTTP10 (Proto < HTTP/1.1)

sc_rx_bad – counter - diag
        Session Err RX_BAD

        Number of session closes with Error RX_BAD (Received bad req/resp)

sc_rx_body – counter - diag
        Session Err RX_BODY

        Number of session closes with Error RX_BODY (Failure receiving req.body)

sc_rx_junk – counter - diag
        Session Err RX_JUNK

        Number of session closes with Error RX_JUNK (Received junk data)

sc_rx_overflow – counter - diag
        Session Err RX_OVERFLOW

        Number of session closes with Error RX_OVERFLOW (Received buffer overflow)

sc_rx_timeout – counter - diag
        Session Err RX_TIMEOUT

        Number of session closes with Error RX_TIMEOUT (Receive timeout)

sc_rx_close_idle – counter - diag
        Session Err RX_CLOSE_IDLE

        Number of session closes with Error RX_CLOSE_IDLE: timeout_idle has been exceeded while waiting for a client request.

sc_tx_pipe – counter - diag
        Session OK TX_PIPE

        Number of session closes with TX_PIPE (Piped transaction)

sc_tx_error – counter - diag
        Session Err TX_ERROR

        Number of session closes with Error TX_ERROR (Error transaction)

sc_tx_eof – counter - diag
        Session OK TX_EOF

        Number of session closes with TX_EOF (EOF transmission)

sc_resp_close – counter - diag
        Session OK RESP_CLOSE

        Number of session closes with RESP_CLOSE (Backend/VCL requested close)

sc_overload – counter - diag
        Session Err OVERLOAD

        Number of session closes with Error OVERLOAD (Out of some resource)

sc_pipe_overflow – counter - diag
        Session Err PIPE_OVERFLOW

        Number of session closes with Error PIPE_OVERFLOW (Session pipe overflow)

sc_range_short – counter - diag
        Session Err RANGE_SHORT

        Number of session closes with Error RANGE_SHORT (Insufficient data for range)

sc_req_http20 – counter - diag
        Session Err REQ_HTTP20

        Number of session closes with Error REQ_HTTP20 (HTTP2 not accepted)

sc_vcl_failure – counter - diag
        Session Err VCL_FAILURE

        Number of session closes with Error VCL_FAILURE (VCL failure)

sc_rapid_reset – counter - diag
                Session Err RAPID_RESET

        Number of times we failed an http/2 session because it hit its configured limits for the number of permitted rapid stream resets.

sc_bankrupt – counter - diag
        Session Err BANKRUPT

        Number of times we failed an http/2 session because all the streams were waiting for their windows to be credited when h2_window_timeout triggered.

client_resp_500 – counter - diag
        Delivery failed due to insufficient workspace.

        Number of times we failed a response due to running out of workspace memory during delivery.

ws_backend_overflow – counter - diag
        workspace_backend overflows

        Number of times we ran out of space in workspace_backend.

ws_client_overflow – counter - diag
        workspace_client overflows

        Number of times we ran out of space in workspace_client.

ws_thread_overflow – counter - diag
        workspace_thread overflows

        Number of times we ran out of space in workspace_thread.

ws_session_overflow – counter - diag
        workspace_session overflows

        Number of times we ran out of space in workspace_session.

shm_records – counter - diag
        SHM records

        Number of log records written to the shared memory log.

shm_writes – counter - diag
        SHM writes

        Number of individual writes to the shared memory log. A single write may batch multiple records for buffered tasks.

shm_flushes – counter - diag
        SHM flushes due to overflow

        Number of writes performed before the end of a buffered task because adding a record to a batch would exceed vsl_buffer.

shm_cont – counter - diag
        SHM lock contention

        Number of times a write had to wait for the lock.

shm_cycles – counter - diag
        SHM cycles through VSL space

        Number of times a write of log records would reach past the end of the shared memory log, cycling back to the beginning.

shm_bytes – counter - diag
        SHM bytes

        Number of bytes written to the shared memory log.

backend_req – counter - info
        Backend requests made

n_vcl – gauge - info
        Number of loaded VCLs in total

n_vcl_avail – gauge - diag
        Number of VCLs available

n_vcl_discard – gauge - diag
        Number of discarded VCLs

vcl_fail – counter - info
        VCL failures

        Count of failures which prevented VCL from completing.

bans – gauge - info
        Count of bans

        Number of all bans in system, including bans superseded by newer bans and bans already checked by the ban-lurker.

bans_completed – gauge - diag
        Number of bans marked 'completed'

        Number of bans which are no longer active, either because they got checked by the ban-lurker or superseded by newer identical bans.

bans_obj – gauge - diag
        Number of bans using obj.*

        Number of bans which use obj.* variables. These bans can possibly be washed by the ban-lurker.

bans_req – gauge - diag
        Number of bans using req.*

        Number of bans which use req.* variables. These bans cannot be washed by the ban-lurker.

bans_added – counter - diag
        Bans added

        Counter of bans added to ban list.

bans_deleted – counter - diag
        Bans deleted

        Counter of bans deleted from ban list.

bans_tested – counter - diag
        Bans tested against objects (lookup)

        Count of how many bans and objects have been tested against each other during hash lookup.

bans_obj_killed – counter - diag
        Objects killed by bans (lookup)

        Number of objects killed by bans during object lookup.

bans_lurker_tested – counter - diag
        Bans tested against objects (lurker)

        Count of how many bans and objects have been tested against each other by the ban-lurker.

bans_tests_tested – counter - diag
        Ban tests tested against objects (lookup)

        Count of how many tests and objects have been tested against each other during lookup. 'ban req.url == foo && req.http.host == bar' counts as one in 'bans_tested' and as two in 'bans_tests_tested'

bans_lurker_tests_tested – counter - diag
        Ban tests tested against objects (lurker)

        Count of how many tests and objects have been tested against each other by the ban-lurker. 'ban req.url == foo && req.http.host == bar' counts as one in 'bans_tested' and as two in 'bans_tests_tested'

bans_lurker_obj_killed – counter - diag
        Objects killed by bans (lurker)

        Number of objects killed by the ban-lurker.

bans_lurker_obj_killed_cutoff – counter - diag
        Objects killed by bans for cutoff (lurker)

        Number of objects killed by the ban-lurker to keep the number of bans below ban_cutoff.

bans_dups – counter - diag
        Bans superseded by other bans

        Count of bans replaced by later identical bans.

bans_lurker_contention – counter - diag
        Lurker gave way for lookup

        Number of times the ban-lurker had to wait for lookups.

bans_persisted_bytes – gauge - diag
        Bytes used by the persisted ban lists

        Number of bytes used by the persisted ban lists.

bans_persisted_fragmentation – gauge - diag
        Extra bytes in persisted ban lists due to fragmentation

        Number of extra bytes accumulated through dropped and completed bans in the persistent ban lists.

n_purges – counter - info
        Number of purge operations executed

n_obj_purged – counter - info
        Number of purged objects

exp_mailed – counter - diag
        Number of objects mailed to expiry thread

        Number of objects mailed to expiry thread for handling.

exp_received – counter - diag
        Number of objects received by expiry thread

        Number of objects received by expiry thread for handling.

hcb_nolock – counter - debug
        HCB Lookups without lock

hcb_lock – counter - debug
        HCB Lookups with lock

hcb_insert – counter - debug
        HCB Inserts

esi_errors – counter - diag
        ESI parse errors (unlock)

esi_warnings – counter - diag
        ESI parse warnings (unlock)

vmods – gauge - info
        Loaded VMODs

n_gzip – counter - info
        Gzip operations

n_gunzip – counter - info
        Gunzip operations

n_test_gunzip – counter - info
        Test gunzip operations

        Those operations occur when Varnish receives a compressed object from a backend. They are done to verify the gzip stream while it's inserted in storage.

http1_iovs_flush – counter - info
        Premature iovec flushes

        Number of additional writes performed on HTTP1 connections because the number of IO vectors was too small to submit all possible IO in one go. This number is configured through the http1_iovs parameter for client connections and implicitly defined by the amount of free workspace for backend connections.

MEMPOOL – MEMORY POOL COUNTERS

live – gauge - debug
        In use

pool – gauge - debug
        In Pool

sz_wanted – gauge - debug
        Size requested

sz_actual – gauge - debug
        Size allocated

allocs – counter - debug
        Allocations

frees – counter - debug
        Frees

recycle – counter - debug
        Recycled from pool

timeout – counter - debug
        Timed out from pool

toosmall – counter - debug
        Too small to recycle

surplus – counter - debug
        Too many for pool

randry – counter - debug
        Pool ran dry

MGT – MANAGEMENT PROCESS COUNTERS

uptime – counter - info
        Management process uptime

        Uptime in seconds of the management process

child_start – counter - diag
        Child process started

        Number of times the child process has been started

child_exit – counter - diag
        Child process normal exit

        Number of times the child process has been cleanly stopped

child_stop – counter - diag
        Child process unexpected exit

        Number of times the child process has exited with an unexpected return code

child_died – counter - diag
        Child process died (signal)

        Number of times the child process has died due to signals

child_dump – counter - diag
        Child process core dumped

        Number of times the child process has produced core dumps

child_panic – counter - diag
        Child process panic

        Number of times the management process has caught a child panic

SMA – MALLOC STEVEDORE COUNTERS

c_req – counter - info
        Allocator requests

        Number of times the storage has been asked to provide a storage segment.

c_fail – counter - info
        Allocator failures

        Number of times the storage has failed to provide a storage segment.

c_bytes – counter - info
        Bytes allocated

        Number of total bytes allocated by this storage.

c_freed – counter - info
        Bytes freed

        Number of total bytes returned to this storage.

g_alloc – gauge - info
        Allocations outstanding

        Number of storage allocations outstanding.

g_bytes – gauge - info
        Bytes outstanding

        Number of bytes allocated from the storage.

g_space – gauge - info
        Bytes available

        Number of bytes left in the storage.

SMF – FILE STEVEDORE COUNTERS

c_req – counter - info
        Allocator requests

        Number of times the storage has been asked to provide a storage segment.

c_fail – counter - info
        Allocator failures

        Number of times the storage has failed to provide a storage segment.

c_bytes – counter - info
        Bytes allocated

        Number of total bytes allocated by this storage.

c_freed – counter - info
        Bytes freed

        Number of total bytes returned to this storage.

g_alloc – gauge - info
        Allocations outstanding

        Number of storage allocations outstanding.

g_bytes – gauge - info
        Bytes outstanding

        Number of bytes allocated from the storage.

g_space – gauge - info
        Bytes available

        Number of bytes left in the storage.

g_smf – gauge - info
        N struct smf

g_smf_frag – gauge - info
        N small free smf

g_smf_large – gauge - info
        N large free smf

SMU – UMEM STEVEDORE COUNTERS

c_req – counter - info
        Allocator requests

        Number of times the storage has been asked to provide a storage segment.

c_fail – counter - info
        Allocator failures

        Number of times the storage has failed to provide a storage segment.

c_bytes – counter - info
        Bytes allocated

        Number of total bytes allocated by this storage.

c_freed – counter - info
        Bytes freed

        Number of total bytes returned to this storage.

g_alloc – gauge - info
        Allocations outstanding

        Number of storage allocations outstanding.

g_bytes – gauge - info
        Bytes outstanding

        Number of bytes allocated from the storage.

g_space – gauge - info
        Bytes available

        Number of bytes left in the storage.

VBE – BACKEND COUNTERS

happy – bitmap - info
        Happy health probes

        Represents the last probe results as a bitmap. Happy probes are bits set to 1, and the unhappy ones are set to 0. The highest bits represent the oldest probes.

bereq_hdrbytes – counter - info
        Request header bytes

        Total backend request header bytes sent

bereq_bodybytes – counter - info
        Request body bytes

        Total backend request body bytes sent

beresp_hdrbytes – counter - info
        Response header bytes

        Total backend response header bytes received

beresp_bodybytes – counter - info
        Response body bytes

        Total backend response body bytes received

pipe_hdrbytes – counter - info
        Pipe request header bytes

        Total request bytes sent for piped sessions

pipe_out – counter - info
        Piped bytes to backend

        Total number of bytes forwarded to backend in pipe sessions

pipe_in – counter - info
        Piped bytes from backend

        Total number of bytes forwarded from backend in pipe sessions

conn – gauge - info
        Concurrent connections used

        The number of currently used connections to the backend. This number is always less or equal to the number of connections to the backend (as, for example shown as ESTABLISHED for TCP connections in netstat) due to connection pooling.

req – counter - info
        Backend requests sent

unhealthy – counter - info
        Fetches not attempted due to backend being unhealthy

busy – counter - info
        Fetches not attempted due to backend being busy

        Number of times the max_connections limit was reached

fail – counter - info
        Connections failed

        Counter of failed opens. Detailed reasons are given in the fail_* counters (DIAG level) and in the log under the FetchError tag.

        This counter is the sum of all detailed fail_* counters.

        All fail_* counters may be slightly inaccurate for efficiency.

fail_eacces – counter - diag
        Connections failed with EACCES or EPERM

fail_eaddrnotavail – counter - diag
        Connections failed with EADDRNOTAVAIL

fail_econnrefused – counter - diag
        Connections failed with ECONNREFUSED

fail_enetunreach – counter - diag
        Connections failed with ENETUNREACH

fail_etimedout – counter - diag
        Connections failed ETIMEDOUT

fail_other – counter - diag
        Connections failed for other reason

helddown – counter - diag
        Connection opens not attempted

        Connections not attempted during the backend_local_error_holddown or backend_remote_error_holddown interval after a fundamental connection issue.

WAITER – WAITER COUNTERS

conns – gauge - debug
        Number of idle connections

        Number of idle connections being waited over.

remclose – counter - debug
        Number of idle connections closed by peer

        Number of idle connections that experienced closure by peer while being waited for.

timeout – counter - debug
        Number of idle connections timeout

        Number of idle connections that experienced a timeout event while being waited for.

action – counter - debug
        Number of idle connections read events

        Number of idle connections that experienced a read event while being waited for.

AUTHORS

This man page was written by Lasse Karstensen, using content from vsc2rst written by Tollef Fog Heen.