|
Packit |
95bb47 |
Fri Oct 26 2018 Marcin Ślusarz <marcin.slusarz@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.5
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
This release has had two major focus areas - performance and RAS
|
|
Packit |
95bb47 |
(Reliability, Availability and Serviceability). Beyond that, it introduces
|
|
Packit |
95bb47 |
new APIs, new tools and many other improvements. As a side effect
|
|
Packit |
95bb47 |
of performance optimizations, the libpmemobj on-media layout had to be
|
|
Packit |
95bb47 |
changed, which means that old pools have to be converted using pmdk-convert.
|
|
Packit |
95bb47 |
libpmemcto experiment has been finished and removed from the tree.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
For more details, please see http://pmem.io/2018/10/22/release-1-5.html.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
New features:
|
|
Packit |
95bb47 |
- common: unsafe shutdown detection (SDS)
|
|
Packit |
95bb47 |
- common: detection and repair of uncorrectable memory errors (bad blocks)
|
|
Packit |
95bb47 |
- pool: new "feature" subcommand for enabling and disabling detection of
|
|
Packit |
95bb47 |
unsafe shutdown and uncorrectable memory errors
|
|
Packit |
95bb47 |
- common: auto flush detection on Windows (on Linux since 1.4)
|
|
Packit |
95bb47 |
- pmreorder: new tool for verification of persistent memory algorithms
|
|
Packit |
95bb47 |
- obj: new on media layout
|
|
Packit |
95bb47 |
- pmem/obj: new flexible memcpy|memmove|memset API
|
|
Packit |
95bb47 |
- obj: new flushing APIs: pmemobj_xpersist, pmemobj_xflush (PMEMOBJ_F_RELAXED)
|
|
Packit |
95bb47 |
- rpmem: new flag RPMEM_PERSIST_RELAXED for rpmem_persist
|
|
Packit |
95bb47 |
- obj: lazily initialized volatile variables (pmemobj_volatile) (EXPERIMENTAL)
|
|
Packit |
95bb47 |
- obj: allocation classes with alignment
|
|
Packit |
95bb47 |
- obj: new action APIs: pmemobj_defer_free, POBJ_XRESERVE_NEW,
|
|
Packit |
95bb47 |
POBJ_XRESERVE_ALLOC
|
|
Packit |
95bb47 |
- blk/log: new "ctl" API
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Optimizations:
|
|
Packit |
95bb47 |
- obj: major performance improvements for AEP NVDIMMs
|
|
Packit |
95bb47 |
- obj: better space utilization for small allocations
|
|
Packit |
95bb47 |
- common: call msync only on one page for deep drain
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Other changes:
|
|
Packit |
95bb47 |
- cto: removed
|
|
Packit |
95bb47 |
- obj: remove actions limit
|
|
Packit |
95bb47 |
- common: new dependency on libndctl on Linux
|
|
Packit |
95bb47 |
- pmempool: "convert" subcommand is now a wrapper around pmdk-convert
|
|
Packit |
95bb47 |
(please see https://github.com/pmem/pmdk-convert)
|
|
Packit |
95bb47 |
- obj: C++ bindings have been moved to a new repository
|
|
Packit |
95bb47 |
(please see https://github.com/pmem/libpmemobj-cpp)
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- obj: fix type numbers for pmemobj_list_insert_new
|
|
Packit |
95bb47 |
- pmem: fix inconsistency in pmem_is_pmem
|
|
Packit |
95bb47 |
- common: fix windows mmap destruction
|
|
Packit |
95bb47 |
- daxio: fix checking and adjusting length
|
|
Packit |
95bb47 |
- common: fix long paths support on Windows
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu Aug 16 2018 Marcin Ślusarz <marcin.slusarz@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.4.2
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
This release fixes the way PMDK reports its version via
|
|
Packit |
95bb47 |
pkg-config files.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- common: fix reported version
|
|
Packit |
95bb47 |
- doc: use single "-" in NAME section (pmem/issues#914)
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Fri Jun 29 2018 Marcin Ślusarz <marcin.slusarz@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.4.1
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
In 1.4 development cycle, we created new daxio utility
|
|
Packit |
95bb47 |
(command line tool for performing I/O on Device-DAX), but due
|
|
Packit |
95bb47 |
to some complications we had to disable it just before
|
|
Packit |
95bb47 |
the 1.4 release.
|
|
Packit |
95bb47 |
In 1.4.1 we finally enable it. Daxio depends on ndctl v60.1.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- pmem: fix clflush bit position
|
|
Packit |
95bb47 |
- obj: fix invalid OOMs when zones are fully packed
|
|
Packit |
95bb47 |
- obj: don't register undo logs twice in memcheck
|
|
Packit |
95bb47 |
- pool: fix bash completion script
|
|
Packit |
95bb47 |
- pool: fix incorrect errno after transform
|
|
Packit |
95bb47 |
- obj: fix clang-7 compilation
|
|
Packit |
95bb47 |
- obj: test for msync failures in non-pmem path
|
|
Packit |
95bb47 |
- doc: add missing field to alloc class entry point
|
|
Packit |
95bb47 |
- common: (win) fix timed locks
|
|
Packit |
95bb47 |
- common: provide src version in GitHub tarballs
|
|
Packit |
95bb47 |
- common: fix free function in tls
|
|
Packit |
95bb47 |
- common: fix double close
|
|
Packit |
95bb47 |
- test: allow testing installed libraries
|
|
Packit |
95bb47 |
- test: fix Valgrind vs stripped libraries issue
|
|
Packit |
95bb47 |
- test: fix dependencies between tests and tools
|
|
Packit |
95bb47 |
- test: fix races on make pcheck -jN
|
|
Packit |
95bb47 |
- test: use libvmmalloc.so.1
|
|
Packit |
95bb47 |
- test: fix incorrect number of required dax devices
|
|
Packit |
95bb47 |
- test: add suppression for leak in ld.so
|
|
Packit |
95bb47 |
- test: fail if memcheck detects overlapping chunks
|
|
Packit |
95bb47 |
- test: simplify time measurements in obj_sync
|
|
Packit |
95bb47 |
- benchmark: check lseek() return value
|
|
Packit |
95bb47 |
- examples: catch exceptions in map_cli
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu Mar 29 2018 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.4
|
|
Packit |
95bb47 |
This is the first release of PMDK under a new name.
|
|
Packit |
95bb47 |
The NVML project has been renamed to PMDK (Persistent Memory
|
|
Packit |
95bb47 |
Development Kit). This is only the project/repo name change
|
|
Packit |
95bb47 |
and it does not affect the names of the PMDK packages.
|
|
Packit |
95bb47 |
See this blog article for more details on the reasons and
|
|
Packit |
95bb47 |
impact of the name change:
|
|
Packit |
95bb47 |
http://pmem.io/2017/12/11/NVML-is-now-PMDK.html
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
New features:
|
|
Packit |
95bb47 |
- common: support for concatenated Device-DAX devices
|
|
Packit |
95bb47 |
with 2M/1G alignment
|
|
Packit |
95bb47 |
- common: add support for MAP_SYNC flag
|
|
Packit |
95bb47 |
- common: always enable Valgrind instrumentation (#292)
|
|
Packit |
95bb47 |
- common: pool set options / headerless pools
|
|
Packit |
95bb47 |
- pmem: add support for "deep flush" operation
|
|
Packit |
95bb47 |
- rpmem: add rpmem_deep_persist
|
|
Packit |
95bb47 |
- doc: split man pages and add per-function aliases (#385)
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Optimizations:
|
|
Packit |
95bb47 |
- pmem: skip CPU cache flushing when eADR is available
|
|
Packit |
95bb47 |
(no Windows support yet)
|
|
Packit |
95bb47 |
- pmem: add AVX512F support in pmem_memcpy/memset (#656)
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- common: fix library dependencies (#767, RHBZ #1539564)
|
|
Packit |
95bb47 |
- common: use rpm-config CFLAGS/LDFLAGS when building packages
|
|
Packit |
95bb47 |
(#768, RHBZ #1539564)
|
|
Packit |
95bb47 |
- common: do not unload librpmem on close (#776)
|
|
Packit |
95bb47 |
- common: fix NULL check in os_fopen (#813)
|
|
Packit |
95bb47 |
- common: fix missing version in .pc files
|
|
Packit |
95bb47 |
- obj: fix cancel of huge allocations (#726)
|
|
Packit |
95bb47 |
- obj: fix error handling in pmemobj_open (#750)
|
|
Packit |
95bb47 |
- obj: validate pe_offset in pmemobj_list_* APIs (#772)
|
|
Packit |
95bb47 |
- obj: fix add_range with size == 0 (#781)
|
|
Packit |
95bb47 |
- log: add check for negative iovcnt (#690)
|
|
Packit |
95bb47 |
- rpmem: limit maximum number of lanes (#609)
|
|
Packit |
95bb47 |
- rpmem: change order of memory registration (#655)
|
|
Packit |
95bb47 |
- rpmem: fix removing remote pools (#721)
|
|
Packit |
95bb47 |
- pool: fix error handling (#643)
|
|
Packit |
95bb47 |
- pool: fix sync with switched parts (#730)
|
|
Packit |
95bb47 |
- pool: fix sync with missing replica (#731)
|
|
Packit |
95bb47 |
- pool: fix detection of Device DAX size (#805)
|
|
Packit |
95bb47 |
- pool: fail pmempool_sync if there are no replicas (#816)
|
|
Packit |
95bb47 |
- benchmark: fix calculating standard deviation (#318)
|
|
Packit |
95bb47 |
- doc: clarify pmem_is_pmem behavior (#719)
|
|
Packit |
95bb47 |
- doc: clarify pmemobj_root behavior (#733)
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Experimental features:
|
|
Packit |
95bb47 |
- common: port PMDK to FreeBSD
|
|
Packit |
95bb47 |
- common: add experimental support for aarch64
|
|
Packit |
95bb47 |
- obj: introduce allocation classes
|
|
Packit |
95bb47 |
- obj: introduce two-phase heap ops (reserve/publish) (#380, #415)
|
|
Packit |
95bb47 |
- obj: provide basic heap statistics (#676)
|
|
Packit |
95bb47 |
- obj: implement run-time pool extending (#382)
|
|
Packit |
95bb47 |
- cto: add close-to-open persistence library (#192)
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
The following features are disabled by default, until
|
|
Packit |
95bb47 |
ndctl v60.0 is available:
|
|
Packit |
95bb47 |
- daxio: add utility to perform I/O on Device-DAX
|
|
Packit |
95bb47 |
- RAS: unsafe shutdown detection/handling
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Wed Dec 20 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.3.1
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- rpmem: fix issues reported by Coverity
|
|
Packit |
95bb47 |
- rpmem: fix read error handling
|
|
Packit |
95bb47 |
- rpmem: add fip monitor (#597)
|
|
Packit |
95bb47 |
- test: add rpmemd termination handling test
|
|
Packit |
95bb47 |
- cpp: fix pop.persist function in obj_cpp_ptr
|
|
Packit |
95bb47 |
- rpmem: return failure for a failed allocation
|
|
Packit |
95bb47 |
- rpmem: fix potential memory leak
|
|
Packit |
95bb47 |
- common: fix available rm options msg (#651)
|
|
Packit |
95bb47 |
- pool: fix pmempool_get_max_size
|
|
Packit |
95bb47 |
- obj: fix potential deadlock during realloc (#635, #636, #637)
|
|
Packit |
95bb47 |
- obj: initialize TLS data
|
|
Packit |
95bb47 |
- rpmem: fix cleanup if fork() failed (#634)
|
|
Packit |
95bb47 |
- obj: fix bogus OOM after exhausting first zone
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu Jul 13 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.3
|
|
Packit |
95bb47 |
This release introduces some useful features and optimizations
|
|
Packit |
95bb47 |
in libpmemobj. Most of them are experimental and controlled by
|
|
Packit |
95bb47 |
the new pmemobj_ctl APIs. For details, please check the feature
|
|
Packit |
95bb47 |
requests identified by the issue numbers listed next to the items below.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Other important changes are related to performance tuning and
|
|
Packit |
95bb47 |
stabilization of librpmem library, which is used by libpmemobj to get
|
|
Packit |
95bb47 |
remote access to persistent memory and to provide basic data replication
|
|
Packit |
95bb47 |
over RDMA. The librpmem is still considered experimental.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
NVML for Windows is feature complete (except for libvmmalloc).
|
|
Packit |
95bb47 |
This release includes the support for Unicode, long paths and
|
|
Packit |
95bb47 |
the NVML installer.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
New features:
|
|
Packit |
95bb47 |
- common: add support for concatenated DAX Devices
|
|
Packit |
95bb47 |
- common: add Unicode support on Windows
|
|
Packit |
95bb47 |
- common: add long path support on Windows
|
|
Packit |
95bb47 |
- common: add NVML installer for Windows
|
|
Packit |
95bb47 |
- pmem: make pmem_is_pmem() true for Device DAX only
|
|
Packit |
95bb47 |
- obj: add pmemobj_wcsdup()/pmemobj_tx_wcsdup() APIs
|
|
Packit |
95bb47 |
- obj: export non-inlined pmemobj_direct()
|
|
Packit |
95bb47 |
- obj: add PMEMOBJ_NLANES env variable
|
|
Packit |
95bb47 |
- cpp: introduce the allocator
|
|
Packit |
95bb47 |
- cpp: add wstring version of C++ entry points
|
|
Packit |
95bb47 |
- vmem: add vmem_wcsdup() API entry
|
|
Packit |
95bb47 |
- pool: add pmempool_rm() function (#307)
|
|
Packit |
95bb47 |
- pool: add --force flag for create command (#529)
|
|
Packit |
95bb47 |
- benchmark: add a minimal execution time option
|
|
Packit |
95bb47 |
- benchmark: add thread affinity option
|
|
Packit |
95bb47 |
- benchmark: print 99% and 99.9% percentiles
|
|
Packit |
95bb47 |
- doc: separate Linux/Windows version of web-based man pages
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Optimizations:
|
|
Packit |
95bb47 |
- obj: cache _pobj_cached_pool in pmemobj_direct()
|
|
Packit |
95bb47 |
- obj: optimize thread utilization of buckets
|
|
Packit |
95bb47 |
- obj: stop grabbing a lock when querying pool ptr
|
|
Packit |
95bb47 |
- rpmem: use multiple endpoints
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- common: fix issues reported by static code analyzers
|
|
Packit |
95bb47 |
- pmem: fix mmap() implementation on Windows
|
|
Packit |
95bb47 |
- pmem: fix mapping addr/length alignment on Windows
|
|
Packit |
95bb47 |
- pmem: fix PMEM_MMAP_HINT implementation on Windows
|
|
Packit |
95bb47 |
- pmem: fix pmem_is_pmem() on invalid memory ranges
|
|
Packit |
95bb47 |
- pmem: fix wrong is_pmem returned by pmem_map_file()
|
|
Packit |
95bb47 |
- pmem: fix mprotect() for private mappings on Windows
|
|
Packit |
95bb47 |
- pmem: modify pmem_is_pmem() behavior for len==0
|
|
Packit |
95bb47 |
- obj: add failsafe to prevent allocs in constructor
|
|
Packit |
95bb47 |
- cpp: fix swap implementation
|
|
Packit |
95bb47 |
- cpp: fix sync primitives' constructors
|
|
Packit |
95bb47 |
- cpp: fix wrong pointer type in the allocator
|
|
Packit |
95bb47 |
- cpp: return persistent_ptr::swap to being public
|
|
Packit |
95bb47 |
- pool: treat invalid answer as 'n'
|
|
Packit |
95bb47 |
- pool: unify flags value for dry run
|
|
Packit |
95bb47 |
- pool: transform for remote replicas
|
|
Packit |
95bb47 |
- rpmem: persistency method detection
|
|
Packit |
95bb47 |
- benchmark: fix time measurement
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Experimental features/optimizations:
|
|
Packit |
95bb47 |
- obj: pmemobjctl - statistics and control submodule (#194, #211)
|
|
Packit |
95bb47 |
- obj: zero-overhead allocations - customizable alloc header (#347)
|
|
Packit |
95bb47 |
- obj: flexible run size index (#377)
|
|
Packit |
95bb47 |
- obj: dynamic range cache (#378)
|
|
Packit |
95bb47 |
- obj: asynchronous post-commit (#381)
|
|
Packit |
95bb47 |
- obj: configurable object cache (#515)
|
|
Packit |
95bb47 |
- obj: add cache size and threshold tx params
|
|
Packit |
95bb47 |
- obj: add CTL var for suppressing expensive checks
|
|
Packit |
95bb47 |
- rpmem: add rpmem_set_attr() API entry
|
|
Packit |
95bb47 |
- rpmem: switch to libfabric v1.4.2
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu May 18 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.2.3
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- test: extend timeout for selected tests
|
|
Packit |
95bb47 |
- test: reduce number of operations in obj_tx_mt
|
|
Packit |
95bb47 |
- test: define cfree() as free() in vmmalloc_calloc
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Other changes:
|
|
Packit |
95bb47 |
- common: move Docker images to new repo
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Sat Apr 15 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.2.2
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- pmempool: fix mapping type in pool_params_parse
|
|
Packit |
95bb47 |
- test: limit number of arenas in vmem_stats
|
|
Packit |
95bb47 |
- test: do not run pool_lock test as root
|
|
Packit |
95bb47 |
- common: fix pkg-config files
|
|
Packit |
95bb47 |
- common: fix building packages for Debian
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Tue Feb 21 2017 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.2.1
|
|
Packit |
95bb47 |
This NVML release changes the behavior of pmem_is_pmem() on Linux.
|
|
Packit |
95bb47 |
The pmem_is_pmem() function will now return true only if the entire
|
|
Packit |
95bb47 |
range is mapped directly from Device DAX (/dev/daxX.Y) without an
|
|
Packit |
95bb47 |
intervening file system, and only if the corresponding file mapping
|
|
Packit |
95bb47 |
was created with pmem_map_file(). See libpmem(3) for details.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- jemalloc: fix test compilation on Fedora 26 (rawhide)
|
|
Packit |
95bb47 |
- test: fix cpp test compilation on Fedora 26 (rawhide)
|
|
Packit |
95bb47 |
- common: use same queue.h on linux and windows
|
|
Packit |
95bb47 |
- common: queue.h clang static analyzer fix
|
|
Packit |
95bb47 |
- common: fix path handling in build-dpkg.sh
|
|
Packit |
95bb47 |
- test: fix match files in pmempool_transform/TEST8
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Fri Dec 30 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.2 - Windows Technical Preview #1
|
|
Packit |
95bb47 |
This is the first Technical Preview release of NVML for Windows.
|
|
Packit |
95bb47 |
It is based on NVML 1.2 version, but not all the 1.2 features
|
|
Packit |
95bb47 |
are ported to Windows. In particular, Device DAX and remote access
|
|
Packit |
95bb47 |
to persistent memory (librpmem) are not supported by design.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
NOTE: This release has not gone through the full validation cycle,
|
|
Packit |
95bb47 |
but only through some basic tests on Travis and AppVeyor.
|
|
Packit |
95bb47 |
Thus, it cannot be assumed "Production quality" and should not
|
|
Packit |
95bb47 |
be used in production environments.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Besides several minor improvements and bug fixes, all the other
|
|
Packit |
95bb47 |
changes since NVML 1.2 release were related to Windows support:
|
|
Packit |
95bb47 |
- win: port libvmem (and jemalloc)
|
|
Packit |
95bb47 |
- win: benchmarks Windows port
|
|
Packit |
95bb47 |
- win: fix mapping files of unaligned length
|
|
Packit |
95bb47 |
- win: clean up possible race condition in mmap_init()
|
|
Packit |
95bb47 |
- win: enable QueryVirtualMemoryInformation() in pmem_is_pmem()
|
|
Packit |
95bb47 |
- test: check open handles at START/DONE
|
|
Packit |
95bb47 |
- test: port all the remaining unit tests
|
|
Packit |
95bb47 |
(scope, pmem_map, obj_debug, util_poolset, pmempool_*)
|
|
Packit |
95bb47 |
- win: add resource files for versioning
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Known issues and limitations of Windows version of NVML:
|
|
Packit |
95bb47 |
- Unicode support is missing. The UTF/USC-encoded file paths
|
|
Packit |
95bb47 |
or pool set files may not be handled correctly.
|
|
Packit |
95bb47 |
- The libvmmalloc library is not ported yet.
|
|
Packit |
95bb47 |
- The on-media format of pmem pools is not portable at the moment.
|
|
Packit |
95bb47 |
The pmem pools created using Windows version of NVM libraries
|
|
Packit |
95bb47 |
cannot be open on Linux and vice versa.
|
|
Packit |
95bb47 |
- Despite the fact the current version of NVML would work
|
|
Packit |
95bb47 |
with any recent version of Windows OS, to take full
|
|
Packit |
95bb47 |
advantage of PMEM and NVML features and to benefit from
|
|
Packit |
95bb47 |
the PMEM performance, the recommended platforms needs be
|
|
Packit |
95bb47 |
equipped with the real NVDIMMs hardware and should support
|
|
Packit |
95bb47 |
the native, Microsoft's implementation of DAX-enabled file
|
|
Packit |
95bb47 |
system (i.e. Windows Server 2016 or later).
|
|
Packit |
95bb47 |
In case of using NVML with older versions of Windows or with
|
|
Packit |
95bb47 |
the custom implementation of PMEM/DAX drivers, the performance
|
|
Packit |
95bb47 |
might not be satisfactory. Please, contact the provider
|
|
Packit |
95bb47 |
of PMEM/DAX drivers for your platform to get the customized
|
|
Packit |
95bb47 |
version of NVML in such case.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu Dec 15 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.2
|
|
Packit |
95bb47 |
This NVML release causes a "flag day" for libpmemobj.
|
|
Packit |
95bb47 |
The pmemobj pools built under NVML 1.1 are incompatible with pools built
|
|
Packit |
95bb47 |
under NVML 1.2 and later. This is because an issue was discovered with
|
|
Packit |
95bb47 |
the alignment of locks (#358) and, although rare, the issue potentially
|
|
Packit |
95bb47 |
impacts program correctness, making the fix mandatory.
|
|
Packit |
95bb47 |
The major version number of the pmemobj pool layout and the version
|
|
Packit |
95bb47 |
of the libpmemobj API is changed to prevent the use of the potentially
|
|
Packit |
95bb47 |
incorrect layout.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Other key changes introduced in this release:
|
|
Packit |
95bb47 |
- Add Device DAX support, providing that "optimized flush" mechanism
|
|
Packit |
95bb47 |
defined in SNIA NVM Programming Model can safely be used, even
|
|
Packit |
95bb47 |
if PMEM-aware file system supporting that model is not available,
|
|
Packit |
95bb47 |
or if the user does not want to use the file system for some reason.
|
|
Packit |
95bb47 |
- Add a package for libpmemobj C++ bindings.
|
|
Packit |
95bb47 |
C++ API is no longer considered experimental.
|
|
Packit |
95bb47 |
Web-based documentation for C++ API is available on http://pmem.io.
|
|
Packit |
95bb47 |
- Add "sync" and "transform" commands to pmempool utility.
|
|
Packit |
95bb47 |
The "sync" command allows one to recover missing or corrupted part(s)
|
|
Packit |
95bb47 |
of a pool set from a healthy replica, while the "transform" command
|
|
Packit |
95bb47 |
is a convenient way for modifying the structure of an existing
|
|
Packit |
95bb47 |
pool set, i.e. by adding or removing replicas.
|
|
Packit |
95bb47 |
- Add experimental support for remote access to persistent memory and
|
|
Packit |
95bb47 |
basic remote data replication over RDMA (librpmem). Experimental
|
|
Packit |
95bb47 |
support for remote replicas is also provided by libpmemobj library.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
New features:
|
|
Packit |
95bb47 |
- common: add Device DAX support (#197)
|
|
Packit |
95bb47 |
- obj: add C++ bindings package (libpmemobj++-devel)
|
|
Packit |
95bb47 |
- obj: add TOID_OFFSETOF macro
|
|
Packit |
95bb47 |
- pmempool: add "sync" and "transform" commands (#172, #196)
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- obj: force alignment of pmem lock structures (#358)
|
|
Packit |
95bb47 |
- blk: cast translation entry to uint64_t when calculating data offset
|
|
Packit |
95bb47 |
- obj: fix Valgrind instrumentation of chunk headers and cancelled
|
|
Packit |
95bb47 |
allocations
|
|
Packit |
95bb47 |
- obj: set error message when user called pmemobj_tx_abort()
|
|
Packit |
95bb47 |
- obj: fix status returned by pmemobj_list_insert() (#226)
|
|
Packit |
95bb47 |
- obj: defer allocation of global structures
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Optimizations:
|
|
Packit |
95bb47 |
- obj: fast path for pmemobj_pool_by_ptr() when inside a transaction
|
|
Packit |
95bb47 |
- obj: simplify and optimize allocation class generation
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Experimental features:
|
|
Packit |
95bb47 |
- rpmem: add support for remote access to persistent memory and basic
|
|
Packit |
95bb47 |
remote data replication over RDMA
|
|
Packit |
95bb47 |
- libpmempool: add pmempool_sync() and pmempool_transform() (#196)
|
|
Packit |
95bb47 |
- obj: introduce pmemobj_oid()
|
|
Packit |
95bb47 |
- obj: add pmemobj_tx_xalloc()/pmemobj_tx_xadd_range() APIs and
|
|
Packit |
95bb47 |
the corresponding macros
|
|
Packit |
95bb47 |
- obj: add transaction stage transition callbacks
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu Jun 23 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.1
|
|
Packit |
95bb47 |
This NVML release introduces a new version of libpmemobj pool layout.
|
|
Packit |
95bb47 |
Internal undo log structure has been modified to improve performance
|
|
Packit |
95bb47 |
of pmemobj transactions. Memory pools created with older versions
|
|
Packit |
95bb47 |
of the libpmemobj library must be converted to the new format using
|
|
Packit |
95bb47 |
"pmempool convert" command. See pmempool-convert(1) for details.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
A new "libpmempool" library is available, providing support for
|
|
Packit |
95bb47 |
off-line pool management and diagnostics. Initially it provides only
|
|
Packit |
95bb47 |
"check" and "repair" operations for log and blk memory pools, and for
|
|
Packit |
95bb47 |
BTT devices.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Other changes:
|
|
Packit |
95bb47 |
- pmem: deprecate PCOMMIT
|
|
Packit |
95bb47 |
- blk: match BTT Flog initialization with Linux NVDIMM BTT
|
|
Packit |
95bb47 |
- pmem: defer pmem_is_pmem() initialization (#158)
|
|
Packit |
95bb47 |
- obj: add TOID_TYPEOF macro
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Bug fixes:
|
|
Packit |
95bb47 |
- doc: update description of valid file size units (#133)
|
|
Packit |
95bb47 |
- pmempool: fix --version short option in man page (#135)
|
|
Packit |
95bb47 |
- pmempool: print usage when running rm without arg (#136)
|
|
Packit |
95bb47 |
- cpp: clarify polymorphism in persistent_ptr (#150)
|
|
Packit |
95bb47 |
- obj: let the before flag be any non-zero value (#151)
|
|
Packit |
95bb47 |
- obj: fix compare array pptr to nullptr (#152)
|
|
Packit |
95bb47 |
- obj: cpp pool.get_root() fix (#156)
|
|
Packit |
95bb47 |
- log/blk: set errno if replica section is specified (#161)
|
|
Packit |
95bb47 |
- cpp: change exception message (#163)
|
|
Packit |
95bb47 |
- doc: remove duplicated words in man page (#164)
|
|
Packit |
95bb47 |
- common: always append EXTRA_CFLAGS after our CFLAGS
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Experimental features:
|
|
Packit |
95bb47 |
- Implementation of C++ bindings for libpmempobj is complete.
|
|
Packit |
95bb47 |
Web-based documentation for C++ API is available on http://pmem.io.
|
|
Packit |
95bb47 |
Note that C++ API is still considered experimental. Do not use it
|
|
Packit |
95bb47 |
in production environments.
|
|
Packit |
95bb47 |
- Porting NVML to Windows is in progress. There are MS Visual Studio
|
|
Packit |
95bb47 |
solution/projects available, allowing to compile libpmem, libpmemlog,
|
|
Packit |
95bb47 |
libpmemblk and libpmemobj on Windows, but the libraries are not fully
|
|
Packit |
95bb47 |
functional and most of the test are not enabled yet.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu Apr 07 2016 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 1.0
|
|
Packit |
95bb47 |
The API of six libraries (libpmem, libpmemblk, libpmemlog,
|
|
Packit |
95bb47 |
libpmemobj, libvmem, libvmmalloc) is complete and stable.
|
|
Packit |
95bb47 |
The on-media layout of persistent memory pools will be maintained
|
|
Packit |
95bb47 |
from this point, and if changed it will be backward compatible.
|
|
Packit |
95bb47 |
Man pages are all complete.
|
|
Packit |
95bb47 |
This release has been validated to "Production quality".
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
For the purpose of new features planned for next releases of NVML
|
|
Packit |
95bb47 |
there have been some API modifications made:
|
|
Packit |
95bb47 |
- pmem: pmem_map replaced with pmem_map_file
|
|
Packit |
95bb47 |
- log/blk: 'off_t' substituted with 'long long'
|
|
Packit |
95bb47 |
- obj: type numbers extended to 64-bit
|
|
Packit |
95bb47 |
- obj: new entry points and macros added:
|
|
Packit |
95bb47 |
pmemobj_tx_errno, pmemobj_tx_lock, pmemobj_mutex_timedlock,
|
|
Packit |
95bb47 |
TX_ADD_DIRECT, TX_ADD_FIELD_DIRECT, TX_SET_DIRECT
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Other key changes since version 0.4 include:
|
|
Packit |
95bb47 |
- common: updated/fixed installation scripts
|
|
Packit |
95bb47 |
- common: eliminated dependency on libuuid
|
|
Packit |
95bb47 |
- pmem: CPU features/ISA detection using CPUID
|
|
Packit |
95bb47 |
- obj: improved error handling
|
|
Packit |
95bb47 |
- obj: atomic allocation fails if constructor returns error
|
|
Packit |
95bb47 |
- obj: multiple performance optimizations
|
|
Packit |
95bb47 |
- obj: object store refactoring
|
|
Packit |
95bb47 |
- obj: additional examples and benchmarks
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
This release also introduces a prototype implementation
|
|
Packit |
95bb47 |
of C++ bindings for libpmemobj. Note that C++ API is still
|
|
Packit |
95bb47 |
experimental and should not be used in production environments.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Fri Dec 04 2015 Krzysztof Czurylo <krzysztof.czurylo@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 0.4
|
|
Packit |
95bb47 |
This NVML version primarily focuses on improving code quality
|
|
Packit |
95bb47 |
and reliability. In addition to a couple of bug fixes,
|
|
Packit |
95bb47 |
the changes include:
|
|
Packit |
95bb47 |
- benchmarks for libpmemobj, libpmemblk and libvmem
|
|
Packit |
95bb47 |
- additional pmemobj tests and examples
|
|
Packit |
95bb47 |
- pool mapping address randomization
|
|
Packit |
95bb47 |
- added pmempool "rm" command
|
|
Packit |
95bb47 |
- eliminated libpmem dependency on libpthread
|
|
Packit |
95bb47 |
- enabled extra warnings
|
|
Packit |
95bb47 |
- minor performance improvements
|
|
Packit |
95bb47 |
Man pages are all complete.
|
|
Packit |
95bb47 |
This release is considered "Beta quality" by the team, having
|
|
Packit |
95bb47 |
been thoroughly validated, including significant performance analysis.
|
|
Packit |
95bb47 |
The pmempool command does not yet support "check" and "repair"
|
|
Packit |
95bb47 |
operations for pmemobj type pools.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Sun Sep 13 2015 Andy Rudoff <andy.rudoff@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 0.3
|
|
Packit |
95bb47 |
NVML is now feature complete, adding support for:
|
|
Packit |
95bb47 |
- pool sets
|
|
Packit |
95bb47 |
- pmemobj local replication (active/passive)
|
|
Packit |
95bb47 |
- experimental valgrind support
|
|
Packit |
95bb47 |
- pmempool support for all pool types
|
|
Packit |
95bb47 |
Man pages are all complete.
|
|
Packit |
95bb47 |
This release is considered "Alpha quality" by the team, having
|
|
Packit |
95bb47 |
gone through significant validation but only some performance
|
|
Packit |
95bb47 |
analysis at this point.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Tue Jun 30 2015 Andy Rudoff <andy.rudoff@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 0.2
|
|
Packit |
95bb47 |
NVML now consists of six libraries:
|
|
Packit |
95bb47 |
- libpmem (basic flushing, etc)
|
|
Packit |
95bb47 |
- libpmemblk, libpmemlog, libpmemobj (transactions)
|
|
Packit |
95bb47 |
- libvmem, libvmmalloc (volatile use of pmem)
|
|
Packit |
95bb47 |
The "pmempool" command is available for managing pmem files.
|
|
Packit |
95bb47 |
Man pages for all the above are complete.
|
|
Packit |
95bb47 |
The only things documented in man pages but not implemented are:
|
|
Packit |
95bb47 |
- pmem sets (ability to spread a pool over a set of files)
|
|
Packit |
95bb47 |
- replication (coming for libpmemobj)
|
|
Packit |
95bb47 |
The pmempool command does not yet support pmemobj type pools.
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
Thu Sep 11 2014 Andy Rudoff <andy.rudoff@intel.com>
|
|
Packit |
95bb47 |
|
|
Packit |
95bb47 |
* Version 0.1
|
|
Packit |
95bb47 |
Initial development done in 0.1 builds
|