diff options
author | Costa Tsaousis <costa@netdata.cloud> | 2022-11-15 23:13:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-15 23:13:14 +0200 |
commit | 2de2e45656dc9875326d7d0e0f76de61d1377e2a (patch) | |
tree | 345aebc146d73f8b0f56e912e7c21779e0c8a24f /database | |
parent | 0a7a7b29c3f8cdeeae4b568dc71677858265b513 (diff) |
enable dbengine tiering by default (#13914)
enable tiering by default
Diffstat (limited to 'database')
-rw-r--r--[-rwxr-xr-x] | database/engine/rrdengineapi.c | 7 | ||||
-rw-r--r-- | database/engine/rrdenginelib.c | 4 | ||||
-rw-r--r-- | database/rrd.h | 2 | ||||
-rw-r--r-- | database/rrdhost.c | 15 |
4 files changed, 19 insertions, 9 deletions
diff --git a/database/engine/rrdengineapi.c b/database/engine/rrdengineapi.c index 642c71f34b..febe3d53f9 100755..100644 --- a/database/engine/rrdengineapi.c +++ b/database/engine/rrdengineapi.c @@ -30,11 +30,12 @@ __attribute__((constructor)) void initialize_multidb_ctx(void) { int db_engine_use_malloc = 0; int default_rrdeng_page_fetch_timeout = 3; int default_rrdeng_page_fetch_retries = 3; -int default_rrdeng_page_cache_mb = 32; +int default_rrdeng_page_cache_mb = RRDENG_MIN_PAGE_CACHE_SIZE_MB * 4; // not used for default - use storage_tiers_cache_quota_mb[0] +int default_rrdeng_disk_quota_mb = RRDENG_MIN_DISK_SPACE_MB * 4; // not used for default - use storage_tiers_disk_quota_mb[0] +int default_multidb_disk_quota_mb = RRDENG_MIN_DISK_SPACE_MB * 4; // not used for default - use storage_tiers_disk_quota_mb[0] int db_engine_journal_indexing = 1; int db_engine_journal_check = 0; -int default_rrdeng_disk_quota_mb = 256; -int default_multidb_disk_quota_mb = 256; + /* Default behaviour is to unblock data collection if the page cache is full of dirty pages by dropping metrics */ uint8_t rrdeng_drop_metrics_under_page_cache_pressure = 1; diff --git a/database/engine/rrdenginelib.c b/database/engine/rrdenginelib.c index 58bd9c4375..36582ff846 100644 --- a/database/engine/rrdenginelib.c +++ b/database/engine/rrdenginelib.c @@ -292,7 +292,7 @@ int compute_multidb_diskspace() if (computed_multidb_disk_quota_mb == -1) { int rc = count_legacy_children(netdata_configured_cache_dir); if (likely(rc >= 0)) { - computed_multidb_disk_quota_mb = (rc + 1) * default_rrdeng_disk_quota_mb; + computed_multidb_disk_quota_mb = (rc + 1) * (int)storage_tiers_disk_quota_mb[0]; info("Found %d legacy dbengines, setting multidb diskspace to %dMB", rc, computed_multidb_disk_quota_mb); fp = fopen(multidb_disk_space_file, "w"); @@ -304,7 +304,7 @@ int compute_multidb_diskspace() error("Failed to store the default multidb disk quota size on '%s'", multidb_disk_space_file); } else - computed_multidb_disk_quota_mb = default_rrdeng_disk_quota_mb; + computed_multidb_disk_quota_mb = (int)storage_tiers_disk_quota_mb[0]; } return computed_multidb_disk_quota_mb; diff --git a/database/rrd.h b/database/rrd.h index de7b12ea2f..7a0df3339c 100644 --- a/database/rrd.h +++ b/database/rrd.h @@ -58,6 +58,8 @@ struct pg_cache_page_index; extern bool dbengine_enabled; extern size_t storage_tiers; extern size_t storage_tiers_grouping_iterations[RRD_STORAGE_TIERS]; +extern size_t storage_tiers_disk_quota_mb[RRD_STORAGE_TIERS]; +extern size_t storage_tiers_cache_quota_mb[RRD_STORAGE_TIERS]; typedef enum { RRD_BACKFILL_NONE, diff --git a/database/rrdhost.c b/database/rrdhost.c index 20a6df0fe7..2121bca83f 100644 --- a/database/rrdhost.c +++ b/database/rrdhost.c @@ -4,8 +4,10 @@ #include "rrd.h" bool dbengine_enabled = false; // will become true if and when dbengine is initialized -size_t storage_tiers = 1; +size_t storage_tiers = 1; // this default is not used - 3 when dbengine is used, 1 otherwise size_t storage_tiers_grouping_iterations[RRD_STORAGE_TIERS] = { 1, 60, 60, 60, 60 }; +size_t storage_tiers_disk_quota_mb[RRD_STORAGE_TIERS] = { RRDENG_MIN_DISK_SPACE_MB * 4, RRDENG_MIN_DISK_SPACE_MB * 2, RRDENG_MIN_DISK_SPACE_MB, RRDENG_MIN_DISK_SPACE_MB, RRDENG_MIN_DISK_SPACE_MB }; +size_t storage_tiers_cache_quota_mb[RRD_STORAGE_TIERS] = { RRDENG_MIN_PAGE_CACHE_SIZE_MB * 4, RRDENG_MIN_PAGE_CACHE_SIZE_MB * 2, RRDENG_MIN_PAGE_CACHE_SIZE_MB, RRDENG_MIN_PAGE_CACHE_SIZE_MB, RRDENG_MIN_PAGE_CACHE_SIZE_MB }; RRD_BACKFILL storage_tiers_backfill[RRD_STORAGE_TIERS] = { RRD_BACKFILL_NEW, RRD_BACKFILL_NEW, RRD_BACKFILL_NEW, RRD_BACKFILL_NEW, RRD_BACKFILL_NEW }; #if RRD_STORAGE_TIERS != 5 @@ -756,7 +758,7 @@ inline int rrdhost_should_be_removed(RRDHOST *host, RRDHOST *protected_host, tim void dbengine_init(char *hostname) { #ifdef ENABLE_DBENGINE - storage_tiers = config_get_number(CONFIG_SECTION_DB, "storage tiers", storage_tiers); + storage_tiers = config_get_number(CONFIG_SECTION_DB, "storage tiers", (default_rrd_memory_mode == RRD_MEMORY_MODE_DBENGINE) ? 3 : 1); if(storage_tiers < 1) { error("At least 1 storage tier is required. Assuming 1."); storage_tiers = 1; @@ -767,6 +769,11 @@ void dbengine_init(char *hostname) { storage_tiers = RRD_STORAGE_TIERS; config_set_number(CONFIG_SECTION_DB, "storage tiers", storage_tiers); } + if(default_rrd_memory_mode != RRD_MEMORY_MODE_DBENGINE && storage_tiers != 1) { + error("Host '%s': only 1 database tier can be supported without dbengine.", hostname); + storage_tiers = 1; + config_set_number(CONFIG_SECTION_DB, "storage tiers", storage_tiers); + } default_rrdeng_page_fetch_timeout = (int) config_get_number(CONFIG_SECTION_DB, "dbengine page fetch timeout secs", PAGE_CACHE_FETCH_WAIT_TIMEOUT); if (default_rrdeng_page_fetch_timeout < 1) { @@ -802,8 +809,8 @@ void dbengine_init(char *hostname) { break; } - int page_cache_mb = default_rrdeng_page_cache_mb; - int disk_space_mb = default_multidb_disk_quota_mb; + int page_cache_mb = (int)storage_tiers_cache_quota_mb[tier]; + int disk_space_mb = (int)storage_tiers_disk_quota_mb[tier]; size_t grouping_iterations = storage_tiers_grouping_iterations[tier]; RRD_BACKFILL backfill = storage_tiers_backfill[tier]; |