mirror of
https://github.com/isar/libmdbx.git
synced 2025-11-07 07:18:56 +08:00
mdbx: определение in-core БД (в tmpfs/ramfs/mfs) с отключением prefault-write.
Это вынужденный читинг для "починки" сравнительных бенчмарков при размещении БД в /dev/shm. Проблема в том, что актуальные ядра Linux для файлов размещенных в tmpfs возвращают mincore=false. В результате, в простейших бенчмарках видно двукратное снижение производительности, просто из-за вызовов write() выполняемых для prefault. Из-за этого, в таких синтетических тестах, новая libmdbx становится существенно медленнее предыдущих версий, в том числе LMDB.
This commit is contained in:
@@ -1273,12 +1273,14 @@ struct MDBX_env {
|
||||
#if !(defined(_WIN32) || defined(_WIN64))
|
||||
unsigned writethrough_threshold;
|
||||
#endif /* Windows */
|
||||
bool prefault_write;
|
||||
union {
|
||||
unsigned all;
|
||||
/* tracks options with non-auto values but tuned by user */
|
||||
struct {
|
||||
unsigned dp_limit : 1;
|
||||
unsigned rp_augment_limit : 1;
|
||||
unsigned prefault_write : 1;
|
||||
} non_auto;
|
||||
} flags;
|
||||
} me_options;
|
||||
@@ -1300,6 +1302,7 @@ struct MDBX_env {
|
||||
int semid;
|
||||
} me_sysv_ipc;
|
||||
#endif /* MDBX_LOCKING == MDBX_LOCKING_SYSV */
|
||||
bool me_incore;
|
||||
|
||||
MDBX_env *me_lcklist_next;
|
||||
|
||||
@@ -1308,6 +1311,7 @@ struct MDBX_env {
|
||||
MDBX_txn *me_txn; /* current write transaction */
|
||||
osal_fastmutex_t me_dbi_lock;
|
||||
MDBX_dbi me_numdbs; /* number of DBs opened */
|
||||
bool me_prefault_write;
|
||||
|
||||
MDBX_page *me_dp_reserve; /* list of malloc'ed blocks for re-use */
|
||||
unsigned me_dp_reserve_len;
|
||||
|
||||
Reference in New Issue
Block a user