Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						ab55016599 
					 
					
						
						
							
							mdbx: устранение ложного срабатывания assert внутри dpl_reserve().  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						f0c2927fc7 
					 
					
						
						
							
							mdbx: перенос LRU-отметок в теневые страницы по отрицательному смещению.  
						
						... 
						
						
						
						Это позволяет избавиться от повторного поиска в "гзязном" списке
страниц, уже находящихся в стеке курсора, для обнлвления LRU-отметок. 
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						8519fde741 
					 
					
						
						
							
							mdbx: микро-оптимизация cmp_reverse().  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						bcddeaba9f 
					 
					
						
						
							
							mdbx: изменение CMP2INT().  
						
						... 
						
						
						
						Решил вернуться к старому варианту. Вроде-бы все актуальные компиляторы
ведут себя с ним прилично (не хуже), а некоторые лучше. 
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						5317e516d2 
					 
					
						
						
							
							mdbx: микро-оптимизация cmp_int().  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						be05037906 
					 
					
						
						
							
							mdbx: перемещение debug/assert-макросов перед атомиками.  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						f53dc70038 
					 
					
						
						
							
							mdbx: добавление eq_fast() для сравнений на (не)равенство.  
						
						... 
						
						
						
						Цель в том, чтобы уменьшить кол-во условных и безусловных переходов при
сравнениях равно/неравно, в том числе избегать вызовов задаваемых
кастомных компаратаров и memcmp() для коротких ключей/значений. 
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						2322138a8e 
					 
					
						
						
							
							mdbx: корректировка сообщения об ошибке.  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						37867a0b84 
					 
					
						
						
							
							mdbx: не обходим проверку когерентности в режиме восстановления.  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						f0c43fb24a 
					 
					
						
						
							
							mdbx: без необходимости не объединяем не-грязные страницы в дереве.  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						adf433a1bc 
					 
					
						
						
							
							mdbx-make: доработка макро для bench-целей.  
						
						
						
						
					 
					
						2023-01-03 19:28:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						48bd3fc4c8 
					 
					
						
						
							
							mdbx: упрощение default_prefault_write().  
						
						
						
						
					 
					
						2022-12-31 23:35:53 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						7ffea70087 
					 
					
						
						
							
							mdbx: доработка loose-пути в page_retire().  
						
						
						
						
					 
					
						2022-12-31 23:35:53 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						ef460a9229 
					 
					
						
						
							
							mdbx: выделение cursor_get() для уменьшения кол-ва проверок.  
						
						
						
						
					 
					
						2022-12-29 23:03:12 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						df63ff0e7e 
					 
					
						
						
							
							mdbx: выделение cursor_del() для уменьшения кол-ва проверок.  
						
						
						
						
					 
					
						2022-12-29 23:03:12 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						66a5704949 
					 
					
						
						
							
							mdbx: выделение cursor_put() для уменьшения кол-ва проверок.  
						
						
						
						
					 
					
						2022-12-29 19:26:50 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						61d21b0a02 
					 
					
						
						
							
							mdbx: не трогать LRU и dbi в cursor_touch() для вложенных курсоров.  
						
						
						
						
					 
					
						2022-12-29 01:20:04 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						0941319940 
					 
					
						
						
							
							mdbx: парочка незначительных likely.  
						
						
						
						
					 
					
						2022-12-29 01:20:04 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						bb2e3967eb 
					 
					
						
						
							
							mdbx: уменьшение кол-ва вызовов realloc().  
						
						
						
						
					 
					
						2022-12-27 11:50:28 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						e458af602e 
					 
					
						
						
							
							mdbx: устранение ненужных условий в отладке (несущественно).  
						
						
						
						
					 
					
						2022-12-27 11:50:28 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						d29acf4fdc 
					 
					
						
						
							
							mdbx: актуализация bits.md (внутренний справочник).  
						
						
						
						
					 
					
						2022-12-27 11:50:28 +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) 
							
						 
					 
					
						
						
							
						
						0498114469 
					 
					
						
						
							
							mdbx: обнуление информации о задержках для невалидных транзакций в mdbx_txn_commit_ex().  
						
						
						
						
					 
					
						2022-12-27 11:50:28 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						85828f677a 
					 
					
						
						
							
							mdbx: пересоздание пустой MAIN_DBI при необходимости.  
						
						
						
						
					 
					
						2022-12-27 11:50:28 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						9cbbdfa025 
					 
					
						
						
							
							mdbx: добавление const к аргументам функций получения и контроля страниц.  
						
						
						
						
					 
					
						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) 
							
						 
					 
					
						
						
							
						
						e9a2042df1 
					 
					
						
						
							
							mdbx: добавление MDBX_NOTHROW_PURE_FUNCTION к некоторым функциям.  
						
						
						
						
					 
					
						2022-12-22 00:48:41 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						fd98a635d9 
					 
					
						
						
							
							mdbx: не возвращаем ошибку при попытке закрытия MAIN_DBI.  
						
						
						
						
					 
					
						2022-12-22 00:48:41 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						722c6ecf43 
					 
					
						
						
							
							mdbx: use attribute(tls_model(local-dynamic)) as workaround for CLANG bug.  
						
						
						
						
					 
					
						2022-12-22 00:48:40 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						44493c6448 
					 
					
						
						
							
							mdbx-tools: поддержка не-печатных имен subDb в mdbx_chk.  
						
						
						
						
					 
					
						2022-12-22 00:48:40 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						7011743262 
					 
					
						
						
							
							mdbx: поддержка не-печатных имен для subDb.  
						
						
						
						
					 
					
						2022-12-21 22:29:03 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						b247b081af 
					 
					
						
						
							
							mdbx: переработка LRU-отметок для спиллинга.  
						
						... 
						
						
						
						Два существенных изменения:
1. Инкремент и обновление LRU происходит при изменении страницы,
   но не при доступе к ней.
2. Устранен регресс, из-за которого страницы в стеке курсора хоть
   помечались, но могли быть ошибочно пролиты на диск,
   так как dpl_age() возвращал не 0. 
						
						
					 
					
						2022-12-21 22:29:03 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						bf2f3bfbbf 
					 
					
						
						
							
							mdbx: устранение чтения освобожденной памяти и жалоб ASAN при спиллинге.  
						
						... 
						
						
						
						Вероятность проявляния проблемы крайне низкая, но стало воспроизводиться после доработки спллинга. 
						
						
					 
					
						2022-12-21 22:29:03 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						ffdff3f831 
					 
					
						
						
							
							mdbx: обновление ChangeLog.  
						
						
						
						
					 
					
						2022-12-14 10:58:31 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						07f2ccb752 
					 
					
						
						
							
							mdbx: добавление опции MDBX_MMAP_USE_MS_ASYNC.  
						
						... 
						
						
						
						Суть в избавлении от лишнего вызова msync(MS_ASYNC) в режимах
MDBX_WRITEMAP+MDBX_SAFE_NOSYNC и т.п.
Гипотетически могут быть системы/платформы, на которых изменения в
разделяемой памяти не видны другим процессам до вызова msync(MS_ASYNC)
и/или до этого вызова не будет инициироваться вытеснение/запись таких
страниц на диск.
Поэтому использование msync(MS_ASYNC) вынесено под опцию
MDBX_MMAP_USE_MS_ASYNC, которая по-умолчанию включена только на системах
с MDBX_MMAP_INCOHERENT_FILE_WRITE или MDBX_MMAP_INCOHERENT_CPU_CACHE. 
						
						
					 
					
						2022-12-14 02:05:52 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						23fedf6bba 
					 
					
						
						
							
							mdbx: контроль значений макросов-опций сборки.  
						
						
						
						
					 
					
						2022-12-13 19:44:36 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						167011c2d5 
					 
					
						
						
							
							mdbx: обновление ChangeLog.  
						
						
						
						
					 
					
						2022-12-12 21:29:10 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						245a782912 
					 
					
						
						
							
							mdbx: не игнорируем ошибки при открытии дескриптора с O_DSYNC.  
						
						
						
						
					 
					
						2022-12-12 18:54:03 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						957c99d86f 
					 
					
						
						
							
							mdbx: добавление MDBX_opt_prefault_write_enable вместо MDBX_ENABLE_PREFAULT.  
						
						
						
						
					 
					
						2022-12-12 18:54:03 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						b959e217b1 
					 
					
						
						
							
							mdbx: рефакторинг обработки установки опций в значения по-умолчанию.  
						
						
						
						
					 
					
						2022-12-12 18:54:03 +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) 
							
						 
					 
					
						
						
							
						
						69f7d6cdd8 
					 
					
						
						
							
							mdbx-tools: несущественный рефакторинг mdbx_chk.  
						
						
						
						
					 
					
						2022-12-11 20:33:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						0884f28f85 
					 
					
						
						
							
							mdbx-tools: ускорение работы mdbx_chk при обработке пользовательских записей в @MAIN.  
						
						
						
						
					 
					
						2022-12-11 20:33:11 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						1c93cff825 
					 
					
						
						
							
							mdbx: дополнительные условия для prefault-write.  
						
						
						
						
					 
					
						2022-12-11 00:14:40 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						1ae6a398ed 
					 
					
						
						
							
							mdbx-windows: исправление утечки overlapped-дескриптора.  
						
						
						
						
					 
					
						2022-12-10 14:44:15 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						cd0ed2f155 
					 
					
						
						
							
							mdbx: обновление ChangeLog.  
						
						
						
						
					 
					
						2022-12-10 01:20:27 +03:00 
						 
				 
			
				
					
						
							
							
								Леонид Юрьев (Leonid Yuriev) 
							
						 
					 
					
						
						
							
						
						4ee8fff305 
					 
					
						
						
							
							mdbx: +1 к подготавливаемому резерву в вырожденных случаях перед обновлением GC.  
						
						
						
						
					 
					
						2022-12-09 19:18:17 +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