at a final spacing class of 1 slot size classes
This commit is contained in:
parent
7a89a7b8c5
commit
086eb1fee4
35
README.md
35
README.md
@ -407,17 +407,18 @@ The slab allocation size classes end at 16384 since that's the final size for
|
|||||||
bytes on the target platforms. This is the minimum set of small size classes
|
bytes on the target platforms. This is the minimum set of small size classes
|
||||||
required to avoid substantial waste from rounding.
|
required to avoid substantial waste from rounding.
|
||||||
|
|
||||||
The `CONFIG_EXTENDED_SIZE_CLASSES` option extends the size classes up to 65536,
|
The `CONFIG_EXTENDED_SIZE_CLASSES` option extends the size classes up to
|
||||||
with a final spacing class of 16384. This offers improved performance compared
|
131072, with a final spacing class of 16384. This offers improved performance
|
||||||
to the minimum set of size classes. The security story is complicated, since
|
compared to the minimum set of size classes. The security story is complicated,
|
||||||
the slab allocation has both advantages like size class isolation completely
|
since the slab allocation has both advantages like size class isolation
|
||||||
avoiding reuse of any of the address space for any other size classes or other
|
completely avoiding reuse of any of the address space for any other size
|
||||||
data. It also has disadvantages like caching a small number of empty slabs and
|
classes or other data. It also has disadvantages like caching a small number of
|
||||||
deterministic guard sizes. The cache will be configurable in the future, making
|
empty slabs and deterministic guard sizes. The cache will be configurable in
|
||||||
it possible to disable slab caching for the largest slab allocation sizes, to
|
the future, making it possible to disable slab caching for the largest slab
|
||||||
force unmapping them immediately and putting them in the slab quarantine, which
|
allocation sizes, to force unmapping them immediately and putting them in the
|
||||||
eliminates most of the security disadvantage at the expense of also giving up
|
slab quarantine, which eliminates most of the security disadvantage at the
|
||||||
most of the performance advantage, but while retaining the isolation.
|
expense of also giving up most of the performance advantage, but while
|
||||||
|
retaining the isolation.
|
||||||
|
|
||||||
| size class | worst case internal fragmentation | slab slots | slab size | internal fragmentation for slabs |
|
| size class | worst case internal fragmentation | slab slots | slab size | internal fragmentation for slabs |
|
||||||
| - | - | - | - | - |
|
| - | - | - | - | - |
|
||||||
@ -425,10 +426,14 @@ most of the performance advantage, but while retaining the isolation.
|
|||||||
| 24576 | 16.66259765625% | 2 | 49152 | 0.0% |
|
| 24576 | 16.66259765625% | 2 | 49152 | 0.0% |
|
||||||
| 28672 | 14.2822265625% | 2 | 57344 | 0.0% |
|
| 28672 | 14.2822265625% | 2 | 57344 | 0.0% |
|
||||||
| 32768 | 12.4969482421875% | 2 | 65536 | 0.0% |
|
| 32768 | 12.4969482421875% | 2 | 65536 | 0.0% |
|
||||||
| 40960 | 19.99755859375% | 2 | 81920 | 0.0% |
|
| 40960 | 19.99755859375% | 1 | 40960 | 0.0% |
|
||||||
| 49152 | 16.664632161458343% | 2 | 98304 | 0.0% |
|
| 49152 | 16.664632161458343% | 1 | 49152 | 0.0% |
|
||||||
| 57344 | 14.283970424107139% | 2 | 114688 | 0.0% |
|
| 57344 | 14.283970424107139% | 1 | 57344 | 0.0% |
|
||||||
| 65536 | 12.49847412109375% | 2 | 131072 | 0.0% |
|
| 65536 | 12.49847412109375% | 1 | 65536 | 0.0% |
|
||||||
|
| 81920 | 19.998779296875% | 1 | 81920 | 0.0% |
|
||||||
|
| 98304 | 16.6656494140625% | 1 | 98304 | 0.0% |
|
||||||
|
| 114688 | 14.284842354910708% | 1 | 114688 | 0.0% |
|
||||||
|
| 131072 | 12.499237060546875% | 1 | 131072 | 0.0% |
|
||||||
|
|
||||||
The `CONFIG_LARGE_SIZE_CLASSES` option controls whether large allocations use
|
The `CONFIG_LARGE_SIZE_CLASSES` option controls whether large allocations use
|
||||||
the same size class scheme providing 4 size classes for every doubling of size.
|
the same size class scheme providing 4 size classes for every doubling of size.
|
||||||
|
@ -12,7 +12,8 @@ size_classes = [
|
|||||||
5120, 6144, 7168, 8192,
|
5120, 6144, 7168, 8192,
|
||||||
10240, 12288, 14336, 16384,
|
10240, 12288, 14336, 16384,
|
||||||
20480, 24576, 28672, 32768,
|
20480, 24576, 28672, 32768,
|
||||||
40960, 49152, 57344, 65536
|
40960, 49152, 57344, 65536,
|
||||||
|
81920, 98304, 114688, 131072,
|
||||||
]
|
]
|
||||||
|
|
||||||
size_class_slots = [
|
size_class_slots = [
|
||||||
@ -25,7 +26,8 @@ size_class_slots = [
|
|||||||
8, 8, 8, 8,
|
8, 8, 8, 8,
|
||||||
6, 5, 4, 4,
|
6, 5, 4, 4,
|
||||||
2, 2, 2, 2,
|
2, 2, 2, 2,
|
||||||
2, 2, 2, 2
|
1, 1, 1, 1,
|
||||||
|
1, 1, 1, 1,
|
||||||
]
|
]
|
||||||
|
|
||||||
fragmentation = [100 - 1 / 16 * 100]
|
fragmentation = [100 - 1 / 16 * 100]
|
||||||
|
@ -119,6 +119,7 @@ static const u32 size_classes[] = {
|
|||||||
#if CONFIG_EXTENDED_SIZE_CLASSES
|
#if CONFIG_EXTENDED_SIZE_CLASSES
|
||||||
/* 4096 */ 20480, 24576, 28672, 32768,
|
/* 4096 */ 20480, 24576, 28672, 32768,
|
||||||
/* 8192 */ 40960, 49152, 57344, 65536,
|
/* 8192 */ 40960, 49152, 57344, 65536,
|
||||||
|
/* 16384 */ 81920, 98304, 114688, 131072,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -135,6 +136,7 @@ static const u16 size_class_slots[] = {
|
|||||||
#if CONFIG_EXTENDED_SIZE_CLASSES
|
#if CONFIG_EXTENDED_SIZE_CLASSES
|
||||||
/* 4096 */ 2, 2, 2, 2,
|
/* 4096 */ 2, 2, 2, 2,
|
||||||
/* 8192 */ 1, 1, 1, 1,
|
/* 8192 */ 1, 1, 1, 1,
|
||||||
|
/* 16384 */ 1, 1, 1, 1,
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -152,6 +154,7 @@ static const char *const size_class_labels[] = {
|
|||||||
#if CONFIG_EXTENDED_SIZE_CLASSES
|
#if CONFIG_EXTENDED_SIZE_CLASSES
|
||||||
/* 4096 */ "malloc 20480", "malloc 24576", "malloc 28672", "malloc 32768",
|
/* 4096 */ "malloc 20480", "malloc 24576", "malloc 28672", "malloc 32768",
|
||||||
/* 8192 */ "malloc 40960", "malloc 49152", "malloc 57344", "malloc 65536",
|
/* 8192 */ "malloc 40960", "malloc 49152", "malloc 57344", "malloc 65536",
|
||||||
|
/* 16384 */ "malloc 81920", "malloc 98304", "malloc 114688", "malloc 131072",
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user