Леонид Юрьев (Leonid Yuriev)
54b15d7e41
mdbx: определение in-core БД (в tmpfs/ramfs/mfs) с отключением prefault-write.
...
Это вынужденный читинг для "починки" сравнительных бенчмарков при
размещении БД в /dev/shm.
Проблема в том, что актуальные ядра Linux для файлов размещенных в tmpfs
возвращают mincore=false. В результате, в простейших бенчмарках видно
двукратное снижение производительности, просто из-за вызовов write()
выполняемых для prefault.
Из-за этого, в таких синтетических тестах, новая libmdbx становится
существенно медленнее предыдущих версий, в том числе LMDB.
2022-12-12 18:54:03 +03:00
Леонид Юрьев (Leonid Yuriev)
1bb41ee8fc
mdbx: отключение "экономии последовательностей" посредством MDBX_ENABLE_SAVING_SEQUENCES=0
.
2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
a572902fde
mdbx: автоматическая установка rp_augment_limit
в "золотое сечение" от размера БД.
2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
fd7aaf5f35
mdbx: добавление ошибки MDBX_BACKLOG_DEPLETED
и соответствующей логики в page_alloc_slowpath()
.
2022-12-09 18:07:16 +03:00
Леонид Юрьев (Leonid Yuriev)
4b27c4c7c9
mdbx: предварительное вычисление me_maxgc_per_branch
.
2022-12-08 16:29:18 +03:00
Леонид Юрьев (Leonid Yuriev)
3a77af7d8a
mdbx: оптимизация поддержки сортировки в dpl_append()
.
2022-12-07 00:06:07 +03:00
Леонид Юрьев (Leonid Yuriev)
a9163f6307
mdbx: доработка внутренних LRU-отметок для аккуратного спиллинга огромных транзакций.
2022-12-07 00:06:07 +03:00
Леонид Юрьев (Leonid Yuriev)
a772a9d3e1
mdbx: добавление проверки посредством mincore()
с кэшированием присутствия страниц в памяти (опция сборки MDBX_ENABLE_MINCORE
).
2022-12-05 10:41:05 +03:00
Леонид Юрьев (Leonid Yuriev)
be3ff92772
mdbx: предотвращение бесполезных page-faults в режиме MDBX_WRITEMAP
(опция сборки MDBX_ENABLE_PREFAULT
).
2022-12-05 10:03:00 +03:00
Леонид Юрьев (Leonid Yuriev)
dc27d5d30a
mdbx: рефакторинг с формированием page_alloc_finalize()
и сокрашением метрик MDBX_ENABLE_PROFGC
.
2022-12-04 18:24:30 +03:00
Леонид Юрьев (Leonid Yuriev)
23d236f70e
mdbx: добавление MDBX_opt_writethrough_threshold
и сопутствующие доработки.
2022-12-04 13:41:50 +03:00
Леонид Юрьев (Leonid Yuriev)
01a39e7dc2
mdbx: добавление и использование ptr_disp()
и ptr_dist()
.
...
Для уменьшения кастинга типов указателей и потенциальной нагрузки оптимизатора/кодогенератора алиасингом.
2022-11-29 02:50:34 +03:00
Леонид Юрьев (Leonid Yuriev)
c521a21f05
mdbx: перемещение mp_next
в заголовке страницы для отделения от mp_txnid
.
2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
c5ddf12602
mdbx: увеличение лимита MDBX_TXL_MAX
до 2^26.
2022-11-28 15:51:36 +03:00
Леонид Юрьев (Leonid Yuriev)
3757eb72f7
mdbx: экономия последовательностей при выделении одиночных страниц.
2022-11-28 15:51:36 +03:00
Леонид Юрьев (Leonid Yuriev)
da023657f5
mdbx: переработка внутренних флагов связанных с выделением страниц из GC.
2022-11-23 00:56:09 +03:00
Леонид Юрьев (Leonid Yuriev)
6c840cf58e
mdbx: подсчет грязных страниц в режиме MDBX_WRITEMAP
для статистики.
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
c270306580
mdbx-windows: уточнение проверок макросов MinGW и устранение предупреждений.
2022-11-08 20:39:44 +03:00
Леонид Юрьев (Leonid Yuriev)
f0c6aa4646
mdbx: workaround for false-positives from Valgrind bug.
2022-11-07 00:47:16 +03:00
Леонид Юрьев (Leonid Yuriev)
f680c99116
mdbx: переделка page_alloc_slowpath()
с добавлением профилирования GC.
2022-11-07 00:44:37 +03:00
Леонид Юрьев (Leonid Yuriev)
47e7a646fd
mdbx: переделка отслеживания mlocks для игнорирования EINVAL
от madvise()
.
2022-11-05 14:06:00 +03:00
Леонид Юрьев (Leonid Yuriev)
28e2e31949
mdbx: выделение специфической инициализации в osal_ctor()
.
2022-11-02 11:09:32 +03:00
Леонид Юрьев (Leonid Yuriev)
d661d4bac7
mdbx: добавление mdbx_env_warmup()
2022-10-24 11:37:57 +03:00
Леонид Юрьев (Leonid Yuriev)
4e95a079ee
mdbx: переименование MDBX_COMMIT_PAGES
в MDBX_AUXILARY_IOV_MAX
.
2022-10-22 11:12:52 +03:00
Леонид Юрьев (Leonid Yuriev)
e5fc056035
mdbx: изменение формата LCK и семантики некоторых внутренних полей.
...
Изменение формата LCK-файла означает что версии libmdbx использующие
разный формат не смогут работать с одной БД одновременно, а только
поочередно (LCK-файл переписывается при открытии первым открывающим БД
процессом).
1. Поле mti_unsynced_pages теперь 64-битное (чтобы не контролировать
переполнение) и перемещено для соблюдения выравнивания.
2. Поле mti_sync_timestamp переименовано в mti_eoos_timestamp
одновременно со сменой семантики. Теперь время отсчитывается не от
момента сброса данных на диск, а с момента входа в «грязное» состояние.
Скорее всего, текущая версия формата LCK не окончательная
и изменится до релиза.
2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
98e29fe628
mdbx-windows: UNICODE-зависимое определение макросов MDBX_DATANAME, MDBX_LOCKNAME и MDBX_LOCK_SUFFIX.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
db72763de0
mdbx: отключение учета грязных страниц в не требующих этого режимах.
...
В режиме MDBX_WRITEMAP с опцией сборки MDBX_AVOID_MSYNC=0 отслеживание грязных страниц не требуется.
Эта доработка устраняет еще одну из недоделок (пункт в TODO).
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
c17617b816
mdbx: облегченная assert_fail()
для не-отладочных сборок.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
66f2e3d596
mdbx: добавление в API функций mdbx_limits_pairsize4page_max()
и mdbx_limits_valsize4page_max()
с сопутствующими доработками.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
143e3dfb77
mdbx: преимущественное использование size_t
для уменьшения накладных расходов на платформе Эльбрус.
2022-10-10 13:56:57 +03:00
Леонид Юрьев (Leonid Yuriev)
474391c83c
mdbx: поддержка асинхронного ввода-вывода для Windows и подготовка к io_ring
(объединённые коммиты и исправления).
2022-10-06 20:35:07 +03:00
Леонид Юрьев (Leonid Yuriev)
b617f25eaa
mdbx: refine & rename internal xyz
to troika
.
2022-08-20 01:54:06 +03:00
Леонид Юрьев (Leonid Yuriev)
b759dfafd7
mdbx: counting large/overflow dirty pages (unused for now).
...
This is a basis for [Large/Overflow pages accounting for dirty-room](https://web.archive.org/web/20220414235959/https://github.com/erthink/libmdbx/issues/192 ).
2022-08-20 00:14:48 +03:00
Леонид Юрьев (Leonid Yuriev)
7b36f946cb
mdbx: rework/speed up accessing to meta-pages, choosing and cache of ones (squashed).
2022-08-17 21:39:22 +03:00
Леонид Юрьев (Leonid Yuriev)
1c5ef060c5
mdbx: reduce number of memory fences in the hot paths.
2022-08-11 18:45:00 +03:00
Леонид Юрьев (Leonid Yuriev)
18e557c6e8
mdbx: rename internal functions, types and macros (to be closer to MithrilDB).
2022-08-11 12:33:56 +03:00
Леонид Юрьев (Leonid Yuriev)
2ff8d3c4f2
mdbx: native wchar_t
pathname for Windows.
2022-08-09 18:27:43 +03:00
Леонид Юрьев (Leonid Yuriev)
77635116c6
mdbx: enable solib profiling with -pg
and gprof
with GLIBC >= 2.37.
...
However such profiling requires https://sourceware.org/bugzilla/show_bug.cgi?id=29438 to be fixed.
2022-08-07 11:56:23 +03:00
Леонид Юрьев (Leonid Yuriev)
dc39ecfb9f
mdbx: auto-coalesce of GC's records with less overhead.
2022-07-27 21:08:54 +03:00
Леонид Юрьев (Leonid Yuriev)
08e936a809
mdbx: re-verify atomic-ops and remove mo_SequentialConsistency
.
2022-07-23 12:15:19 +03:00
Леонид Юрьев (Leonid Yuriev)
149e708830
mdbx: rename MDBX_CACHE_METAPTR
build-time option.
2022-07-10 10:05:39 +03:00
Леонид Юрьев (Leonid Yuriev)
b5346ee765
mdbx: use unsigned constants for page flags (to avoid MSVC warnings).
2022-07-08 21:48:08 +03:00
Леонид Юрьев (Leonid Yuriev)
2cfcfcf91c
mdbx: merge branch erigon
into devel
.
2022-07-07 23:24:45 +03:00
Леонид Юрьев (Leonid Yuriev)
bc744a843a
mdbx: refine/speedup PAGETYPE()
.
2022-07-07 21:48:34 +03:00
Леонид Юрьев (Leonid Yuriev)
a812198c49
mdbx: rework/clone page_get()
to three for the cases: any, large, branch-leaf.
2022-07-07 21:48:30 +03:00
Леонид Юрьев (Leonid Yuriev)
ca3f188370
mdbx: extend CHECK_LEAF_TYPE()
by adding CC_OVERFLOW
.
2022-07-07 14:10:19 +03:00
Леонид Юрьев (Leonid Yuriev)
498514dae1
mdbx: remove unneeded CC_COPYING
.
2022-07-07 14:10:19 +03:00
Леонид Юрьев (Leonid Yuriev)
d4ef9bf233
mdbx: rework page validation/checking, add MDBX_VALIDATION
option (squashed).
...
Здесь основная часть изменений преобразующих отладочную проверку страниц
в регулярный и доступный пользователю осторожный/безопасный режим работы
с потенциально поврежденной БД.
Here the major part of the changes that transform a debugging check of
pages into a regular and user-accessible careful/safe mode for working
with a potentially corrupted database.
2022-07-07 14:10:09 +03:00
Леонид Юрьев (Leonid Yuriev)
6c5ff863ff
mdbx: remove pp_txnid4chk()
, preparing to rework of page checking/validation.
2022-07-05 15:32:09 +03:00
Леонид Юрьев (Leonid Yuriev)
b9835389f4
mdbx: add cache for pointers to last/steady meta-pages (off by default).
2022-07-02 22:52:31 +03:00