Skip to content

Releases: pmem/pmdk

PMDK Version 1.6

26 Mar 14:52
Compare
Choose a tag to compare

This release:

  • Enables unsafe shutdown and bad block detection on Linux
    on systems with libndctl >= 63. It is expected that systems with
    libndctl >= 63 has necessary kernel support (Linux >= 4.20).
    However, due to bugs in libndctl = 63 and Linux = 4.20, it is
    recommended to use libndctl >= 64.1 and Linux >= 5.0.4.
    On systems with libndctl < 63, PMDK uses old superuser-only
    interfaces. Support for old or new interfaces is chosen at BUILD
    time.
  • Introduces arena control interface in pmemobj, allowing applications
    to tweak performance and scalability of heap operations. See
    pmemobj_ctl_get man page ("heap" namespace) for details.
  • Introduces copy_on_write mode, which allows testing applications
    using pmemobj with pmreorder. See pmemobj_ctl_get man page
    ("copy_on_write" namespace) for details.

Other changes:

  • allocate file space when creating a pool on existing file
    (pmem/issues#167)
  • initial support for testing using fault injection
  • initial Python test framework
  • improve performance of pmemobj_pool_by_ptr

Bug fixes:

  • common: work around tmpfs bug during pool creation
    (pmem/issues#1018)
  • pool: race-free pmempool create --max-size
  • obj: don't modify remote pools in pmemobj_check

PMDK Version 1.5.1

08 Mar 20:54
Compare
Choose a tag to compare
This release fixes minor bugs and improves compatibility with newer
tool chains.

Notable bug fixes:
- common: make detection of device-dax instances more robust
- obj: fix pmemobj_check for pools with some sizes
- obj: don't use anon struct in an union (public header)
- obj: fix pmemobj_tx_lock error handling
- obj: don't use braces in an expression with clang (public header)
- obj: suppress pmemcheck warnings for statistics
- pmreorder: fix markers nontype issue

PMDK Version 1.5

26 Oct 16:18
Compare
Choose a tag to compare

This release has had two major focus areas - performance and RAS
(Reliability, Availability and Serviceability). Beyond that, it introduces
new APIs, new tools and many other improvements. As a side effect
of performance optimizations, the libpmemobj on-media layout had to be
changed, which means that old pools have to be converted using pmdk-convert.
libpmemcto experiment has been finished and removed from the tree.

For more details, please see http://pmem.io/2018/10/22/release-1-5.html.

New features:

  • common: unsafe shutdown detection (SDS)
  • common: detection and repair of uncorrectable memory errors (bad blocks)
  • pool: new "feature" subcommand for enabling and disabling detection of
    unsafe shutdown and uncorrectable memory errors
  • common: auto flush detection on Windows (on Linux since 1.4)
  • pmreorder: new tool for verification of persistent memory algorithms
  • obj: new on media layout
  • pmem/obj: new flexible memcpy|memmove|memset API
  • obj: new flushing APIs: pmemobj_xpersist, pmemobj_xflush (PMEMOBJ_F_RELAXED)
  • rpmem: new flag RPMEM_PERSIST_RELAXED for rpmem_persist
  • obj: lazily initialized volatile variables (pmemobj_volatile) (EXPERIMENTAL)
  • obj: allocation classes with alignment
  • obj: new action APIs: pmemobj_defer_free, POBJ_XRESERVE_NEW,
    POBJ_XRESERVE_ALLOC
  • blk/log: new "ctl" API

Optimizations:

  • obj: major performance improvements for AEP NVDIMMs
  • obj: better space utilization for small allocations
  • common: call msync only on one page for deep drain

Other changes:

Bug fixes:

  • obj: fix type numbers for pmemobj_list_insert_new
  • pmem: fix inconsistency in pmem_is_pmem
  • common: fix windows mmap destruction
  • daxio: fix checking and adjusting length
  • common: fix long paths support on Windows

PMDK Version 1.4.2

16 Aug 14:46
Compare
Choose a tag to compare
* Version 1.4.2

This release is a small one and fixes the way PMDK reports its version via pkg-config files.

Bug fixes:
	- common: fix reported version
	- doc: use single "-" in NAME section (pmem/issues#914)

PMDK Version 1.4.1

29 Jun 16:25
Compare
Choose a tag to compare
* Version 1.4.1

In 1.4 development cycle, we created new daxio utility
(command line tool for performing I/O on Device-DAX), but due
to some complications we had to disable it just before
the 1.4 release.
In 1.4.1 we finally enable it. Daxio depends on ndctl v60.1.

Bug fixes:
- pmem: fix clflush bit position
- obj: fix invalid OOMs when zones are fully packed
- obj: don't register undo logs twice in memcheck
- pool: fix bash completion script
- pool: fix incorrect errno after transform
- obj: fix clang-7 compilation
- obj: test for msync failures in non-pmem path
- doc: add missing field to alloc class entry point
- common: (win) fix timed locks
- common: provide src version in GitHub tarballs
- common: fix free function in tls
- common: fix double close
- test: allow testing installed libraries
- test: fix Valgrind vs stripped libraries issue
- test: fix dependencies between tests and tools
- test: fix races on make pcheck -jN
- test: use libvmmalloc.so.1
- test: fix incorrect number of required dax devices
- test: add suppression for leak in ld.so
- test: fail if memcheck detects overlapping chunks
- test: simplify time measurements in obj_sync
- benchmark: check lseek() return value
- examples: catch exceptions in map_cli

PMDK Version 1.4

29 Mar 17:23
6c513b7
Compare
Choose a tag to compare
* Version 1.4
This is the first release of PMDK under a new name.
The NVML project has been renamed to PMDK (Persistent Memory
Development Kit).  This is only the project/repo name change
and it does not affect the names of the PMDK packages.
See this blog article for more details on the reasons and
impact of the name change:
http://pmem.io/2017/12/11/NVML-is-now-PMDK.html

New features:
- common: support for concatenated Device-DAX devices
  with 2M/1G alignment
- common: add support for MAP_SYNC flag
- common: always enable Valgrind instrumentation (#292)
- common: pool set options / headerless pools
- pmem: add support for "deep flush" operation
- rpmem: add rpmem_deep_persist
- doc: split man pages and add per-function aliases (#385)

Optimizations:
- pmem: skip CPU cache flushing when eADR is available
  (no Windows support yet)
- pmem: add AVX512F support in pmem_memcpy/memset (#656)

Bug fixes:
- common: fix library dependencies (#767, RHBZ #1539564)
- common: use rpm-config CFLAGS/LDFLAGS when building packages
  (#768, RHBZ #1539564)
- common: do not unload librpmem on close (#776)
- common: fix NULL check in os_fopen (#813)
- common: fix missing version in .pc files
- obj: fix cancel of huge allocations (#726)
- obj: fix error handling in pmemobj_open (#750)
- obj: validate pe_offset in pmemobj_list_* APIs (#772)
- obj: fix add_range with size == 0 (#781)
- log: add check for negative iovcnt (#690)
- rpmem: limit maximum number of lanes (#609)
- rpmem: change order of memory registration (#655)
- rpmem: fix removing remote pools (#721)
- pool: fix error handling (#643)
- pool: fix sync with switched parts (#730)
- pool: fix sync with missing replica (#731)
- pool: fix detection of Device DAX size (#805)
- pool: fail pmempool_sync if there are no replicas (#816)
- benchmark: fix calculating standard deviation (#318)
- doc: clarify pmem_is_pmem behavior (#719)
- doc: clarify pmemobj_root behavior (#733)

Experimental features:
- common: port PMDK to FreeBSD
- common: add experimental support for aarch64
- obj: introduce allocation classes
- obj: introduce two-phase heap ops (reserve/publish) (#380, #415)
- obj: provide basic heap statistics (#676)
- obj: implement run-time pool extending (#382)
- cto: add close-to-open persistence library (#192)

The following features are disabled by default, until
ndctl v60.0 is available:
- daxio: add utility to perform I/O on Device-DAX
- RAS: unsafe shutdown detection/handling

NVML Version 1.3.1

21 Dec 15:48
Compare
Choose a tag to compare
* Version 1.3.1
Bug fixes:
- rpmem: fix issues reported by Coverity
- rpmem: fix read error handling
- rpmem: add fip monitor (#597)
- test: add rpmemd termination handling test
- cpp: fix pop.persist function in obj_cpp_ptr
- rpmem: return failure for a failed allocation
- rpmem: fix potential memory leak
- common: fix available rm options msg (#651)
- pool: fix pmempool_get_max_size
- obj: fix potential deadlock during realloc (#635, #636, #637)
- obj: initialize TLS data
- rpmem: fix cleanup if fork() failed (#634)
- obj: fix bogus OOM after exhausting first zone

NVML Version 1.3

18 Jul 11:20
Compare
Choose a tag to compare
* Version 1.3
This release introduces some useful features and optimizations
in libpmemobj.  Most of them are experimental and controlled by
the new pmemobj_ctl APIs.  For details, please check the feature
requests identified by the issue numbers listed next to the items below.

Other important changes are related to performance tuning and
stabilization of librpmem library, which is used by libpmemobj to get
remote access to persistent memory and to provide basic data replication
over RDMA.  The librpmem is still considered experimental.

NVML for Windows is feature complete (except for libvmmalloc).
This release includes the support for Unicode, long paths and
the NVML installer.

New features:
- common: add support for concatenated DAX Devices
- common: add Unicode support on Windows
- common: add long path support on Windows
- common: add NVML installer for Windows
- pmem: make pmem_is_pmem() true for Device DAX only
- obj: add pmemobj_wcsdup()/pmemobj_tx_wcsdup() APIs
- obj: export non-inlined pmemobj_direct()
- obj: add PMEMOBJ_NLANES env variable
- cpp: introduce the allocator
- cpp: add wstring version of C++ entry points
- vmem: add vmem_wcsdup() API entry
- pool: add pmempool_rm() function (#307)
- pool: add --force flag for create command (#529)
- benchmark: add a minimal execution time option
- benchmark: add thread affinity option
- benchmark: print 99% and 99.9% percentiles
- doc: separate Linux/Windows version of web-based man pages

Optimizations:
- obj: cache _pobj_cached_pool in pmemobj_direct()
- obj: optimize thread utilization of buckets
- obj: stop grabbing a lock when querying pool ptr
- rpmem: use multiple endpoints

Bug fixes:
- common: fix issues reported by static code analyzers
- pmem: fix mmap() implementation on Windows
- pmem: fix mapping addr/length alignment on Windows
- pmem: fix PMEM_MMAP_HINT implementation on Windows
- pmem: fix pmem_is_pmem() on invalid memory ranges
- pmem: fix wrong is_pmem returned by pmem_map_file()
- pmem: fix mprotect() for private mappings on Windows
- pmem: modify pmem_is_pmem() behavior for len==0
- obj: add failsafe to prevent allocs in constructor
- cpp: fix swap implementation
- cpp: fix sync primitives' constructors
- cpp: fix wrong pointer type in the allocator
- cpp: return persistent_ptr::swap to being public
- pool: treat invalid answer as 'n'
- pool: unify flags value for dry run
- pool: transform for remote replicas
- rpmem: persistency method detection
- benchmark: fix time measurement

Experimental features/optimizations:
- obj: pmemobjctl - statistics and control submodule (#194, #211)
- obj: zero-overhead allocations - customizable alloc header (#347)
- obj: flexible run size index (#377)
- obj: dynamic range cache (#378)
- obj: asynchronous post-commit (#381)
- obj: configurable object cache (#515)
- obj: add cache size and threshold tx params
- obj: add CTL var for suppressing expensive checks
- rpmem: add rpmem_set_attr() API entry
- rpmem: switch to libfabric v1.4.2

NVML Version 1.2.3

12 Jun 10:46
Compare
Choose a tag to compare
* Version 1.2.3
Bug fixes:
- test: extend timeout for selected tests
- test: reduce number of operations in obj_tx_mt
- test: define cfree() as free() in vmmalloc_calloc

Other changes:
- common: move Docker images to new repo

NVML Version 1.2.2

15 Apr 18:02
Compare
Choose a tag to compare
* Version 1.2.2
Bug fixes:
- pmempool: fix mapping type in pool_params_parse
- test: limit number of arenas in vmem_stats
- test: do not run pool_lock test as root
- common: fix pkg-config files
- common: fix building packages for Debian