Made size of thread pools configurable from environment variables
BDBERL_NUM_GENERAL_THREADS and BDBERL_NUM_TXN_THREADS.
This commit is contained in:
parent
497b9ca70f
commit
19addac0fe
1 changed files with 33 additions and 4 deletions
|
@ -146,9 +146,14 @@ static ErlDrvPort G_LOG_PORT;
|
||||||
*/
|
*/
|
||||||
static unsigned int G_PAGE_SIZE = 0;
|
static unsigned int G_PAGE_SIZE = 0;
|
||||||
|
|
||||||
/**
|
/** Thread pools
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
#define DEFAULT_NUM_GENERAL_THREADS 10
|
||||||
|
#define DEFAULT_NUM_TXN_THREADS 10
|
||||||
|
|
||||||
|
static int G_NUM_GENERAL_THREADS = DEFAULT_NUM_GENERAL_THREADS;
|
||||||
|
static int G_NUM_TXN_THREADS = DEFAULT_NUM_TXN_THREADS;
|
||||||
static TPool* G_TPOOL_GENERAL = NULL;
|
static TPool* G_TPOOL_GENERAL = NULL;
|
||||||
static TPool* G_TPOOL_TXNS = NULL;
|
static TPool* G_TPOOL_TXNS = NULL;
|
||||||
|
|
||||||
|
@ -358,9 +363,33 @@ DRIVER_INIT(bdberl_drv)
|
||||||
&checkpointer, 0, 0);
|
&checkpointer, 0, 0);
|
||||||
|
|
||||||
// Startup our thread pools
|
// Startup our thread pools
|
||||||
// TODO: Make configurable/adjustable
|
char num_general_threads_str[64];
|
||||||
G_TPOOL_GENERAL = bdberl_tpool_start(10);
|
value_size = sizeof(num_general_threads_str);
|
||||||
G_TPOOL_TXNS = bdberl_tpool_start(10);
|
if (erl_drv_getenv("BDBERL_NUM_GENERAL_THREADS", num_general_threads_str, &value_size) >= 0)
|
||||||
|
{
|
||||||
|
assert(value_size < sizeof(num_general_threads_str));
|
||||||
|
|
||||||
|
G_NUM_GENERAL_THREADS = atoi(num_general_threads_str);
|
||||||
|
if (G_NUM_GENERAL_THREADS <= 0)
|
||||||
|
{
|
||||||
|
G_NUM_GENERAL_THREADS = DEFAULT_NUM_GENERAL_THREADS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
G_TPOOL_GENERAL = bdberl_tpool_start(G_NUM_GENERAL_THREADS);
|
||||||
|
|
||||||
|
char num_txn_threads_str[64];
|
||||||
|
value_size = sizeof(num_txn_threads_str);
|
||||||
|
if (erl_drv_getenv("BDBERL_NUM_TXN_THREADS", num_txn_threads_str, &value_size) >= 0)
|
||||||
|
{
|
||||||
|
assert(value_size < sizeof(num_txn_threads_str));
|
||||||
|
|
||||||
|
G_NUM_TXN_THREADS = atoi(num_txn_threads_str);
|
||||||
|
if (G_NUM_TXN_THREADS <= 0)
|
||||||
|
{
|
||||||
|
G_NUM_TXN_THREADS = DEFAULT_NUM_TXN_THREADS;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
G_TPOOL_TXNS = bdberl_tpool_start(G_NUM_TXN_THREADS);
|
||||||
|
|
||||||
// Initialize logging lock and refs
|
// Initialize logging lock and refs
|
||||||
G_LOG_RWLOCK = erl_drv_rwlock_create("bdberl_drv: G_LOG_RWLOCK");
|
G_LOG_RWLOCK = erl_drv_rwlock_create("bdberl_drv: G_LOG_RWLOCK");
|
||||||
|
|
Loading…
Reference in a new issue