LCOV - code coverage report
Current view: top level - disco/topo - fd_wksp_mon.h (source / functions) Hit Total Coverage
Test: cov.lcov Lines: 0 2 0.0 %
Date: 2026-05-13 07:19:34 Functions: 0 0 -

          Line data    Source code
       1             : #ifndef HEADER_fd_src_disco_wksp_fd_wksp_mon_h
       2             : #define HEADER_fd_src_disco_wksp_fd_wksp_mon_h
       3             : 
       4             : /* fd_wksp_mon incrementally scans fd_wksp partitions lockfree to
       5             :    track space utilization. */
       6             : 
       7             : #include "../../util/wksp/fd_wksp.h"
       8             : 
       9           0 : #define FD_WKSP_MON_BURST_MAX    (4096UL)
      10           0 : #define FD_WKSP_MON_DEFAULT_RATE (10UL<<20) /* 10 MB/s */
      11             : 
      12             : struct fd_wksp_mon {
      13             :   fd_wksp_t * wksp;
      14             :   ulong       part_max;
      15             :   ulong       ticks_per_part;
      16             : 
      17             :   ulong       scan_idx;
      18             :   long        last_tick;
      19             :   long        tick_rem;
      20             : 
      21             :   ulong       acc_free_cnt;
      22             :   ulong       acc_free_sz;
      23             :   ulong       acc_free_max_sz;
      24             :   ulong       acc_used_cnt;
      25             :   ulong       acc_used_sz;
      26             :   ulong       acc_used_hist[64]; /* log2-bucketed used partition sizes */
      27             : 
      28             :   ulong       free_cnt;
      29             :   ulong       free_sz;
      30             :   ulong       free_max_sz;
      31             :   ulong       part_median_sz;
      32             :   ulong       part_mean_sz;
      33             :   ulong       sweep_cnt;
      34             : };
      35             : 
      36             : typedef struct fd_wksp_mon fd_wksp_mon_t;
      37             : 
      38             : FD_PROTOTYPES_BEGIN
      39             : 
      40             : /* fd_wksp_mon_init starts monitoring wksp.  bytes_per_sec controls the
      41             :    pinfo scan rate (use FD_WKSP_MON_DEFAULT_RATE for 10 MB/s).
      42             :    Internally converts to ticks_per_part via fd_tempo_tick_per_ns.
      43             :    now is fd_tickcount(). */
      44             : 
      45             : fd_wksp_mon_t *
      46             : fd_wksp_mon_init( fd_wksp_mon_t * mon,
      47             :                   fd_wksp_t *     wksp,
      48             :                   ulong           bytes_per_sec,
      49             :                   long            now );
      50             : 
      51             : void *
      52             : fd_wksp_mon_fini( fd_wksp_mon_t * mon );
      53             : 
      54             : /* fd_wksp_mon_tick does incremental scanning.  Call with now from
      55             :    fd_tickcount().  Scans a rate-limited burst of partitions per call.
      56             :    Publishes metrics when a full sweep completes. */
      57             : 
      58             : fd_wksp_mon_t *
      59             : fd_wksp_mon_tick( fd_wksp_mon_t * mon,
      60             :                   long            now );
      61             : 
      62             : FD_PROTOTYPES_END
      63             : 
      64             : #endif /* HEADER_fd_src_disco_wksp_fd_wksp_mon_h */

Generated by: LCOV version 1.14