diff options
author | rich prohaska <prohaska@tokutek.com> | 2013-10-07 08:38:50 -0400 |
---|---|---|
committer | rich prohaska <prohaska@tokutek.com> | 2013-10-07 08:38:50 -0400 |
commit | 1e46d5402768549cdc1e2771a1fc1cc822f03eb9 (patch) | |
tree | fa903a02e94937e1699dc4327d003414b3499566 | |
parent | 36737f6c36aa6b3e03ba6e6b02bb554e2501f7f2 (diff) | |
parent | 26ccf76d4568c429aa4aff5335b957cf5d65922b (diff) | |
download | mariadb-git-1e46d5402768549cdc1e2771a1fc1cc822f03eb9.tar.gz |
tokutek/ft-engine#94 tokutek/ft-index#80 configure an upper bound on loader memory reservations
Merge branch 'loadermem80'
-rw-r--r-- | storage/tokudb/hatoku_hton.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/storage/tokudb/hatoku_hton.cc b/storage/tokudb/hatoku_hton.cc index 162004a6bf2..67a426c7b18 100644 --- a/storage/tokudb/hatoku_hton.cc +++ b/storage/tokudb/hatoku_hton.cc @@ -182,6 +182,7 @@ static ulonglong tokudb_lock_timeout; static void tokudb_lock_timeout_callback(DB *db, uint64_t requesting_txnid, const DBT *left_key, const DBT *right_key, uint64_t blocking_txnid); static ulong tokudb_cleaner_period; static ulong tokudb_cleaner_iterations; +static ulonglong tokudb_loader_memory_size; #define ASSERT_MSGLEN 1024 @@ -457,6 +458,7 @@ static int tokudb_init_func(void *p) { db_env_set_direct_io(tokudb_directio == TRUE); db_env->change_fsync_log_period(db_env, tokudb_fsync_log_period); db_env->set_lock_timeout_callback(db_env, tokudb_lock_timeout_callback); + db_env->set_loader_memory_size(db_env, tokudb_loader_memory_size); r = db_env->open(db_env, tokudb_home, tokudb_init_flags, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); @@ -1250,6 +1252,19 @@ static void tokudb_fsync_log_period_update(THD *thd, struct st_mysql_sys_var *sy static MYSQL_SYSVAR_UINT(fsync_log_period, tokudb_fsync_log_period, 0, "TokuDB fsync log period", NULL, tokudb_fsync_log_period_update, 0, 0, ~0U, 0); +static void tokudb_update_loader_memory_size(THD * thd, struct st_mysql_sys_var * sys_var, void * var, const void * save) { + ulonglong *p = (ulonglong *) var; + *p = *(const ulonglong *) save; + db_env->set_loader_memory_size(db_env, *p); +} + +static MYSQL_SYSVAR_ULONGLONG( + loader_memory_size, tokudb_loader_memory_size, + 0, "TokuDB loader memory size", + NULL, tokudb_update_loader_memory_size, + 100 * 1000 * 1000 /*default*/, 0 /*min*/, ~0ULL /*max*/, 0 +); + static struct st_mysql_sys_var *tokudb_system_variables[] = { MYSQL_SYSVAR(cache_size), MYSQL_SYSVAR(max_lock_memory), @@ -1293,6 +1308,7 @@ static struct st_mysql_sys_var *tokudb_system_variables[] = { #endif MYSQL_SYSVAR(last_lock_timeout), MYSQL_SYSVAR(lock_timeout_debug), + MYSQL_SYSVAR(loader_memory_size), NULL }; |