Леонид Юрьев (Leonid Yuriev)
23d236f70e
mdbx: добавление MDBX_opt_writethrough_threshold
и сопутствующие доработки.
2022-12-04 13:41:50 +03:00
Леонид Юрьев (Leonid Yuriev)
822952ef01
mdbx: внутреннее переименование MDBX_SYNC_KICK
(косметика).
2022-12-04 13:41:50 +03:00
Леонид Юрьев (Leonid Yuriev)
9f2d30c1a9
mdbx: изменение размера отображения внутри env_sync()
если это требуется для сброса данных на диск.
2022-12-04 13:41:32 +03:00
Леонид Юрьев (Leonid Yuriev)
163486fa3a
mdbx: добавление FIXME для MDBX_NOMETASYNC
.
2022-12-01 03:00:40 +03:00
Леонид Юрьев (Leonid Yuriev)
512e6dbd08
mdbx: отключение безусловного предпочтения записи через дескриптор с O_DSYNC
.
...
Требуется переработка = динамический выбор между write(O_DSYNC) и write()+fdatasync(),
в зависимости от количества записываемых линейных фрагментов.
2022-12-01 02:59:28 +03:00
Леонид Юрьев (Leonid Yuriev)
2776480f18
mdbx: оптимизация pnl_merge()
для случаев неперекрывающихся объединяемых списков.
2022-11-29 02:50:34 +03:00
Леонид Юрьев (Leonid Yuriev)
01a39e7dc2
mdbx: добавление и использование ptr_disp()
и ptr_dist()
.
...
Для уменьшения кастинга типов указателей и потенциальной нагрузки оптимизатора/кодогенератора алиасингом.
2022-11-29 02:50:34 +03:00
Леонид Юрьев (Leonid Yuriev)
8c74de57ea
mdbx: исправление txn_commit()
для случаев конкурентных и/или неверных вызовов при MDBX_ENABLE_PROFGC=1
.
2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
05804e2f30
mdbx: доработка/оптимизация page_retire_ex()
.
2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
7685b4080e
mdbx: исправление возврата и подсчета "грязных" страниц в режиме MDBX_WRITEMAP
.
...
Исправление регрессии после коммита db72763de049d6e4546f838277fe83b9081ad1de.
После отключения затратой поддержки списка "грязных" страниц логика
page_retire_ex() оказалась не полной и требовала доработки. Из-за этого
страницы добавленные или клонированные-и-измененные в текущей
транзакции, которые становились не нужными, не возвращались к доступным
для немедленного использования, а помещались в retired-список
становящихся доступными в последующих транзакциях.
В результате, в некоторых сценариях, особенно с интенсивным расщеплением
страниц из-за вставки ключей, происходило необоснованно сильное
потребление/выделение страниц БД. В свою очередь, это приводило к
использованию излишнего кол-ва страниц, увеличению GC, росту RSS и
размеру БД.
2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
c521a21f05
mdbx: перемещение mp_next
в заголовке страницы для отделения от mp_txnid
.
2022-11-28 23:56:42 +03:00
Леонид Юрьев (Leonid Yuriev)
07674ada47
mdbx: доработка подготовки резерва перед обновлением GC при включенном BigFoot.
2022-11-28 15:51:36 +03:00
Леонид Юрьев (Leonid Yuriev)
3757eb72f7
mdbx: экономия последовательностей при выделении одиночных страниц.
2022-11-28 15:51:36 +03:00
Леонид Юрьев (Leonid Yuriev)
30972102e5
mdbx: исправление сборки при MDBX_PNL_ASCENDING=1
.
2022-11-25 19:03:05 +03:00
Леонид Юрьев (Leonid Yuriev)
61eafe80c1
mdbx: использование https://libmdbx.dqdkfa.ru/dead-github для удаленных issues.
2022-11-23 01:18:25 +03:00
Леонид Юрьев (Leonid Yuriev)
a1333fc827
mdbx: fix SIGSEGV/invalid-deref/invalid-free inside env_close()
when mdbx_env_open()
failed in re-open case.
...
Thanks to [@leisim](https://t.me/leisim ) for [reporting](https://t.me/libmdbx/3946 ) this issue.
2022-11-23 00:57:02 +03:00
Леонид Юрьев (Leonid Yuriev)
da023657f5
mdbx: переработка внутренних флагов связанных с выделением страниц из GC.
2022-11-23 00:56:09 +03:00
Леонид Юрьев (Leonid Yuriev)
141cce0c0f
mdbx: использование size_t
для npages
(косметика).
2022-11-23 00:56:09 +03:00
Леонид Юрьев (Leonid Yuriev)
12ed2bcfbd
mdbx: использование единого курсора для поиска в GC.
2022-11-23 00:56:09 +03:00
Леонид Юрьев (Leonid Yuriev)
543e52730d
mdbx: доработка поддержки авто-слияния записей GC внутри page_alloc_slowpath()
.
2022-11-19 23:19:30 +03:00
Леонид Юрьев (Leonid Yuriev)
4a257133cb
mdbx: устранение несущественных предупреждений Coverity.
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
f73cd7a491
mdbx: упрощение page_alloc_slowpath()
.
...
Упрощение за счет удаления проверки флага `MDBX_ALLOC_GC`,
который всегда взведен при вызове page_alloc_slowpath().
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
3e05d1a427
mdbx: оптимизация page_copy()
для LEAF2
и добавление параноидального контроля от переполнения.
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
e518edcfed
mdbx: унифицирование инициализации mp_txnid
внутри page_dirty()
.
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
3563ed00e3
mdbx: использование не-спаренного курсора и gc_cursor_init()
внутри update_gc()
.
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
6c840cf58e
mdbx: подсчет грязных страниц в режиме MDBX_WRITEMAP
для статистики.
2022-11-19 19:36:30 +03:00
Леонид Юрьев (Leonid Yuriev)
3704433aa9
mdbx: минорное удаление мертвого/ненужного кода из page_alloc_slowpath()
.
2022-11-10 16:34:23 +03:00
Леонид Юрьев (Leonid Yuriev)
70e8006776
mdbx-docs: перенаправление github-ссылок на web-archive.
2022-11-10 15:54:31 +03:00
Леонид Юрьев (Leonid Yuriev)
2dfdac2821
mdbx-windows: повтор чтения заголовка при ERROR_LOCK_VIOLATION
.
2022-11-08 23:32:34 +03:00
Леонид Юрьев (Leonid Yuriev)
c270306580
mdbx-windows: уточнение проверок макросов MinGW и устранение предупреждений.
2022-11-08 20:39:44 +03:00
Леонид Юрьев (Leonid Yuriev)
3ee223514d
mdbx: очистка readers_refresh_flag
для page_alloc_slowpath()
.
2022-11-07 14:16:59 +03:00
Леонид Юрьев (Leonid Yuriev)
f7f94bb698
mdbx: чуть больше const
для прозрачности.
2022-11-07 14:16:35 +03:00
Леонид Юрьев (Leonid Yuriev)
f0c6aa4646
mdbx: workaround for false-positives from Valgrind bug.
2022-11-07 00:47:16 +03:00
Леонид Юрьев (Leonid Yuriev)
771c85a880
mdbx: уточнение txn_space_dirty
в соответствии с обновленным учетом грязных страниц.
2022-11-07 00:44:38 +03:00
Леонид Юрьев (Leonid Yuriev)
4f1f9141f4
mdbx: добавление MDBX_ENABLE_PGOP_STAT
и MDBX_ENABLE_PROFGC
во внутреннюю строку с опциями сборки.
2022-11-07 00:44:38 +03:00
Леонид Юрьев (Leonid Yuriev)
f680c99116
mdbx: переделка page_alloc_slowpath()
с добавлением профилирования GC.
2022-11-07 00:44:37 +03:00
Леонид Юрьев (Leonid Yuriev)
acaa1d82d9
mdbx: minor touch assertions for issue#7
.
...
https://gitflic.ru/project/erthink/libmdbx/issue/7
2022-11-05 14:06:00 +03:00
Леонид Юрьев (Leonid Yuriev)
47e7a646fd
mdbx: переделка отслеживания mlocks для игнорирования EINVAL
от madvise()
.
2022-11-05 14:06:00 +03:00
Леонид Юрьев (Leonid Yuriev)
d4e67d14ce
mdbx: исправление неожиданного MDBX_BUSY
из mdbx_env_set_option()
.
2022-11-03 17:23:32 +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)
753fa13048
mdbx: удаление лишних комментариев.
2022-10-22 11:12:52 +03:00
Леонид Юрьев (Leonid Yuriev)
8833dc6871
mdbx: костыль для обхода ошибок encryptfs.
...
Выяснилось что утилита `mdbx_copy` и функции `mdbx_env_copy()` могут
создавать ПРОБЛЕМЫ если целевой файл расположен в encryptfs (такая
файловая система в Linux).
При этом может быть четыре исхода в зависимости от версии ядра и
положения звезд на небе:
- всё хорошо;
- плохие данные в копии без возврата ошибок;
- ошибка EINVAL(22) при копировании;
- oops или зависание ядра, отвал смонтированной encryptfs и т.п.
В текущем понимании, причина обусловлена ошибой в коде fs, которая
проявляется при использовании системного вызова `copy_file_range`.
2022-10-22 01:38:33 +03:00
Леонид Юрьев (Leonid Yuriev)
6c986ce904
mdbx: костыль для старых версий stdatomic.h
, где макросы ATOMIC_*_LOCK_FREE
ошибочно переопределяются через функции.
2022-10-13 19:28:01 +03:00
Леонид Юрьев (Leonid Yuriev)
d94e65b870
mdbx: использование fcntl64(F_GETLK64/F_SETLK64/F_SETLKW64)
при наличии.
...
Это решает проблему срабатывания проверочного утверждения при сборке для
платформ где тип off_t шире соответствующих полей структуры flock,
используемой для блокировки файлов.
2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
5a45c4a210
mdbx-windows: удаление ненужного вызова LockFileEx()
внутри mdbx_env_copy()
.
2022-10-12 21:25:18 +03:00
Леонид Юрьев (Leonid Yuriev)
686c908a95
mdbx: более осторожное преобразование к типу mdbx_tid_t
для устранения предупреждений.
2022-10-12 21:25:18 +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)
5242c5bfdc
mdbx: улучшение эвристики включения авто-слияния записей GC.
2022-10-10 21:06:33 +03:00