summaryrefslogtreecommitdiffstats
path: root/database/engine/rrdengine.c
diff options
context:
space:
mode:
Diffstat (limited to 'database/engine/rrdengine.c')
-rw-r--r--database/engine/rrdengine.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/database/engine/rrdengine.c b/database/engine/rrdengine.c
index ce363183d3..20567b6b6e 100644
--- a/database/engine/rrdengine.c
+++ b/database/engine/rrdengine.c
@@ -1,5 +1,4 @@
// SPDX-License-Identifier: GPL-3.0-or-later
-#define NETDATA_RRD_INTERNALS
#include "rrdengine.h"
#include "pdc.h"
@@ -157,11 +156,15 @@ enum LIBUV_WORKERS_STATUS {
static inline enum LIBUV_WORKERS_STATUS work_request_full(void) {
size_t dispatched = __atomic_load_n(&rrdeng_main.work_cmd.atomics.dispatched, __ATOMIC_RELAXED);
+ int reserved_libuv_worker_threads = 3;
- if(dispatched >= (size_t)(libuv_worker_threads))
+ internal_fatal(rrdb.libuv_worker_threads <= reserved_libuv_worker_threads,
+ "libuv worker threads below minimum required");
+
+ if(dispatched >= (size_t)(rrdb.libuv_worker_threads))
return LIBUV_WORKERS_CRITICAL;
- else if(dispatched >= (size_t)(libuv_worker_threads - RESERVED_LIBUV_WORKER_THREADS))
+ else if(dispatched >= (size_t)(rrdb.libuv_worker_threads - reserved_libuv_worker_threads))
return LIBUV_WORKERS_STRESSED;
return LIBUV_WORKERS_RELAXED;
@@ -354,7 +357,7 @@ static void wal_cleanup1(void) {
if(!spinlock_trylock(&wal_globals.protected.spinlock))
return;
- if(wal_globals.protected.available_items && wal_globals.protected.available > storage_tiers) {
+ if (wal_globals.protected.available_items && wal_globals.protected.available > rrdb.storage_tiers) {
wal = wal_globals.protected.available_items;
DOUBLE_LINKED_LIST_REMOVE_ITEM_UNSAFE(wal_globals.protected.available_items, wal, cache.prev, cache.next);
wal_globals.protected.available--;
@@ -582,25 +585,25 @@ struct {
} dbengine_page_alloc_globals = {};
static inline ARAL *page_size_lookup(size_t size) {
- for(size_t tier = 0; tier < storage_tiers ;tier++)
- if(size == tier_page_size[tier])
+ for (size_t tier = 0; tier < rrdb.storage_tiers ;tier++)
+ if(size == rrdb.tier_page_size[tier])
return dbengine_page_alloc_globals.aral[tier];
return NULL;
}
static void dbengine_page_alloc_init(void) {
- for(size_t i = storage_tiers; i > 0 ;i--) {
- size_t tier = storage_tiers - i;
+ for (size_t i = rrdb.storage_tiers; i > 0 ;i--) {
+ size_t tier = rrdb.storage_tiers - i;
char buf[20 + 1];
snprintfz(buf, 20, "tier%zu-pages", tier);
dbengine_page_alloc_globals.aral[tier] = aral_create(
buf,
- tier_page_size[tier],
+ rrdb.tier_page_size[tier],
64,
- 512 * tier_page_size[tier],
+ 512 * rrdb.tier_page_size[tier],
pgc_aral_statistics(),
NULL, NULL, false, false);
}
@@ -1784,7 +1787,7 @@ void dbengine_event_loop(void* arg) {
}
case RRDENG_OPCODE_FLUSH_INIT: {
- if(rrdeng_main.flushes_running < (size_t)(libuv_worker_threads / 4)) {
+ if(rrdeng_main.flushes_running < (size_t)(rrdb.libuv_worker_threads / 4)) {
rrdeng_main.flushes_running++;
work_dispatch(NULL, NULL, NULL, opcode, cache_flush_tp_worker, after_do_cache_flush);
}