wallet: warn if lockable memory limit is too low
This commit is contained in:
parent
963d247154
commit
177a9d76f9
@ -728,6 +728,21 @@ std::string get_nix_version_display_string()
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ssize_t get_lockable_memory()
|
||||||
|
{
|
||||||
|
#ifdef __GLIBC__
|
||||||
|
struct rlimit rlim;
|
||||||
|
if (getrlimit(RLIMIT_MEMLOCK, &rlim) < 0)
|
||||||
|
{
|
||||||
|
MERROR("Failed to determine the lockable memory limit");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return rlim.rlim_cur;
|
||||||
|
#else
|
||||||
|
return -1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
bool on_startup()
|
bool on_startup()
|
||||||
{
|
{
|
||||||
mlog_configure("", true);
|
mlog_configure("", true);
|
||||||
|
@ -221,6 +221,8 @@ namespace tools
|
|||||||
|
|
||||||
void set_strict_default_file_permissions(bool strict);
|
void set_strict_default_file_permissions(bool strict);
|
||||||
|
|
||||||
|
ssize_t get_lockable_memory();
|
||||||
|
|
||||||
void set_max_concurrency(unsigned n);
|
void set_max_concurrency(unsigned n);
|
||||||
unsigned get_max_concurrency();
|
unsigned get_max_concurrency();
|
||||||
|
|
||||||
|
@ -211,6 +211,14 @@ namespace wallet_args
|
|||||||
|
|
||||||
Print(print) << boost::format(wallet_args::tr("Logging to %s")) % log_path;
|
Print(print) << boost::format(wallet_args::tr("Logging to %s")) % log_path;
|
||||||
|
|
||||||
|
const ssize_t lockable_memory = tools::get_lockable_memory();
|
||||||
|
if (lockable_memory >= 0 && lockable_memory < 256 * 4096) // 256 pages -> at least 256 secret keys and other such small/medium objects
|
||||||
|
Print(print) << tr("WARNING: You may not have a high enough lockable memory limit")
|
||||||
|
#ifdef ELPP_OS_UNIX
|
||||||
|
<< ", " << tr("see ulimit -l")
|
||||||
|
#endif
|
||||||
|
;
|
||||||
|
|
||||||
return {std::move(vm), should_terminate};
|
return {std::move(vm), should_terminate};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user