mdbx: dynamically discarding unused tail pages of DB file.

Change-Id: I1a0eee50cd27de26521e65c9f7ea51a527a0424e
This commit is contained in:
Leonid Yuriev
2019-08-28 04:57:07 +03:00
parent 327e5feb97
commit 51e7159f36
4 changed files with 82 additions and 34 deletions

View File

@@ -200,13 +200,15 @@ typedef pthread_mutex_t mdbx_fastmutex_t;
#define MADV_DONTDUMP MADV_NOCORE
#endif /* MADV_NOCORE -> MADV_DONTDUMP */
#ifndef MADV_REMOVE_OR_FREE
#ifndef MADV_REMOVE_OR_FREE_OR_DONTNEED
#ifdef MADV_REMOVE
#define MADV_REMOVE_OR_FREE MADV_REMOVE
#define MADV_REMOVE_OR_FREE_OR_DONTNEED MADV_REMOVE
#elif defined(MADV_FREE)
#define MADV_REMOVE_OR_FREE MADV_FREE
#define MADV_REMOVE_OR_FREE_OR_DONTNEED MADV_FREE
#elif defined(MADV_DONTNEED)
#define MADV_REMOVE_OR_FREE_OR_DONTNEED MADV_DONTNEED
#endif
#endif /* MADV_REMOVE_OR_FREE */
#endif /* MADV_REMOVE_OR_FREE_OR_DONTNEED */
#if defined(i386) || defined(__386) || defined(__i386) || defined(__i386__) || \
defined(i486) || defined(__i486) || defined(__i486__) || \
@@ -765,6 +767,10 @@ typedef BOOL(WINAPI *MDBX_PrefetchVirtualMemory)(
PWIN32_MEMORY_RANGE_ENTRY VirtualAddresses, ULONG Flags);
extern MDBX_PrefetchVirtualMemory mdbx_PrefetchVirtualMemory;
typedef DWORD(WINAPI *MDBX_DiscardVirtualMemory)(PVOID VirtualAddress,
SIZE_T Size);
extern MDBX_DiscardVirtualMemory mdbx_DiscardVirtualMemory;
#endif /* Windows */
/*----------------------------------------------------------------------------*/