mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-23 19:33:28 +01:00
Merge pull request #2742
7c7d3672
Increase LMDB maxreaders if large number of threads in use (Howard Chu)6738753b
Use max_concurrency as-is (Howard Chu)
This commit is contained in:
commit
0d0ce8c21e
@ -34,6 +34,7 @@
|
|||||||
#include <cstring> // memcpy
|
#include <cstring> // memcpy
|
||||||
#include <random>
|
#include <random>
|
||||||
|
|
||||||
|
#include "common/util.h"
|
||||||
#include "cryptonote_basic/cryptonote_format_utils.h"
|
#include "cryptonote_basic/cryptonote_format_utils.h"
|
||||||
#include "crypto/crypto.h"
|
#include "crypto/crypto.h"
|
||||||
#include "profile_tools.h"
|
#include "profile_tools.h"
|
||||||
@ -1135,6 +1136,11 @@ void BlockchainLMDB::open(const std::string& filename, const int db_flags)
|
|||||||
if ((result = mdb_env_set_maxdbs(m_env, 20)))
|
if ((result = mdb_env_set_maxdbs(m_env, 20)))
|
||||||
throw0(DB_ERROR(lmdb_error("Failed to set max number of dbs: ", result).c_str()));
|
throw0(DB_ERROR(lmdb_error("Failed to set max number of dbs: ", result).c_str()));
|
||||||
|
|
||||||
|
int threads = tools::get_max_concurrency();
|
||||||
|
if (threads > 110 && /* maxreaders default is 126, leave some slots for other read processes */
|
||||||
|
(result = mdb_env_set_maxreaders(m_env, threads+16)))
|
||||||
|
throw0(DB_ERROR(lmdb_error("Failed to set max number of readers: ", result).c_str()));
|
||||||
|
|
||||||
size_t mapsize = DEFAULT_MAPSIZE;
|
size_t mapsize = DEFAULT_MAPSIZE;
|
||||||
|
|
||||||
if (db_flags & DBF_FAST)
|
if (db_flags & DBF_FAST)
|
||||||
|
@ -39,7 +39,7 @@ namespace tools
|
|||||||
threadpool::threadpool() : running(true), active(0) {
|
threadpool::threadpool() : running(true), active(0) {
|
||||||
boost::thread::attributes attrs;
|
boost::thread::attributes attrs;
|
||||||
attrs.set_stack_size(THREAD_STACK_SIZE);
|
attrs.set_stack_size(THREAD_STACK_SIZE);
|
||||||
max = tools::get_max_concurrency() * 2;
|
max = tools::get_max_concurrency();
|
||||||
size_t i = max;
|
size_t i = max;
|
||||||
while(i--) {
|
while(i--) {
|
||||||
threads.push_back(boost::thread(attrs, boost::bind(&threadpool::run, this)));
|
threads.push_back(boost::thread(attrs, boost::bind(&threadpool::run, this)));
|
||||||
@ -74,7 +74,7 @@ void threadpool::submit(waiter *obj, std::function<void()> f) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int threadpool::get_max_concurrency() {
|
int threadpool::get_max_concurrency() {
|
||||||
return max / 2;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
void threadpool::waiter::wait() {
|
void threadpool::waiter::wait() {
|
||||||
|
Loading…
Reference in New Issue
Block a user