Skip to content

Releases: pmem/pmdk

NVML Version 1.2 - Windows Technical Preview

31 Dec 00:31
Compare
Choose a tag to compare
* Version 1.2 - Windows Technical Preview #1
This is the first Technical Preview release of NVML for Windows.
It is based on NVML 1.2 version, but not all the 1.2 features
are ported to Windows. In particular, Device DAX and remote access
to persistent memory (librpmem) are not supported by design.

NOTE: This release has not gone through the full validation cycle,
but only through some basic tests on Travis and AppVeyor.
Thus, it cannot be assumed "Production quality" and should not
be used in production environments.

Besides several minor improvements and bug fixes, all the other
changes since NVML 1.2 release were related to Windows support:
- win: port libvmem (and jemalloc)
- win: benchmarks Windows port
- win: fix mapping files of unaligned length
- win: clean up possible race condition in mmap_init()
- win: enable QueryVirtualMemoryInformation() in pmem_is_pmem()
- test: check open handles at START/DONE
- test: port all the remaining unit tests
  (scope, pmem_map, obj_debug, util_poolset, pmempool_*)
- win: add resource files for versioning

Known issues and limitations of Windows version of NVML:
- Unicode support is missing.  The UTF/UCS-encoded file paths
  or pool set files may not be handled correctly.
- The libvmmalloc library is not ported yet.
- The on-media format of pmem pools is not portable at the moment.
  The pmem pools created using Windows version of NVM libraries
  cannot be open on Linux and vice versa.
- Despite the fact the current version of NVML would work
  with any recent version of Windows OS, to take full
  advantage of PMEM and NVML features and to benefit from
  the PMEM performance, the recommended platforms needs be
  equipped with the real NVDIMMs hardware and should support
  the native, Microsoft's implementation of DAX-enabled file
  system (i.e. Windows Server 2016 or later).
  In case of using NVML with older versions of Windows or with
  the custom implementation of PMEM/DAX drivers, the performance
  might not be satisfactory.  Please, contact the provider
  of PMEM/DAX drivers for your platform to get the customized
  version of NVML in such case.

NVML Version 1.2

16 Dec 13:52
Compare
Choose a tag to compare
* Version 1.2
This NVML release causes a "flag day" for libpmemobj.
The pmemobj pools built under NVML 1.1 are incompatible with pools built
under NVML 1.2 and later.  This is because an issue was discovered with
the alignment of locks (#358) and, although rare, the issue potentially
impacts program correctness, making the fix mandatory.
The major version number of the pmemobj pool layout and the version
of the libpmemobj API is changed to prevent the use of the potentially
incorrect layout.

Other key changes introduced in this release:
- Add Device DAX support, providing that "optimized flush" mechanism
  defined in SNIA NVM Programming Model can safely be used, even
  if PMEM-aware file system supporting that model is not available,
  or if the user does not want to use the file system for some reason.
- Add a package for libpmemobj C++ bindings.
  C++ API is no longer considered experimental.
  Web-based documentation for C++ API is available on http://pmem.io.
- Add "sync" and "transform" commands to pmempool utility.
  The "sync" command allows to recover missing or corrupted part(s)
  of a pool set from a healthy replica, while the "transform" command
  is a convenient way for modifying the structure of an existing
  pool set, i.e. by adding or removing replicas.
- Add experimental support for remote access to persistent memory and
  basic remote data replication over RDMA (librpmem).  Experimental
  support for remote replicas is also provided by libpmemobj library.

New features:
- common: add Device DAX support (#197)
- obj: add C++ bindings package (libpmemobj++-devel)
- obj: add TOID_OFFSETOF macro
- pmempool: add "sync" and "transform" commands (#172, #196)

Bug fixes:
- obj: force alignment of pmem lock structures (#358)
- blk: cast translation entry to uint64_t when calculating data offset
- obj: fix Valgrind instrumentation of chunk headers and cancelled
  allocations
- obj: set error message when user called pmemobj_tx_abort()
- obj: fix status returned by pmemobj_list_insert() (#226)
- obj: defer allocation of global structures

Optimizations:
- obj: fast path for pmemobj_pool_by_ptr() when inside a transaction
- obj: simplify and optimize allocation class generation

Experimental features:
- rpmem: add support for remote access to persistent memory and basic
  remote data replication over RDMA
- libpmempool: add pmempool_sync() and pmempool_transform() (#196)
- obj: introduce pmemobj_oid()
- obj: add pmemobj_tx_xalloc()/pmemobj_tx_xadd_range() APIs and
  the corresponding macros
- obj: add transaction stage transition callbacks

NVML Version 1.1

26 Jun 20:59
Compare
Choose a tag to compare
* Version 1.1   
This NVML release introduces a new version of libpmemobj pool layout.
Internal undo log structure has been modified to improve performance
of pmemobj transactions.  Memory pools created with older versions
of the libpmemobj library must be converted to the new format using
"pmempool convert" command.  See pmempool-convert(1) for details.

A new "libpmempool" library is available, providing support for
off-line pool management and diagnostics.  Initially it provides only
"check" and "repair" operations for log and blk memory pools, and for
BTT devices.

Other changes:
- pmem: deprecate PCOMMIT
- blk: match BTT Flog initialization with Linux NVDIMM BTT
- pmem: defer pmem_is_pmem() initialization (#158)
- obj: add TOID_TYPEOF macro

Bug fixes:
- doc: update description of valid file size units (#133)
- pmempool: fix --version short option in man page (#135)
- pmempool: print usage when running rm without arg (#136)
- cpp: clarify polymorphism in persistent_ptr (#150)
- obj: let the before flag be any non-zero value (#151)
- obj: fix compare array pptr to nullptr (#152)
- obj: cpp pool.get_root() fix (#156)
- log/blk: set errno if replica section is specified (#161)
- cpp: change exception message (#163)
- doc: remove duplicated words in man page (#164)
- common: always append EXTRA_CFLAGS after our CFLAGS

Experimental features:
- Implementation of C++ bindings for libpmempobj is complete.
  Web-based documentation for C++ API is available on http://pmem.io.
  Note that C++ API is still considered experimental.  Do not use it
  in production environments.
- Porting NVML to Windows is in progress.  There are MS Visual Studio
  solution/projects available, allowing to compile libpmem, libpmemlog,
  libpmemblk and libpmemobj on Windows, but the libraries are not fully
  functional and most of the test are not enabled yet.

NVML Version 1.0

09 May 08:12
Compare
Choose a tag to compare

Thu Apr 07 2016 Krzysztof Czurylo krzysztof.czurylo@intel.com

    * Version 1.0
    The API of six libraries (libpmem, libpmemblk, libpmemlog,
    libpmemobj, libvmem, libvmmalloc) is complete and stable.
    The on-media layout of persistent memory pools will be maintained
    from this point, and if changed it will be backward compatible.
    Man pages are all complete.
    This release has been validated to "Production quality".

    For the purpose of new features planned for next releases of NVML
    there have been some API modifications made:
            - pmem: pmem_map replaced with pmem_map_file
            - log/blk: 'off_t' substituted with 'long long'
            - obj: type numbers extended to 64-bit
            - obj: new entry points and macros added:
              pmemobj_tx_errno, pmemobj_tx_lock, pmemobj_mutex_timedlock,
              TX_ADD_DIRECT, TX_ADD_FIELD_DIRECT, TX_SET_DIRECT

    Other key changes since version 0.4 include:
            - common: updated/fixed installation scripts
            - common: eliminated dependency on libuuid
            - pmem: CPU features/ISA detection using CPUID
            - obj: improved error handling
            - obj: atomic allocation fails if constructor returns error
            - obj: multiple performance optimizations
            - obj: object store refactoring
            - obj: additional examples and benchmarks

    This release also introduces a prototype implementation
    of C++ bindings for libpmemobj.  Note that C++ API is still
    experimental and should not be used in production environments.

NVML Version 0.4

21 Dec 14:56
Compare
Choose a tag to compare
    * Version 0.4
    This NVML version primarily focuses on improving code quality
    and reliability.  In addition to a couple of bug fixes,
    the changes include:
            - benchmarks for libpmemobj, libpmemblk and libvmem
            - additional pmemobj tests and examples
            - pool mapping address randomization
            - added pmempool "rm" command
            - eliminated libpmem dependency on libpthread
            - enabled extra warnings
            - minor performance improvements
    Man pages are all complete.
    This release is considered "Beta quality" by the team, having
    been thoroughly validated, including significant performance analysis.
    The pmempool command does not yet support "check" and "repair"
    operations for pmemobj type pools.

NVML Version 0.3

18 Sep 16:59
Compare
Choose a tag to compare

Sun Sep 13 2015 Andy Rudoff andy.rudoff@intel.com

    * Version 0.3
    NVML is now feature complete, adding support for:
            - pool sets
            - pmemobj local replication (active/passive)
            - experimental valgrind support
            - pmempool support for all pool types
    Man pages are all complete.
    This release is considered "Alpha quality" by the team, having
    gone through significant validation but only some performance
    analysis at this point.

NVML Version 0.2

01 Jul 05:27
Compare
Choose a tag to compare

Tue Jun 30 2015 Andy Rudoff andy.rudoff@intel.com

    * Version 0.2
    NVML now consists of six libraries:
            - libpmem                            (basic flushing, etc)
            - libpmemblk, libpmemlog, libpmemobj (transactions)
            - libvmem, libvmmalloc               (volatile use of pmem)
    The "pmempool" command is available for managing pmem files.
    Man pages for all the above are complete.
    The only things documented in man pages but not implemented are:
            - pmem sets (ability to spread a pool over a set of files)
            - replication (coming for libpmemobj)
    The pmempool command does not yet support pmemobj type pools.