Леонид Юрьев (Leonid Yuriev)
99c9bc2411
mdbx: использование clang-format-16.
2023-04-19 11:02:53 +03:00
Леонид Юрьев (Leonid Yuriev)
25e958f081
mdbx: устранение всех предупреждений статического анализатора MSVC (все несущественные или ложные).
2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
1684d17b0f
mdbx-windows: поддержка char-версии mdbx_env_get_path()
.
2023-02-11 00:26:06 +03:00
Леонид Юрьев (Leonid Yuriev)
c01f025bfa
mdbx: обновление года на 2023.
2023-01-16 16:32:02 +03:00
Леонид Юрьев (Leonid Yuriev)
525c4a55a4
mdbx: fix English typos.
...
Thanks to Dimitris Apostolou <dimitris.apostolou@icloud.com>
2023-01-10 14:16:08 +03:00
Леонид Юрьев (Leonid Yuriev)
c6b73c8a24
mdbx: добавление me_madv_threshold
и рефакторинг/упрощение.
...
Для уменьшения затрат на MDBX_SHRINK_ALLOWED.
2023-01-03 20:20:03 +03:00
Леонид Юрьев (Leonid Yuriev)
f0c2927fc7
mdbx: перенос LRU-отметок в теневые страницы по отрицательному смещению.
...
Это позволяет избавиться от повторного поиска в "гзязном" списке
страниц, уже находящихся в стеке курсора, для обнлвления LRU-отметок.
2023-01-03 19:28:11 +03:00
Леонид Юрьев (Leonid Yuriev)
bcddeaba9f
mdbx: изменение CMP2INT()
.
...
Решил вернуться к старому варианту. Вроде-бы все актуальные компиляторы
ведут себя с ним прилично (не хуже), а некоторые лучше.
2023-01-03 19:28:11 +03:00
Леонид Юрьев (Leonid Yuriev)
be05037906
mdbx: перемещение debug/assert-макросов перед атомиками.
2023-01-03 19:28:11 +03:00
Леонид Юрьев (Leonid Yuriev)
a06fe4f168
mdbx: переработка контроля "некогерентности" для уменьшения накладных расходов.
...
Существует проблема https://libmdbx.dqdkfa.ru/dead-github/issues/269 ,
которая проявляется только при специфической неупорядоченности внутри
ядра ОС, когда страницы, записанные в файл отображенный в память,
становятся видны в памяти посредством работы unified page cache:
- если записанная последней мета-страница "обгоняет" ранее записанные,
т.е. когда записанное в файл позже становится видимым в отображении
раньше, чем записанное ранее.
Теперь, вместо постоянной полной сверки записываемых страниц,
выполняется легковесная проверка при старте транзакций, с переключением
в режим "как раньше" при обнаружении проблемы.
В результате, в некоторых сценариях возвращается 5-10%
производительности, а в отдельных синтетических тестах до 30%.
2022-12-27 11:50:28 +03:00
Леонид Юрьев (Leonid Yuriev)
686145ec2e
mdbx: рефакторинг с удалением cursor_spill()
и MDBX_NOSPILL
.
2022-12-27 11:50:23 +03:00
Леонид Юрьев (Leonid Yuriev)
fe55f25665
mdbx: использование msync(MS_ASYNC)
для спиллинга в режиме MDBX_WRITEMAP вне зависимости от MDBX_AVOID_MSYNC
и MDBX_MMAP_USE_MS_ASYNC
.
2022-12-22 00:48:41 +03:00
Леонид Юрьев (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