Commit Graph

22 Commits

Author SHA1 Message Date
Леонид Юрьев (Leonid Yuriev)
c466dea250 mdbx: clean library core from using a float-point. 2025-11-05 01:20:09 +03:00
Leonid Yuriev
8fba09ceb6 mdbx: исправление опечатки в отладочном логировании. 2025-07-14 00:40:40 +03:00
Leonid Yuriev
c7b119af68 mdbx: исправление сравнения знакового и беззнакового значений. 2025-07-11 10:36:32 +03:00
Леонид Юрьев (Leonid Yuriev)
10bf63eb9a mdbx: замена части PNL-макросов функциями. 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
bb37c93dd5 mdbx: ранняя/не-отложенная очистка GC (начало). 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
75131c082b mdbx: добавление rkl_destructive_merge() и унификация порядка dst/src аргументов rkl_merge(). 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
3462bc116a mdbx: удаление known_continuous аргумента rkl_push(). 2025-06-28 00:34:04 +03:00
Леонид Юрьев (Leonid Yuriev)
800c96f22f mdbx: доработка перераспределения резерва при возврате страниц в GC.
В экстремальных случаях, масштабирование одного операнда и 32-бит не хватает для предотвращения потери значимости расчетного коэффициента.
Поэтому здесь реализован переход на фиксированную точку 32-точка-32 с одним 64-битным делением и двумя полными умножениями 32*32->64.

Для 32-битных систем можно сделать чуть легче, заменив 64-битую арифметику масштабированием (адаптивным сдвигом) обоих операндов, но пока не вижу в этом смысла.
2025-05-02 17:59:30 +03:00
Леонид Юрьев (Leonid Yuriev)
76e2544cc0 mdbx: доработки gc_handle_dense() для экстремально-редких случаев. 2025-04-29 08:39:18 +03:00
Леонид Юрьев (Leonid Yuriev)
06300de34e mdbx: подсказки для coverity. 2025-04-26 00:15:52 +03:00
Леонид Юрьев (Leonid Yuriev)
2b36fd5974 mdbx: новый код обновления GC. 2025-04-26 00:15:41 +03:00
Леонид Юрьев (Leonid Yuriev)
7074b94b2e mdbx: упрощение gcu_loose(). 2025-01-26 16:36:55 +03:00
Леонид Юрьев (Leonid Yuriev)
56d1dbef45 mdbx: обновление года в ©. 2025-01-15 19:36:07 +03:00
Леонид Юрьев (Leonid Yuriev)
314b8ce1f0 mdbx: переименование (косметика). 2025-01-15 00:50:57 +03:00
Леонид Юрьев (Leonid Yuriev)
225fb79eb2 mdbx: переименование repnl/retxl. 2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
ffb7918525 mdbx: понижение уровня логирования "reserve depleted" при обновлении GC. 2024-12-22 10:39:49 +03:00
Леонид Юрьев (Leonid Yuriev)
8867c2ddc2 mdbx: новые настройки clang-format (косметика). 2024-12-11 21:22:04 +03:00
Леонид Юрьев (Leonid Yuriev)
2194349644 mdbx: устранение зацикливания обновления GC при фиксации транзакций.
В продолжение 6c56ed97bb, включая исправление регрессов.
2024-11-22 20:14:45 +03:00
Леонид Юрьев (Leonid Yuriev)
6c56ed97bb mdbx: доработка/исправление и постоянная активация корректирующей обратной связи при обновлении GC.
При обновлении GC, с помещением/возвратом страниц, возникает рекурсивная
зависимость, так как страницы, необходимые для CoW-модификации GC и
размещения списков возвращаемых страниц, берутся/выделяются из этих-же
списков и/или из GC. Эта рекуррентная зависимость разрешается путём
подготовки необходимого запаса страниц и двух-стадийным заполнением
списков, с повторением всего цикла при изменении ситуации/расклада, плюс
применение некоторых эвристик и поправок. Кроме корректной работы,
принципиально важным тут является минимизация количества
повторов/рестартов процесса, в том числе исключение возможности
бесконечного зацикливания.

Существующая реализация многократно/итеративно дорабатывалась. Поэтому
она неплохо обкатана и стабильна, но одновременно сложна и запутана.

Тем не менее, до последнего момента для текущей реализации были известны
условия/сценарии, в которых сходимость итеративного процесса обновления
GC нарушалась и при фиксации транзакции возвращалась ошибка
MDBX_PROBLEM. Эти условия/сценарии очень специфичны и далеки от реальных
практических случаев, поэтому этот недостаток не мешал использованию
библиотеки.

Этим коммитом добавляется и активируется еще один механизм нацеленный на
улучшение сходимости и минимизацию повторов/рестартов. Суть механизма в
формировании и учета поправки, которая на следующем цикле позволит
учесть все переходные процессы/затраты вне зависимости от их природы, и
этим обеспечить моментальную сходимость.

В текущем понимании, описанный выше недостаток полностью
устраняется/исправляется этим коммитом.
2024-11-07 09:32:27 +03:00
Леонид Юрьев (Leonid Yuriev)
2b5d7ed29a mdbx: вывод номера транзакции при ситуации зацикливания внутри gc_update(). 2024-08-22 00:04:41 +03:00
Леонид Юрьев (Leonid Yuriev)
a2753c9ae1 mdbx: доработка gc_update() с отключением нового/нестабильного кода. 2024-06-19 14:18:18 +03:00
Леонид Юрьев (Leonid Yuriev)
3de3d425a1 mdbx: изменение лицензии и реструктуризация исходного кода. 2024-06-19 14:18:18 +03:00