Commit Graph

130 Commits (e9d9f70ad48e428a8da10351cc8006ddcf2bfab0)

Author SHA1 Message Date
Daniel Micay 7f0bbddfca merge points about out-of-line / protected state 2019-04-23 01:58:37 -04:00
Daniel Micay 086eb1fee4 at a final spacing class of 1 slot size classes 2019-04-10 16:32:24 -04:00
Daniel Micay b31e8dacb1 document extended size classes 2019-04-10 08:42:32 -04:00
Daniel Micay 922c741915 it already supports Bionic, musl and glibc 2019-04-07 18:13:26 -04:00
Daniel Micay e0891c8cfc implement the option of large size classes
This extends the size class scheme used for slab allocations to large
allocations. This drastically improves performance for many real world
programs using incremental realloc growth instead of using proper growth
factors. There are 4 size classes for every doubling in size, resulting
in a worst case of ~20% extra virtual memory being reserved and a huge
increase in performance for pathological cases. For example, growing
from 4MiB to 8MiB by calling realloc in increments of 32 bytes will only
need to do work beyond looking up the size 4 times instead of 1024 times
with 4096 byte granularity.
2019-04-07 08:52:17 -04:00
Daniel Micay ec8fb347ed document CONFIG_STATS 2019-04-07 00:10:22 -04:00
Daniel Micay beaa39a5a3 move to only supporting current generation AOSP 2019-04-06 23:46:35 -04:00
Daniel Micay 494cc5ec50 update README now that arenas are implemented 2019-03-25 16:18:01 -04:00
Daniel Micay c5e911419d add initial implementation of arenas 2019-03-25 14:59:50 -04:00
Daniel Micay ddd616aa0b add documentation on system calls 2019-03-20 11:59:58 -04:00
Daniel Micay ae96835b94 fix scalability header levels 2019-02-04 15:59:14 -05:00
Daniel Micay e4061899aa add documentation on scalability design choices 2019-02-04 15:01:15 -05:00
Daniel Micay 41df5005e8 add a top-level header to the README 2019-02-04 13:59:19 -05:00
Daniel Micay 9cc0ac3efa add basic documentation on memory tagging approach 2019-02-04 11:58:28 -05:00
Daniel Micay 33b1a2740e update default slab quarantine sizes in README 2019-01-02 15:42:41 -05:00
Arlo Breault dea2788539 fix typo in README.md 2019-01-02 15:40:58 -05:00
Daniel Micay 57f115b33c scale slab quarantine based on size 2019-01-02 14:52:13 -05:00
Daniel Micay ccc2a86501 rename quarantine size -> length for clarity 2019-01-02 14:17:02 -05:00
Daniel Micay 830a7d338d make class_region_size configurable 2018-12-05 09:38:13 -05:00
Daniel Micay 11fe467b7c clarify wording 2018-11-19 08:04:37 -05:00
Daniel Micay c9dfe586b3 add initial documentation on API extensions 2018-11-19 06:54:48 -05:00
Daniel Micay 4d85a61db2 remove obsolete duplicate information 2018-11-19 06:31:58 -05:00
Daniel Micay d88a8c9813 mention that the same hash table code is reused 2018-11-19 05:45:34 -05:00
Daniel Micay 433b37b4a9 explain more of the size class reasoning 2018-11-19 01:44:46 -05:00
Daniel Micay a052be762d explain some differences from the previous project 2018-11-19 01:08:53 -05:00
Daniel Micay a5ed64d01a explain slot counts tied to slab size classes 2018-11-19 00:29:18 -05:00
Daniel Micay 5b048a28c2 improve explanation of jemalloc size classes 2018-11-19 00:29:15 -05:00
Daniel Micay ac99282773 remove duplicate word 2018-11-17 10:53:04 -05:00
Daniel Micay 54a0313d9b split out dependencies section 2018-11-16 18:41:27 -05:00
Daniel Micay d208d093a2 add more of an introduction describing the project 2018-11-16 18:39:19 -05:00
Daniel Micay 2bb568b473 improve documentation about mapping count 2018-11-16 18:04:46 -05:00
Daniel Micay 8a38c4fb2a add initial documentation for integer options 2018-11-16 15:40:48 -05:00
Daniel Micay f3623e1f2b finish migration away from config.h 2018-11-16 15:40:45 -05:00
Daniel Micay 315415acf2 clarify write-after-free detection feature 2018-11-16 03:26:07 -05:00
Daniel Micay 11c717a7b9 update progress on randomization 2018-11-05 18:06:54 -05:00
Daniel Micay 2d892e58ad per-slab canary values are good enough for now 2018-11-05 18:05:56 -05:00
Daniel Micay 3a488c9a27 add initial slab allocation quarantine 2018-11-05 16:43:08 -05:00
Daniel Micay ca465f6b3e clarify scope of sized dealloc mismatch detection 2018-11-04 18:52:01 -05:00
Daniel Micay 1fed72a9c3 slab internal fragmentation is always the same 2018-11-04 03:59:54 -05:00
Daniel Micay c12d6795de expand a bit on future config for slab cache size 2018-11-03 04:47:45 -04:00
Daniel Micay d5b773b2bc clarify documentation about the 0 byte size class 2018-11-03 04:43:47 -04:00
Daniel Micay f949698c7a note that MPK-based hardening is off by default 2018-11-03 03:15:42 -04:00
Daniel Micay f2a7ccde75 add basic overview of part of the approach to MTE 2018-11-03 03:09:03 -04:00
Daniel Micay 1da51ddde1 migrate bool configuration options out of config.h 2018-11-02 21:35:09 -04:00
Daniel Micay 5bee717134 use -march=native by default with a disable toggle 2018-10-28 22:49:15 -04:00
Daniel Micay 6f30211da8 some clarifications for the README 2018-10-28 20:28:10 -04:00
Daniel Micay e985afe0e1 document relatively high performance cost of MPK 2018-10-23 19:38:48 -04:00
Daniel Micay 0b963078d5 guard metadata with Memory Protection Keys (MPK) 2018-10-23 01:11:31 -04:00
Daniel Micay 64b655f062 set scope of planned metadata protection 2018-10-18 20:35:25 -04:00
Daniel Micay e37b36c9dd update configuration documentation again 2018-10-18 20:18:55 -04:00
Daniel Micay cf053e74d1 metadata region unification is completed 2018-10-18 16:10:49 -04:00
Daniel Micay 74139112d0 explain the purpose of CONFIG_CXX_ALLOCATOR 2018-10-18 14:57:33 -04:00
Daniel Micay da8e9aa1d8 document allocator state region 2018-10-15 15:44:31 -04:00
Daniel Micay e8eca2d430 explain the production-oriented design rationale 2018-10-15 04:07:20 -04:00
Daniel Micay 124d958da1 document free slabs quarantine 2018-10-14 22:19:10 -04:00
Daniel Micay 3504465584 document progress on protected allocator state 2018-10-14 22:15:48 -04:00
Daniel Micay 0a64c7d6a1 document the randomized array in the quarantine 2018-10-12 15:10:35 -04:00
Daniel Micay 2381d973b1 expand on metadata address space security 2018-10-10 18:55:31 -04:00
Daniel Micay 29fd86ab37 document sized deallocation validation 2018-10-10 18:49:17 -04:00
Daniel Micay 1a10c17e8b add quarantine for large allocations 2018-10-08 16:14:07 -04:00
Daniel Micay cf07ae6007 update configuration in README 2018-10-06 15:38:09 -04:00
Daniel Micay e6e9ac1fc9 support replacing C++ new/delete implementation
This adds support for sanity checks based on sized deallocation and will
reduce the overhead of calls through the C++ allocator.
2018-10-05 02:11:29 -04:00
Daniel Micay 08a633b244 fix another typo in the README 2018-10-04 04:12:21 -04:00
Daniel Micay e99191d5d4 document tuning vm.max_map_count 2018-10-04 03:44:19 -04:00
Daniel Micay d12cf324dd add documentation on testing 2018-10-04 03:27:30 -04:00
Daniel Micay 2a31c7291b add basic documentation on configuration 2018-10-04 03:15:55 -04:00
Daniel Micay 15e5e2d0ac fix typo in README 2018-10-03 17:23:20 -04:00
Daniel Micay b24569b6ca zero leading byte of canaries 2018-10-03 17:09:57 -04:00
Daniel Micay b52d9ca831 aggressive write-after-free check is implemented 2018-09-11 05:17:22 -04:00
Daniel Micay 3751b85e47 document minimum musl version for external use 2018-09-06 19:52:09 -04:00
Daniel Micay 1be74ec40d add initial guard slabs implementation 2018-09-06 18:55:24 -04:00
Daniel Micay bf55fad6d0 document that slab canaries are implemented 2018-09-05 00:19:27 -04:00
Daniel Micay 2ec65306dd expand documentation on supported environments 2018-09-02 06:05:37 -04:00
Daniel Micay e93d039214 only use reserved memory for regions hash table 2018-09-01 10:23:06 -04:00
Daniel Micay dba330fde7 expand documentation in the README 2018-08-30 11:12:43 -04:00
Daniel Micay b424c95737 clarify memory is zero on init without more writes 2018-08-27 01:14:36 -04:00
Daniel Micay 1b3d485e87 clarify that the slab design isn't like jemalloc 2018-08-26 07:19:58 -04:00
Daniel Micay c97bbc141c add missing word 2018-08-26 07:11:22 -04:00
Daniel Micay f793a2719f add some basic initial documentation to the README 2018-08-26 06:39:33 -04:00
Daniel Micay 510291646b document minimum versions for dependencies 2018-08-24 19:30:36 -04:00