After months of work, PMDK 1.9 is finally here :) This release mostly delivers performance improvements often requested by our users. Without further ado, here's the changelog:
This release:
- Switches the default instruction set for memcpy, memmove and memset implementations on x86 to AVX512, and introduces numerous performance improvements for those operations on AVX and SSE2 fallback paths.
- Optimizes transactional allocations in libpmemobj by avoiding one extraneous cache miss and reducing the amount of work required to perform a reservation.
- Introduces a new API in libpmemobj, pmemobj_tx_set_failure_behavior, that enables the application to control the behavior of aborting transactions.
- Improves performance of pool creation on Windows by avoiding expensive physical page allocation during file allocation.
- Stabilizes support for ppc64.
Other changes:
- pmem: mem[cpy|set] optimization when eADR is available • obj: detect msync failures in non-pmem variants of mem[cpy|move|set]
Notable bug fixes:
- core: fix Last_errormsg_get when NO_LIBPTHREAD is defined • pmem: read Unsafe Shutdown Count from region instead of interleave set • common: fix deep_flushes failing on platforms that don't need them • pmem: fix data cache flush on ppc64 • obj: fix run allocated recalculation
You can find more information about the release on our github page:
https://github.com/pmem/pmdk/releases/tag/1.9Piotr