-
Notifications
You must be signed in to change notification settings - Fork 4
/
ChangeLog
271 lines (253 loc) · 14.5 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
* Fri Jul 2 2021 Patryk Kaminski <[email protected]> v1.12.0-rc1
- Added memtier intercept library
- Introduced clang-format instead of astyle for code formatting
- Removed memkind_malloc_wrapper
- Added support for running python tests with py.test-3
- Add python linter to GitHub Actions
- Obtain arena indexes with a "random" avalaching hash instead of sequential
- Extended error handling in pmem_allocator
- Extended CPU models in PMEM tests
* Fri Feb 26 2021 Michal Biesek <[email protected]> v1.11.0
- Provided a function to verify if path supports DAX - memkind_check_dax_path()
- Provided a NUMA node interleave variant for MEMKIND_DAX_KMEM (MEMKIND_DAX_KMEM_INTERLEAVE)
- Provided a function to enable/disable background threads - memkind_set_bg_threads()
- Provided a function to print statistics - memkind_stats_print()
- Extended configure mechanism by enable-memkind-initial-exec-tls option
- Extended memkind to support HMAT (libhwloc required)
- Provided memory property abstraction (MEMKIND_HIGHEST_CAPACITY*,
MEMKIND_LOWEST_LATENCY_LOCAL*, MEMKIND_HIGHEST_BANDWIDTH_LOCAL*)
- Extended support for MEMKIND_HBW* to platforms with full HMAT support (kernel+hardware)
* Mon Sep 14 2020 Michal Biesek <[email protected]> v1.10.1
- Fixed calculation size for pmem kind
- Added support for MEMKIND_HOG_MEMORY in pmem kind
- Fixed memkind_defrag_reallocate
- Extended configure mechanism by MIN_LG_ALIGN parameter and disable-heap-manager option
- Optimized searching command in mallctl, memkind_defrag_reallocate and memkind_detect_kind methods
- Removed punch-hole in destroy extent operation
* Mon Dec 16 2019 Michal Biesek <[email protected]> v1.10.0
- Provided another way to use Persistent Memory in memkind (MEMKIND_DAX_KMEM_* kinds)
- Added C++ allocator for static kinds (including MEMKIND_DAX_KMEM_* kinds)
- Provided an interface to get memkind allocation statistics
- Provided a method to reduce fragmentation - memkind_defrag_reallocate()
- Added support for background thread
- Updated internally used jemalloc to upstream version 5.2.1
- Extended hbw interface with hbw_malloc_usable_size()
- Simplified building process
* Wed Apr 3 2019 Michal Biesek <[email protected]> v1.9.0
- Provided a second function to create PMEM kind memkind_create_pmem_with_config()
- Provided the memkind_detect_kind() function to recognize a kind from memory allocation
- Provided memkind_config_set_memory_usage_policy() function
that modifies the default memory usage policy behavior
- Provided the ability to pass a NULL kind to memkind_malloc_usable_size() and memkind_realloc()
- Unified the memkind_realloc() behavior for all kinds
- Added the support for the pool_msize() function to TBB
- Extended build arch to ppc64, ppc64le, s390x
- Removed disable-stats from used jemalloc
- Fixed compilation under the Clang and rpm build configuration
- Provided the support for Dockerfile
* Mon Dec 10 2018 Michal Biesek <[email protected]> v1.8.0
- Fixed error with realloc/free method with passing thread-specific cache flag
- Fixed error with memkind_create_pmem(), if other PMEM kind was destroyed before
- Fixed error with zeroing large allocations in PMEM kind
- Added support to create kind without maximum size limit of PMEM kind (max_size=0)
- Extended memkind API with memkind_malloc_usable_size()
- Removed EXPERIMENTAL from most methods in memkind API
- Added MEMKIND_ERROR_ARENAS_CREATE code
- Added C++ allocator for PMEM kind
- Extended PMEM examples
- Fixed integration with Travis CI
- Extended Travis CI configuration with Astyle and Coverage
- Added PMEM kind tests
* Wed Jan 24 2018 Pawel Kochanek <[email protected]> v1.7.0
- Updated internally used jemalloc to upstream version 5.0.
- Fixed error that has been occurring while memkind was dynamically loaded.
- Fixed MEMKIND_HBW_NODES behavior for single NUMA node system.
- Removed licenses other than BSD 3-clause from COPYING.
- Changed build instructions.
- Added configurable jemalloc prefix in build scripts.
- Upgraded gtest to version 1.8.0.
- Added memory footprint tests.
- Added locality test for MEMKIND_PREFERRED.
- Applied test parametrization in BATests.
- Fixed problems with pytest testing in Travis.
- Added huge page configuration in several tests.
- Removed several symbols that are no longer exposed in public API from man pages.
- Fixed HBW_POLICY_BIND_ALL documentation.
* Tue Jun 13 2017 Artur Koziej <[email protected]> v1.6.0
- Introduced new policy HBW_POLICY_BIND_ALL.
- Introduced MEMKIND_HBW_ALL, MEMKIND_HBW_ALL_HUGETLB and MEMKIND_REGULAR kinds.
- Fixed hbw_posix_memalign_psize() return value in case of unsupported policy and
page size combination.
- Documented supported policy and page size combination for
hbw_posix_memalign_psize().
- Merged libmemkind.a and libjemalloc_pic.a into a single static library.
- Fixed OOM during tcache acquisition.
- Tuned huge pages configuration in memkind tests.
- Added stress tests for allocations with large random sizes.
- Added stress tests for allocations with random kinds.
- Extended policy and NUMA node binding tests.
- Fixed several Travis build problems.
- Removed gb_page_tests_preferred_policy tests.
* Tue Feb 21 2017 Krzysztof Kulakowski <[email protected]> v1.5.0
- Intel(R) TBB scalable_allocator can be used as heap management alternative
to jemalloc (requires installed Intel (R) TBB package and environment variable
MEMKIND_HEAP_MANAGER=TBB)
- Updated internally used jemalloc to upstream version 4.3.1 (previously modified 3.5.1)
- Introduced new environment option MEMKIND_HOG_MEMORY. Setting it to "1" will prevent
memkind from releasing memory to OS.
- Introduced support for KNM processor from Intel(R) Xeon Phi(TM) family
- General cleanup of build scripts (e.g. fixed issues found on Ubuntu,
introduced simple build.sh script)
- Deprecated support for gigabyte-pages
- Removed number of previously deprecated symbols
* Thu Nov 17 2016 Krzysztof Kulakowski <[email protected]> v1.4.0
- Introduced hbw_verify_memory_region() for verifying if provided memory
region fully falls into high-bandwidth memory (for details please take a look
at man/hbwmalloc.3).
- New API for creating kinds using set of predefined attributes:
memkind_create_kind(), memkind_destroy_kind() (for details please take a look
at man/memkind.3).
- Fixed issue in autohbw where it was reporting limit error regardless of
value provided.
- Added logging on error paths.
- Test base fixes and improvements.
* Tue Sep 27 2016 Krzysztof Kulakowski <[email protected]> v1.3.0
- Introduced logging mechanism (for details please take a look at
man/memkind.3).
- Deprecated symbols: memkind_finalize(), memkind_get_num_kind(),
memkind_get_kind_by_partition(), memkind_get_kind_by_name(),
memkind_partition_mmap(), memkind_get_size(), MEMKIND_ERROR_MEMALIGN,
MEMKIND_ERROR_MALLCTL, MEMKIND_ERROR_GETCPU, MEMKIND_ERROR_PMTT,
MEMKIND_ERROR_TIEDISTANCE, MEMKIND_ERROR_ALIGNMENT, MEMKIND_ERROR_MALLOCX,
MEMKIND_ERROR_REPNAME, MEMKIND_ERROR_PTHREAD, MEMKIND_ERROR_BADPOLICY,
MEMKIND_ERROR_REPPOLICY.
- Added integration with hwloc (turned on with --with-hwloc).
- Cleanup of symbols exposed by libmemkind.so (e.g. no longer exposing libnuma
and jemalloc symbols).
- AutoHBW files have been moved to "memkind/autohbw" directory, code has
been refactored and tests have been added to appropriate scenarios.
- Library is now built with flags improving security (can be turned off
with --disable-secure configure time option).
- Changed configuration of jemalloc to turn off unused features.
* Thu Aug 18 2016 Krzysztof Kulakowski <[email protected]> v1.2.0
- memkind_create() and memkind_ops have been deprecated (moved to
memkind_deprecated.h).
- Deprecated the headers from memkind/internal and added compile-time
warnings to them (plan is to remove those from rpm packages).
- autohbw files have been moved to memkind/autohbw directory.
- API decorators (memkind_malloc_pre, memkind_malloc_post etc.) now
need to be enabled with configure-time option --enable-decorators.
- Allocation time optimizations with up to 20% improvement.
* Wed Jul 13 2016 Krzysztof Kulakowski <[email protected]> v1.1.1
- Performance improvement for memkind_free() in scenario where NULL
was passed as kind (reduced by 60%).
- Introduced integration with Travis CI.
- Fixed issue where memory returned from calloc was not filled with zeroes
when using memkind_pmem kinds.
- Fixed issue where interleave kinds was failing on systems without
Transparent Huge Pages module configured.
- Resolved several issues that was causing compilation errors on some systems.
- test/test.sh is now able to detect system configuration, and run only those
tests which requirements are meet.
- Added gtest to repo to avoid downloading it during build proecess.
* Mon May 23 2016 Krzysztof Kulakowski <[email protected]> v1.1.0
- Implemented algorithm for detecting high-bandwidth memory on Intel Xeon Phi X200
without parsing PMTT.
- PMTT-parsing service has been removed.
- memkind struct definition from memkind.h has been replaced by forward
declaration. Definition has been moved to /internal/memkind_private.h and
shouldn't be considered as part of library interface anymore.
- Performance improvement for hugetlb kinds (check_available() is no longer
parsing sysfs every time).
- Performance fix by removing --enable-safe from jemmaloc build flags.
- New tests for validating high-bandwidth memory detection has been added.
- AFTS has been split into two groups: memkind-afts.ts and memkind-afts-ext.ts,
based on amount of required memory (for details view test/README).
* Thu Mar 03 2016 Artur Koziej <[email protected]> v1.0.0
- hbwmalloc.h released as stable API.
- Introduce API standards: STANDARD API, NON-STANDARD API, EXPERIMENTAL API.
- Introduce memkind versioning API.
- Fix type names in hbwmalloc API.
- Change error codes to POSIX standard ones in hbwmalloc API.
- Move API headers to include directory.
- Move NON-STANDARD API, or EXPERIMENTAL API to include/memkind/internal directory.
- New man page (memkind_interleave.3) describing interleave kind.
- Significant documentation improvement.
- Performance fix for jemalloc - significantly decrease of library initialization time.
- Enforce 2MB alignment in jemalloc due to the Linux kernel bug (munmap() fails for
huge pages, when the size is not aligned).
- Move to systemd defined service (memkind.service), drop init.d script.
- New rpm layout (memkind and memkind-devel).
- Remove false dependency on OpenMP.
- Extend test base for stress, longevity and initialization performance tests.
- Fix memory leak in ctl_growk().
- Rename namespace: hbwmalloc -> hbw.
- Rename class: hbwmalloc_allocator -> allocator.
* Thu Oct 15 2015 Krzysztof Kulakowski <[email protected]> v0.3.0
- Added two new kinds: MEMKIND_INTERLEAVE and MEMKIND_HBW_INTERLEAVE
(for details please take a look at man/memkind.3)
- Added support for file-backed memory heaps
(for details please take a look at man/memkind_pmem.3)
- Added autohbw library, that intercepts the standard heap allocations,
which let use high-bandwidth memory without modifying existing codebase
(for details please take a look at examples/autohbw_README)
- jemalloc is now, statically linked, internal component of memkind RPM
instead of rpm dependency.
- Added memkind_allocated example which demonstrates usage of memkind
with alignas() alignment specifier introduced in C++11
(for details please take a look at examples/README)
- Added support for using thread local storage to improve performance in
multithreaded applications (enabled by configure time option: --enable-tls)
- Added possibility to set number of jemalloc arenas per kind by
configure time parameter or environmental variable
(for details please take a look at MEMKIND_ARENA_NUM_PER_KIND section
of man/memkind.3).
- Added decorators to the memkind allocation APIs.
These are weak symbols (pre and post for each API) which can modify
the input and output of each of the calls.
- Significantly extended test base (new groups of tests: performance,
multithreaded, PMTT, nagtive, stress).
* Fri Jan 9 2015 Christopher Cantalupo <[email protected]> v0.2.0
- Bumped memkind ABI version to 0:1:0.
- Removed memkind_get_kind_for_free() from externally facing API's. Instead if
memkind_free() is called with zero passed for the kind then
memkind_get_kind_for_free() is called internally.
- Moved to single callback memkind_partition_mmap() to simplify
jemalloc modifications.
- Added hooks for setting file descriptor and offset for mmap enabling
file-backed memory kinds.
- Added a void pointer called "priv" to memkind structure for storing data for
user-defined kinds.
- Removed call to sched_getcpu(), now thread id is hashed to determine the arena
index.
- Added weak symbol hooks for decorating the heap management functions.
- Fixed several issues with init.d/memkind script and spec file scriptlets that
are exposed by SLES-12.
- Introduced an example library called numakind.
The numakind library will allocate from the closest NUMA node to a thread as
measured when that thread makes its first allocation call.
- Fixed error handling in memkind_gbtlb_mmap() that could cause a segfault when
gigabyte pages are not available.
- Added tests for PMTT parser.
- Removed binary mock PMTT table from source code, replaced it with a hexdump.
- Fixed a number of issues in test scripts which were suppressing errors.
- Removed unnecessary includes from header files.
- Better error checking in example code.
- Documentation update and clean up.
* Thu Nov 13 2014 Christopher Cantalupo <[email protected]> v0.1.0
- Increased test code coverage significantly.
- Fixed bug in memkind_error_message() for MEMKIND_ERROR_TOOMANY.
- Removed memkind_arena_free() API since it was redundant with memkind_default_free().
- Static memkind structs are now declared as extern in the headers and defined in the
source files files rather than being statically defined in the headers.
* Thu Oct 30 2014 Christopher Cantalupo <[email protected]> v0.0.9
- Now building with autotools.
- Updated documentation.
- Fixed typo in copyright.
- Fixed test scripts to properly handle return code of each test.
- Added C++03 standard allocator that uses hbw_malloc and hbw_free.
* Tue Sep 30 2014 Christopher Cantalupo <[email protected]> v0.0.8
- Added GBTLB functionality, code clean up, documentation updates,
examples directory. Examples includes stream modified to use
memkind interface. Code coverage still lacking, and documentation
incomplete.