mirror of
https://github.com/isar/libmdbx.git
synced 2025-01-15 23:04:30 +08:00
mdbx: перенос prefault_write_activated
в транзакцию.
This commit is contained in:
parent
4059686534
commit
0339aa56d9
@ -768,7 +768,7 @@ static inline pgr_t page_alloc_finalize(MDBX_env *const env, MDBX_txn *const txn
|
||||
* обновляться PTE с последующей генерацией page-fault и чтением данных из
|
||||
* грязной I/O очереди. Из-за этого штраф за лишнюю запись может быть
|
||||
* сравним с избегаемым ненужным чтением. */
|
||||
if (env->prefault_write_activated) {
|
||||
if (txn->tw.prefault_write_activated) {
|
||||
void *const pattern = ptr_disp(env->page_auxbuf, need_clean ? env->ps : env->ps * 2);
|
||||
size_t file_offset = pgno2bytes(env, pgno);
|
||||
if (likely(num == 1)) {
|
||||
@ -900,8 +900,8 @@ pgr_t gc_alloc_ex(const MDBX_cursor *const mc, const size_t num, uint8_t flags)
|
||||
gc->dbi_state = txn->dbi_state;
|
||||
gc->top_and_flags = z_fresh_mark;
|
||||
|
||||
env->prefault_write_activated = env->options.prefault_write;
|
||||
if (env->prefault_write_activated) {
|
||||
txn->tw.prefault_write_activated = env->options.prefault_write;
|
||||
if (txn->tw.prefault_write_activated) {
|
||||
/* Проверка посредством minicore() существенно снижает затраты, но в
|
||||
* простейших случаях (тривиальный бенчмарк) интегральная производительность
|
||||
* становится вдвое меньше. А на платформах без mincore() и с проблемной
|
||||
@ -914,7 +914,7 @@ pgr_t gc_alloc_ex(const MDBX_cursor *const mc, const size_t num, uint8_t flags)
|
||||
(txn->dbs[FREE_DBI].branch_pages == 0 && txn->geo.now < 1234) ||
|
||||
/* Не суетимся если страница в зоне включенного упреждающего чтения */
|
||||
(readahead_enabled && pgno + num < readahead_edge))
|
||||
env->prefault_write_activated = false;
|
||||
txn->tw.prefault_write_activated = false;
|
||||
}
|
||||
|
||||
retry_gc_refresh_oldest:;
|
||||
|
@ -212,6 +212,7 @@ struct MDBX_txn {
|
||||
troika_t troika;
|
||||
/* In write txns, array of cursors for each DB */
|
||||
pnl_t __restrict relist; /* Reclaimed GC pages */
|
||||
bool prefault_write_activated;
|
||||
struct {
|
||||
/* The list of reclaimed txns from GC */
|
||||
txl_t __restrict reclaimed;
|
||||
@ -436,7 +437,6 @@ struct MDBX_env {
|
||||
} me_sysv_ipc;
|
||||
#endif /* MDBX_LOCKING == MDBX_LOCKING_SYSV */
|
||||
bool incore;
|
||||
bool prefault_write_activated;
|
||||
|
||||
#if MDBX_ENABLE_DBI_LOCKFREE
|
||||
defer_free_item_t *defer_free;
|
||||
|
Loading…
x
Reference in New Issue
Block a user