Commit graph

2774 commits

Author SHA1 Message Date
Sergiy Kuryata
6a7b0ff591 Implement free space mask for abandoned segments at the arena level 2025-01-26 17:11:16 -08:00
Sergiy Kuryata
94bdbe41bb Add debug version to verify that correct build is used for testing 2025-01-08 10:20:26 -08:00
Sergiy Kuryata
5e16662cd4 Remove unused counters 2025-01-07 09:06:56 -08:00
Sergiy Kuryata
ad18e02994 Various performance tuning 2025-01-04 16:49:14 -08:00
Sergiy Kuryata
277abfeb48 Merge branch 'dev-slice-sk' of https://github.com/microsoft/mimalloc into dev-slice-sk 2024-12-28 11:48:51 -08:00
Sergiy Kuryata
08eee6ae82 Disable forced purge for abandoned segments 2024-12-28 11:46:30 -08:00
Sergiy Kuryata
c8faa8b0fb Ensure large and medium segments are droped when allocating a new
segment for medium and large objects
2024-12-19 07:52:30 -08:00
Sergiy Kuryata
df48b8b6c9 Ensure large and medium segments are droped when allocating a new
segment for medium and large objects
2024-12-17 13:17:28 -08:00
Sergiy Kuryata
f01f882dd6 Better handling for abandonded segments 2024-12-11 17:59:29 -08:00
Sergiy Kuryata
008bec3013 Clear out small object free space in large segments Part 2 2024-12-10 16:37:24 -08:00
Sergiy Kuryata
47edd8bd81 Clear out small object free space in large segments 2024-12-10 13:34:23 -08:00
Sergiy Kuryata
340f2a74bb Handle medium allocation in dedicated segments 2024-12-09 21:37:27 -08:00
Sergiy Kuryata
897f818f8d Disable detailed allocation counters 2024-12-08 21:20:46 -08:00
Sergiy Kuryata
5e7780cfbc Hanlde large allocations while droping excess of segments 2024-12-07 17:32:00 -08:00
Sergiy Kuryata
d19f103ea3 Handle large allocations in separate segments 2024-12-05 19:44:52 -08:00
Sergiy Kuryata
a9bd3205be Try separating pages with different slice counts 2024-12-04 23:21:43 -08:00
Sergiy Kuryata
8dd6460d5e Do not discard segments for large object allocations 2024-11-30 18:44:35 -08:00
Sergiy Kuryata
0be44b2b0f Add global counters for segments and allocation stats 2024-11-26 16:32:54 -08:00
Sergiy Kuryata
75eec9e61d Fix free space mask accounting for unused slices 2024-11-19 18:41:30 -08:00
Sergiy Kuryata
02f3e0fe7a Switch to 64bit bitmask and bug fixes 2024-11-08 17:35:14 -08:00
Sergiy Kuryata
d67fe5d26a Rotate through arenas in mi_arenas_try_purge instead of always purging arena 0 if visit_all is false. 2024-11-05 13:00:50 -08:00
Sergiy Kuryata
2a3b8eb696 Do not call mi_abandoned_collect on allocation path as it consumes substantial amount of CPU time 2024-11-04 21:22:45 -08:00
Sergiy Kuryata
911de68d3e Experimental optimization for the segment reclamation logic.
The goal is to improve efficiency of finding an abandoned segment that contains free space of the required size.
This change adds a free space bitmask to the segment object. More optimal place for the bitmask could be in the arena (i.e. extend the arena’s bitmask for abandoned segments to include size information too).
2024-10-31 16:53:14 -07:00
Sergiy Kuryata
b604099334 Experimental improvements to reduce memory usage
1. Prefer to use more loaded pages when allocating
2. Add an option to restrict unbounded heap growth and allow the excessive memory allocations to be re-used by other threads
2024-10-11 10:35:51 -07:00
Daan
8c532c32c3 Merge branch 'dev' into dev-slice 2024-05-21 12:25:21 -07:00
Daan
1f3ecec2e5 update readme 2024-05-21 12:25:13 -07:00
Daan
b907d76439 Merge branch 'dev' into dev-slice 2024-05-21 12:15:00 -07:00
Daan
4aa97336f7 remove the need for cmake patch in vcpkg port 2024-05-21 12:06:52 -07:00
Daan
998401b6d7 Merge branch 'dev' into dev-slice 2024-05-21 11:58:10 -07:00
Daan
bd04cec1c4 roll back export ignore on the bin directory as it needed by vcpkg (et al) to build on Windows 2024-05-21 11:57:52 -07:00
Daan
836ee0a94c add alpine docker files 2024-05-19 21:32:22 -07:00
daanx
d5ac4f7b95 add example docker file for testing on manylinux-x64 2024-05-19 20:42:58 -07:00
daanx
b9b321d328 use _builtin_thread_pointer also on gcc 11-x64 and clang-14-x64 2024-05-19 20:42:28 -07:00
Daan
d6ad058e44
Merge pull request #897 from madsmtm/patch-1
macOS: Fix linking statically
2024-05-19 15:49:50 -07:00
Daan
1462cc4e9a Merge branch 'dev' into dev-slice 2024-05-19 15:43:26 -07:00
Daan
9cd7e4cc68 rename library check to find_link_library 2024-05-19 15:43:15 -07:00
Daan
f739e4f2c3 check all link libraries (pthread, rt, and atomic) via check_linker_flag first before using find_library (see also issue #898 2024-05-19 15:38:26 -07:00
Daan
03224e17a0 bump cmake required version to 3.18 and detect libatomic more reliably, see pr #898 2024-05-19 13:25:31 -07:00
Daan
7ea7296d3e add malloc_good_size override maacro, see issue #900 and pr #901 2024-05-19 12:03:55 -07:00
Daan
65a0c82ac9 merge from dev (support for heap tag, upstream of python/cpython#113742 2024-05-19 08:10:35 -07:00
Daan
0c4041fa53 add support for custom heap and page tags, upstream of python/cpython#113742 2024-05-19 08:06:32 -07:00
Daan
b822a44cfe merge from dev, upstream of python/cpython#113263 2024-05-18 17:47:07 -07:00
Daan
710d6138c7 refactor thread meta-data initilazation, upstream of python/cpython#113263 2024-05-18 17:42:47 -07:00
Daan
66052f135f allow custom thread id, upstream of python/cpython#115488) 2024-05-18 17:05:13 -07:00
Daan
d4a7c0ffcc merge from dev 2024-05-18 16:57:35 -07:00
daanx
381da05d8a make mimalloc includes relative to the current file, upstream of python/cpython#113141 2024-05-18 16:48:58 -07:00
daanx
92a8268fa4 make warning an trace message if we cannot allocate at a hinted address, upstream of python/cpython#113372 2024-05-18 16:45:23 -07:00
daanx
c48a21215b fix arm64 windows compilation, upstream of python/cpython#111527 2024-05-18 16:41:39 -07:00
daanx
999b31fea6 allow syscall include on FreeBSD as well 2024-05-18 16:39:04 -07:00
daanx
87c4012f13 make syscall test in primitives positive and avoid unused function warnings. upstream python/cpython#111907, python/cpython#111593, python/cpython#117548 2024-05-18 16:37:40 -07:00