Skip to content

Commit 88dbee9

Browse files
committed
progcache: shared memory concurrency
1 parent d9e4488 commit 88dbee9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+2010
-1313
lines changed

book/api/metrics-generated.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1057,3 +1057,19 @@
10571057
| <span class="metrics-name">backt_&#8203;start_&#8203;slot</span> | gauge | The slot at which the backtest started |
10581058

10591059
</div>
1060+
1061+
## Exec Tile
1062+
1063+
<div class="metrics">
1064+
1065+
| Metric | Type | Description |
1066+
|--------|------|-------------|
1067+
| <span class="metrics-name">exec_&#8203;progcache_&#8203;misses</span> | counter | Number of program cache misses |
1068+
| <span class="metrics-name">exec_&#8203;progcache_&#8203;hits</span> | counter | Number of program cache hits |
1069+
| <span class="metrics-name">exec_&#8203;progcache_&#8203;fills</span> | counter | Number of program cache insertions |
1070+
| <span class="metrics-name">exec_&#8203;progcache_&#8203;fill_&#8203;tot_&#8203;sz</span> | counter | Total number of bytes inserted into program cache |
1071+
| <span class="metrics-name">exec_&#8203;progcache_&#8203;fill_&#8203;fails</span> | counter | Number of program cache load fails (tombstones inserted) |
1072+
| <span class="metrics-name">exec_&#8203;progcache_&#8203;dup_&#8203;inserts</span> | counter | Number of time two tiles raced to insert the same cache entry |
1073+
| <span class="metrics-name">exec_&#8203;progcache_&#8203;invalidations</span> | counter | Number of program cache invalidations |
1074+
1075+
</div>

src/app/firedancer-dev/commands/backtest.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
#include "../../../ballet/lthash/fd_lthash.h"
2929
#include "../../../flamenco/runtime/context/fd_capture_ctx.h"
3030
#include "../../../disco/pack/fd_pack_cost.h"
31-
#include "../../../flamenco/progcache/fd_progcache.h"
31+
#include "../../../flamenco/progcache/fd_progcache_admin.h"
3232

3333
#include "../main.h"
3434

@@ -83,7 +83,7 @@ backtest_topo( config_t * config ) {
8383
fd_topob_wksp( topo, "progcache" );
8484
fd_topo_obj_t * progcache_obj = setup_topo_progcache( topo, "progcache",
8585
fd_progcache_est_rec_max( config->firedancer.runtime.program_cache.heap_size_mib<<20,
86-
config->firedancer.runtime.program_cache.mean_cache_entry_size_kib<<10 ),
86+
config->firedancer.runtime.program_cache.mean_cache_entry_size ),
8787
config->firedancer.funk.max_database_transactions,
8888
config->firedancer.runtime.program_cache.heap_size_mib<<20 );
8989
fd_topob_tile_uses( topo, replay_tile, progcache_obj, FD_SHMEM_JOIN_MODE_READ_WRITE );

src/app/firedancer/config/default.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -537,12 +537,12 @@ user = ""
537537
# faster transaction execution.
538538
[runtime.program_cache]
539539
# The size of the loaded program cache in MiB.
540-
heap_size_mib = 1024
540+
heap_size_mib = 16384
541541

542542
# The mean expected heap utilization of a cache entry. Controls
543543
# the size of metadata structures (e.g. cache entry table). It
544544
# is not recommended to change this setting.
545-
mean_cache_entry_size_kib = 131072
545+
mean_cache_entry_size = 131072
546546

547547
# This section configures the "groove" persistent account database.
548548
# [groove]

src/app/firedancer/topology.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@
2121
#include "../../discof/restore/utils/fd_ssmsg.h"
2222
#include "../../flamenco/gossip/fd_gossip.h"
2323
#include "../../flamenco/runtime/context/fd_capture_ctx.h"
24-
#include "../../funk/fd_funk.h" /* funk_footprint() */
25-
#include "../../flamenco/progcache/fd_progcache.h"
24+
#include "../../flamenco/progcache/fd_progcache_admin.h"
2625

2726
#include <sys/random.h>
2827
#include <sys/types.h>
@@ -740,7 +739,7 @@ fd_topo_initialize( config_t * config ) {
740739

741740
fd_topo_obj_t * progcache_obj = setup_topo_progcache( topo, "progcache",
742741
fd_progcache_est_rec_max( config->firedancer.runtime.program_cache.heap_size_mib<<20,
743-
config->firedancer.runtime.program_cache.mean_cache_entry_size_kib<<10 ),
742+
config->firedancer.runtime.program_cache.mean_cache_entry_size ),
744743
config->firedancer.funk.max_database_transactions,
745744
config->firedancer.runtime.program_cache.heap_size_mib<<20 );
746745
/**/ fd_topob_tile_uses( topo, &topo->tiles[ fd_topo_find_tile( topo, "replay", 0UL ) ], progcache_obj, FD_SHMEM_JOIN_MODE_READ_WRITE );

src/app/shared/fd_config.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ struct fd_configf {
115115

116116
struct {
117117
ulong heap_size_mib;
118-
ulong mean_cache_entry_size_kib;
118+
ulong mean_cache_entry_size;
119119
} program_cache;
120120
} runtime;
121121

src/app/shared/fd_config_parse.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ fd_config_extract_podf( uchar * pod,
9292
CFG_POP ( ulong, runtime.max_fork_width );
9393

9494
CFG_POP ( ulong, runtime.program_cache.heap_size_mib );
95-
CFG_POP ( ulong, runtime.program_cache.mean_cache_entry_size_kib );
95+
CFG_POP ( ulong, runtime.program_cache.mean_cache_entry_size );
9696

9797
CFG_POP ( ulong, store.max_completed_shred_sets );
9898

src/disco/metrics/generate/types.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class Tile(Enum):
3535
BANKF = 29
3636
RESOLF = 30
3737
BACKT = 31
38+
EXEC = 32
3839

3940
class MetricType(Enum):
4041
COUNTER = 0

src/disco/metrics/generated/fd_metrics_all.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ const char * FD_METRICS_TILE_KIND_NAMES[FD_METRICS_TILE_KIND_CNT] = {
6464
"bankf",
6565
"resolf",
6666
"backt",
67+
"exec",
6768
};
6869

6970
const ulong FD_METRICS_TILE_KIND_SIZES[FD_METRICS_TILE_KIND_CNT] = {
@@ -95,6 +96,7 @@ const ulong FD_METRICS_TILE_KIND_SIZES[FD_METRICS_TILE_KIND_CNT] = {
9596
FD_METRICS_BANKF_TOTAL,
9697
FD_METRICS_RESOLF_TOTAL,
9798
FD_METRICS_BACKT_TOTAL,
99+
FD_METRICS_EXEC_TOTAL,
98100
};
99101
const fd_metrics_meta_t * FD_METRICS_TILE_KIND_METRICS[FD_METRICS_TILE_KIND_CNT] = {
100102
FD_METRICS_NET,
@@ -125,4 +127,5 @@ const fd_metrics_meta_t * FD_METRICS_TILE_KIND_METRICS[FD_METRICS_TILE_KIND_CNT]
125127
FD_METRICS_BANKF,
126128
FD_METRICS_RESOLF,
127129
FD_METRICS_BACKT,
130+
FD_METRICS_EXEC,
128131
};

src/disco/metrics/generated/fd_metrics_all.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
#include "fd_metrics_metric.h"
3131
#include "fd_metrics_ipecho.h"
3232
#include "fd_metrics_backt.h"
33+
#include "fd_metrics_exec.h"
3334
/* Start of LINK OUT metrics */
3435

3536
#define FD_METRICS_COUNTER_LINK_SLOW_COUNT_OFF (0UL)
@@ -166,7 +167,7 @@ extern const fd_metrics_meta_t FD_METRICS_ALL_LINK_OUT[FD_METRICS_ALL_LINK_OUT_T
166167

167168
#define FD_METRICS_TOTAL_SZ (8UL*253UL)
168169

169-
#define FD_METRICS_TILE_KIND_CNT 28
170+
#define FD_METRICS_TILE_KIND_CNT 29
170171
extern const char * FD_METRICS_TILE_KIND_NAMES[FD_METRICS_TILE_KIND_CNT];
171172
extern const ulong FD_METRICS_TILE_KIND_SIZES[FD_METRICS_TILE_KIND_CNT];
172173
extern const fd_metrics_meta_t * FD_METRICS_TILE_KIND_METRICS[FD_METRICS_TILE_KIND_CNT];
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* THIS FILE IS GENERATED BY gen_metrics.py. DO NOT HAND EDIT. */
2+
#include "fd_metrics_exec.h"
3+
4+
const fd_metrics_meta_t FD_METRICS_EXEC[FD_METRICS_EXEC_TOTAL] = {
5+
DECLARE_METRIC( EXEC_PROGCACHE_MISSES, COUNTER ),
6+
DECLARE_METRIC( EXEC_PROGCACHE_HITS, COUNTER ),
7+
DECLARE_METRIC( EXEC_PROGCACHE_FILLS, COUNTER ),
8+
DECLARE_METRIC( EXEC_PROGCACHE_FILL_TOT_SZ, COUNTER ),
9+
DECLARE_METRIC( EXEC_PROGCACHE_FILL_FAILS, COUNTER ),
10+
DECLARE_METRIC( EXEC_PROGCACHE_DUP_INSERTS, COUNTER ),
11+
DECLARE_METRIC( EXEC_PROGCACHE_INVALIDATIONS, COUNTER ),
12+
};

0 commit comments

Comments
 (0)