Permalink
Cannot retrieve contributors at this time
711 lines (705 sloc)
33 KB
| // Copyright 2019 The TCMalloc Authors | |
| // | |
| // Licensed under the Apache License, Version 2.0 (the "License"); | |
| // you may not use this file except in compliance with the License. | |
| // You may obtain a copy of the License at | |
| // | |
| // https://www.apache.org/licenses/LICENSE-2.0 | |
| // | |
| // Unless required by applicable law or agreed to in writing, software | |
| // distributed under the License is distributed on an "AS IS" BASIS, | |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| // See the License for the specific language governing permissions and | |
| // limitations under the License. | |
| #include "tcmalloc/common.h" | |
| GOOGLE_MALLOC_SECTION_BEGIN | |
| namespace tcmalloc { | |
| namespace tcmalloc_internal { | |
| // <fixed> is fixed per-size-class overhead due to end-of-span fragmentation | |
| // and other factors. For instance, if we have a 96 byte size class, and use a | |
| // single 8KiB page, then we will hold 85 objects per span, and have 32 bytes | |
| // left over. There is also a fixed component of 48 bytes of TCMalloc metadata | |
| // per span. Together, the fixed overhead would be wasted/allocated = | |
| // (32 + 48) / (8192 - 32) ~= 0.98%. | |
| // There is also a dynamic component to overhead based on mismatches between the | |
| // number of bytes requested and the number of bytes provided by the size class. | |
| // Together they sum to the total overhead; for instance if you asked for a | |
| // 50-byte allocation that rounds up to a 64-byte size class, the dynamic | |
| // overhead would be 28%, and if <fixed> were 22% it would mean (on average) | |
| // 25 bytes of overhead for allocations of that size. | |
| // clang-format off | |
| #if defined(__cpp_aligned_new) && __STDCPP_DEFAULT_NEW_ALIGNMENT__ <= 8 | |
| #if TCMALLOC_PAGE_SHIFT == 13 | |
| static_assert(kMaxSize == 262144, "kMaxSize mismatch"); | |
| static const int kCount = 86; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 0.59% | |
| { 16, 1, 32}, // 0.59% | |
| { 24, 1, 32}, // 0.68% | |
| { 32, 1, 32}, // 0.59% | |
| { 40, 1, 32}, // 0.98% | |
| { 48, 1, 32}, // 0.98% | |
| { 56, 1, 32}, // 0.78% | |
| { 64, 1, 32}, // 0.59% | |
| { 72, 1, 32}, // 1.28% | |
| { 80, 1, 32}, // 0.98% | |
| { 88, 1, 32}, // 0.68% | |
| { 96, 1, 32}, // 0.98% | |
| { 104, 1, 32}, // 1.58% | |
| { 112, 1, 32}, // 0.78% | |
| { 120, 1, 32}, // 0.98% | |
| { 128, 1, 32}, // 0.59% | |
| { 136, 1, 32}, // 0.98% | |
| { 144, 1, 32}, // 2.18% | |
| { 160, 1, 32}, // 0.98% | |
| { 176, 1, 32}, // 1.78% | |
| { 192, 1, 32}, // 2.18% | |
| { 208, 1, 32}, // 1.58% | |
| { 224, 1, 32}, // 2.18% | |
| { 240, 1, 32}, // 0.98% | |
| { 256, 1, 32}, // 0.59% | |
| { 272, 1, 32}, // 0.98% | |
| { 296, 1, 32}, // 3.10% | |
| { 312, 1, 32}, // 1.58% | |
| { 336, 1, 32}, // 2.18% | |
| { 352, 1, 32}, // 1.78% | |
| { 368, 1, 32}, // 1.78% | |
| { 408, 1, 32}, // 0.98% | |
| { 448, 1, 32}, // 2.18% | |
| { 480, 1, 32}, // 0.98% | |
| { 512, 1, 32}, // 0.59% | |
| { 576, 1, 32}, // 2.18% | |
| { 640, 1, 32}, // 7.29% | |
| { 704, 1, 32}, // 6.40% | |
| { 768, 1, 32}, // 7.29% | |
| { 896, 1, 32}, // 2.18% | |
| { 1024, 1, 32}, // 0.59% | |
| { 1152, 2, 32}, // 1.88% | |
| { 1280, 2, 32}, // 6.98% | |
| { 1408, 2, 32}, // 6.10% | |
| { 1536, 2, 32}, // 6.98% | |
| { 1792, 2, 32}, // 1.88% | |
| { 2048, 2, 32}, // 0.29% | |
| { 2304, 2, 28}, // 1.88% | |
| { 2688, 2, 24}, // 1.88% | |
| { 2816, 3, 23}, // 9.30% | |
| { 3200, 2, 20}, // 2.70% | |
| { 3456, 3, 18}, // 1.79% | |
| { 3584, 4, 18}, // 1.74% | |
| { 4096, 1, 16}, // 0.29% | |
| { 4736, 3, 13}, // 3.99% | |
| { 5376, 2, 12}, // 1.88% | |
| { 6144, 3, 10}, // 0.20% | |
| { 6528, 4, 10}, // 0.54% | |
| { 7168, 7, 9}, // 0.08% | |
| { 8192, 1, 8}, // 0.29% | |
| { 9472, 5, 6}, // 8.23% | |
| { 10240, 4, 6}, // 6.82% | |
| { 12288, 3, 5}, // 0.20% | |
| { 13568, 5, 4}, // 0.75% | |
| { 14336, 7, 4}, // 0.08% | |
| { 16384, 2, 4}, // 0.29% | |
| { 20480, 5, 3}, // 0.12% | |
| { 24576, 3, 2}, // 0.20% | |
| { 28672, 7, 2}, // 0.08% | |
| { 32768, 4, 2}, // 0.15% | |
| { 40960, 5, 2}, // 0.12% | |
| { 49152, 6, 2}, // 0.10% | |
| { 57344, 7, 2}, // 0.08% | |
| { 65536, 8, 2}, // 0.07% | |
| { 73728, 9, 2}, // 0.07% | |
| { 81920, 10, 2}, // 0.06% | |
| { 98304, 12, 2}, // 0.05% | |
| { 114688, 14, 2}, // 0.04% | |
| { 131072, 16, 2}, // 0.04% | |
| { 147456, 18, 2}, // 0.03% | |
| { 163840, 20, 2}, // 0.03% | |
| { 180224, 22, 2}, // 0.03% | |
| { 204800, 25, 2}, // 0.02% | |
| { 237568, 29, 2}, // 0.02% | |
| { 262144, 32, 2}, // 0.02% | |
| }; | |
| #elif TCMALLOC_PAGE_SHIFT == 15 | |
| static_assert(kMaxSize == 262144, "kMaxSize mismatch"); | |
| static const int kCount = 78; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 0.15% | |
| { 16, 1, 32}, // 0.15% | |
| { 24, 1, 32}, // 0.17% | |
| { 32, 1, 32}, // 0.15% | |
| { 40, 1, 32}, // 0.17% | |
| { 48, 1, 32}, // 0.24% | |
| { 56, 1, 32}, // 0.17% | |
| { 64, 1, 32}, // 0.15% | |
| { 72, 1, 32}, // 0.17% | |
| { 80, 1, 32}, // 0.29% | |
| { 88, 1, 32}, // 0.24% | |
| { 96, 1, 32}, // 0.24% | |
| { 104, 1, 32}, // 0.17% | |
| { 112, 1, 32}, // 0.34% | |
| { 128, 1, 32}, // 0.15% | |
| { 144, 1, 32}, // 0.39% | |
| { 160, 1, 32}, // 0.54% | |
| { 176, 1, 32}, // 0.24% | |
| { 192, 1, 32}, // 0.54% | |
| { 208, 1, 32}, // 0.49% | |
| { 224, 1, 32}, // 0.34% | |
| { 240, 1, 32}, // 0.54% | |
| { 256, 1, 32}, // 0.15% | |
| { 280, 1, 32}, // 0.17% | |
| { 304, 1, 32}, // 0.89% | |
| { 328, 1, 32}, // 1.06% | |
| { 352, 1, 32}, // 0.24% | |
| { 384, 1, 32}, // 0.54% | |
| { 416, 1, 32}, // 1.13% | |
| { 448, 1, 32}, // 0.34% | |
| { 488, 1, 32}, // 0.37% | |
| { 512, 1, 32}, // 0.15% | |
| { 576, 1, 32}, // 1.74% | |
| { 640, 1, 32}, // 0.54% | |
| { 704, 1, 32}, // 1.33% | |
| { 832, 1, 32}, // 1.13% | |
| { 896, 1, 32}, // 1.74% | |
| { 1024, 1, 32}, // 0.15% | |
| { 1152, 1, 32}, // 1.74% | |
| { 1280, 1, 32}, // 2.55% | |
| { 1536, 1, 32}, // 1.74% | |
| { 1792, 1, 32}, // 1.74% | |
| { 2048, 1, 32}, // 0.15% | |
| { 2176, 1, 30}, // 0.54% | |
| { 2304, 1, 28}, // 1.74% | |
| { 2688, 1, 24}, // 1.74% | |
| { 2944, 1, 22}, // 1.33% | |
| { 3200, 1, 20}, // 2.55% | |
| { 3584, 1, 18}, // 1.74% | |
| { 4096, 1, 16}, // 0.15% | |
| { 4608, 1, 14}, // 1.74% | |
| { 5376, 1, 12}, // 1.74% | |
| { 6528, 1, 10}, // 0.54% | |
| { 7168, 2, 9}, // 1.66% | |
| { 8192, 1, 8}, // 0.15% | |
| { 9344, 2, 7}, // 0.27% | |
| { 10880, 1, 6}, // 0.54% | |
| { 13952, 3, 4}, // 0.70% | |
| { 16384, 1, 4}, // 0.15% | |
| { 19072, 3, 3}, // 3.14% | |
| { 21760, 2, 3}, // 0.47% | |
| { 24576, 3, 2}, // 0.05% | |
| { 28032, 6, 2}, // 0.22% | |
| { 32768, 1, 2}, // 0.15% | |
| { 38144, 5, 2}, // 7.41% | |
| { 40960, 4, 2}, // 6.71% | |
| { 49152, 3, 2}, // 0.05% | |
| { 57344, 7, 2}, // 0.02% | |
| { 65536, 2, 2}, // 0.07% | |
| { 81920, 5, 2}, // 0.03% | |
| { 98304, 3, 2}, // 0.05% | |
| { 114688, 7, 2}, // 0.02% | |
| { 131072, 4, 2}, // 0.04% | |
| { 163840, 5, 2}, // 0.03% | |
| { 196608, 6, 2}, // 0.02% | |
| { 229376, 7, 2}, // 0.02% | |
| { 262144, 8, 2}, // 0.02% | |
| }; | |
| #elif TCMALLOC_PAGE_SHIFT == 18 | |
| static_assert(kMaxSize == 262144, "kMaxSize mismatch"); | |
| static const int kCount = 89; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 0.02% | |
| { 16, 1, 32}, // 0.02% | |
| { 24, 1, 32}, // 0.02% | |
| { 32, 1, 32}, // 0.02% | |
| { 40, 1, 32}, // 0.03% | |
| { 48, 1, 32}, // 0.02% | |
| { 56, 1, 32}, // 0.02% | |
| { 64, 1, 32}, // 0.02% | |
| { 72, 1, 32}, // 0.04% | |
| { 80, 1, 32}, // 0.04% | |
| { 88, 1, 32}, // 0.05% | |
| { 96, 1, 32}, // 0.04% | |
| { 104, 1, 32}, // 0.04% | |
| { 112, 1, 32}, // 0.04% | |
| { 128, 1, 32}, // 0.02% | |
| { 144, 1, 32}, // 0.04% | |
| { 160, 1, 32}, // 0.04% | |
| { 176, 1, 32}, // 0.05% | |
| { 192, 1, 32}, // 0.04% | |
| { 208, 1, 32}, // 0.04% | |
| { 240, 1, 32}, // 0.04% | |
| { 256, 1, 32}, // 0.02% | |
| { 304, 1, 32}, // 0.05% | |
| { 336, 1, 32}, // 0.04% | |
| { 360, 1, 32}, // 0.04% | |
| { 408, 1, 32}, // 0.10% | |
| { 456, 1, 32}, // 0.17% | |
| { 512, 1, 32}, // 0.02% | |
| { 576, 1, 32}, // 0.04% | |
| { 640, 1, 32}, // 0.17% | |
| { 704, 1, 32}, // 0.12% | |
| { 768, 1, 32}, // 0.12% | |
| { 832, 1, 32}, // 0.04% | |
| { 896, 1, 32}, // 0.21% | |
| { 1024, 1, 32}, // 0.02% | |
| { 1152, 1, 32}, // 0.26% | |
| { 1280, 1, 32}, // 0.41% | |
| { 1536, 1, 32}, // 0.41% | |
| { 1664, 1, 32}, // 0.36% | |
| { 1792, 1, 32}, // 0.21% | |
| { 1920, 1, 32}, // 0.41% | |
| { 2048, 1, 32}, // 0.02% | |
| { 2176, 1, 30}, // 0.41% | |
| { 2304, 1, 28}, // 0.71% | |
| { 2432, 1, 26}, // 0.76% | |
| { 2560, 1, 25}, // 0.41% | |
| { 2688, 1, 24}, // 0.56% | |
| { 2816, 1, 23}, // 0.12% | |
| { 2944, 1, 22}, // 0.07% | |
| { 3072, 1, 21}, // 0.41% | |
| { 3328, 1, 19}, // 1.00% | |
| { 3584, 1, 18}, // 0.21% | |
| { 3840, 1, 17}, // 0.41% | |
| { 4096, 1, 16}, // 0.02% | |
| { 4736, 1, 13}, // 0.66% | |
| { 5504, 1, 11}, // 1.35% | |
| { 6144, 1, 10}, // 1.61% | |
| { 6528, 1, 10}, // 0.41% | |
| { 6784, 1, 9}, // 1.71% | |
| { 7168, 1, 9}, // 1.61% | |
| { 7680, 1, 8}, // 0.41% | |
| { 8192, 1, 8}, // 0.02% | |
| { 8704, 1, 7}, // 0.41% | |
| { 9344, 1, 7}, // 0.21% | |
| { 10880, 1, 6}, // 0.41% | |
| { 11904, 1, 5}, // 0.12% | |
| { 13056, 1, 5}, // 0.41% | |
| { 14464, 1, 4}, // 0.71% | |
| { 16384, 1, 4}, // 0.02% | |
| { 18688, 1, 3}, // 0.21% | |
| { 21760, 1, 3}, // 0.41% | |
| { 26112, 1, 2}, // 0.41% | |
| { 29056, 1, 2}, // 0.26% | |
| { 32768, 1, 2}, // 0.02% | |
| { 37376, 1, 2}, // 0.21% | |
| { 43648, 1, 2}, // 0.12% | |
| { 52352, 1, 2}, // 0.17% | |
| { 56064, 2, 2}, // 3.92% | |
| { 65536, 1, 2}, // 0.02% | |
| { 74880, 2, 2}, // 0.03% | |
| { 87296, 1, 2}, // 0.12% | |
| { 104832, 2, 2}, // 0.03% | |
| { 112256, 3, 2}, // 0.09% | |
| { 131072, 1, 2}, // 0.02% | |
| { 149760, 3, 2}, // 5.03% | |
| { 174720, 2, 2}, // 0.03% | |
| { 209664, 4, 2}, // 0.03% | |
| { 262144, 1, 2}, // 0.02% | |
| }; | |
| #elif TCMALLOC_PAGE_SHIFT == 12 | |
| static_assert(kMaxSize == 8192, "kMaxSize mismatch"); | |
| static const int kCount = 46; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 1.17% | |
| { 16, 1, 32}, // 1.17% | |
| { 24, 1, 32}, // 1.57% | |
| { 32, 1, 32}, // 1.17% | |
| { 40, 1, 32}, // 1.57% | |
| { 48, 1, 32}, // 1.57% | |
| { 56, 1, 32}, // 1.37% | |
| { 64, 1, 32}, // 1.17% | |
| { 72, 1, 32}, // 2.78% | |
| { 80, 1, 32}, // 1.57% | |
| { 88, 1, 32}, // 2.37% | |
| { 96, 1, 32}, // 2.78% | |
| { 104, 1, 32}, // 2.17% | |
| { 120, 1, 32}, // 1.57% | |
| { 128, 1, 32}, // 1.17% | |
| { 144, 1, 32}, // 2.78% | |
| { 160, 1, 32}, // 3.60% | |
| { 184, 1, 32}, // 2.37% | |
| { 208, 1, 32}, // 4.86% | |
| { 240, 1, 32}, // 1.57% | |
| { 256, 1, 32}, // 1.17% | |
| { 272, 1, 32}, // 1.57% | |
| { 312, 1, 32}, // 2.17% | |
| { 336, 1, 32}, // 2.78% | |
| { 368, 1, 32}, // 2.37% | |
| { 408, 1, 32}, // 1.57% | |
| { 512, 1, 32}, // 1.17% | |
| { 576, 2, 32}, // 2.18% | |
| { 704, 2, 32}, // 6.40% | |
| { 768, 2, 32}, // 7.29% | |
| { 896, 2, 32}, // 2.18% | |
| { 1024, 2, 32}, // 0.59% | |
| { 1152, 3, 32}, // 7.08% | |
| { 1280, 3, 32}, // 7.08% | |
| { 1536, 3, 32}, // 0.39% | |
| { 1792, 4, 32}, // 1.88% | |
| { 2048, 4, 32}, // 0.29% | |
| { 2304, 4, 28}, // 1.88% | |
| { 2688, 4, 24}, // 1.88% | |
| { 3456, 6, 18}, // 1.79% | |
| { 4096, 4, 16}, // 0.29% | |
| { 5376, 4, 12}, // 1.88% | |
| { 6144, 3, 10}, // 0.39% | |
| { 7168, 7, 9}, // 0.17% | |
| { 8192, 4, 8}, // 0.29% | |
| }; | |
| #else | |
| #error "Unsupported TCMALLOC_PAGE_SHIFT value!" | |
| #endif | |
| #else | |
| #if TCMALLOC_PAGE_SHIFT == 13 | |
| static_assert(kMaxSize == 262144, "kMaxSize mismatch"); | |
| static const int kCount = 86; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 0.59% | |
| { 16, 1, 32}, // 0.59% | |
| { 32, 1, 32}, // 0.59% | |
| { 48, 1, 32}, // 0.98% | |
| { 64, 1, 32}, // 0.59% | |
| { 80, 1, 32}, // 0.98% | |
| { 96, 1, 32}, // 0.98% | |
| { 112, 1, 32}, // 0.78% | |
| { 128, 1, 32}, // 0.59% | |
| { 144, 1, 32}, // 2.18% | |
| { 160, 1, 32}, // 0.98% | |
| { 176, 1, 32}, // 1.78% | |
| { 192, 1, 32}, // 2.18% | |
| { 208, 1, 32}, // 1.58% | |
| { 224, 1, 32}, // 2.18% | |
| { 240, 1, 32}, // 0.98% | |
| { 256, 1, 32}, // 0.59% | |
| { 272, 1, 32}, // 0.98% | |
| { 288, 1, 32}, // 2.18% | |
| { 304, 1, 32}, // 4.25% | |
| { 320, 1, 32}, // 3.00% | |
| { 336, 1, 32}, // 2.18% | |
| { 352, 1, 32}, // 1.78% | |
| { 368, 1, 32}, // 1.78% | |
| { 384, 1, 32}, // 2.18% | |
| { 400, 1, 32}, // 3.00% | |
| { 416, 1, 32}, // 4.25% | |
| { 448, 1, 32}, // 2.18% | |
| { 480, 1, 32}, // 0.98% | |
| { 512, 1, 32}, // 0.59% | |
| { 576, 1, 32}, // 2.18% | |
| { 640, 1, 32}, // 7.29% | |
| { 704, 1, 32}, // 6.40% | |
| { 768, 1, 32}, // 7.29% | |
| { 896, 1, 32}, // 2.18% | |
| { 1024, 1, 32}, // 0.59% | |
| { 1152, 2, 32}, // 1.88% | |
| { 1280, 2, 32}, // 6.98% | |
| { 1408, 2, 32}, // 6.10% | |
| { 1536, 2, 32}, // 6.98% | |
| { 1792, 2, 32}, // 1.88% | |
| { 2048, 2, 32}, // 0.29% | |
| { 2304, 2, 28}, // 1.88% | |
| { 2688, 2, 24}, // 1.88% | |
| { 2816, 3, 23}, // 9.30% | |
| { 3200, 2, 20}, // 2.70% | |
| { 3456, 3, 18}, // 1.79% | |
| { 3584, 4, 18}, // 1.74% | |
| { 4096, 1, 16}, // 0.29% | |
| { 4736, 3, 13}, // 3.99% | |
| { 5376, 2, 12}, // 1.88% | |
| { 6144, 3, 10}, // 0.20% | |
| { 6528, 4, 10}, // 0.54% | |
| { 6784, 5, 9}, // 0.75% | |
| { 7168, 7, 9}, // 0.08% | |
| { 8192, 1, 8}, // 0.29% | |
| { 9472, 5, 6}, // 8.23% | |
| { 10240, 4, 6}, // 6.82% | |
| { 12288, 3, 5}, // 0.20% | |
| { 13568, 5, 4}, // 0.75% | |
| { 14336, 7, 4}, // 0.08% | |
| { 16384, 2, 4}, // 0.29% | |
| { 20480, 5, 3}, // 0.12% | |
| { 24576, 3, 2}, // 0.20% | |
| { 28672, 7, 2}, // 0.08% | |
| { 32768, 4, 2}, // 0.15% | |
| { 40960, 5, 2}, // 0.12% | |
| { 49152, 6, 2}, // 0.10% | |
| { 57344, 7, 2}, // 0.08% | |
| { 65536, 8, 2}, // 0.07% | |
| { 73728, 9, 2}, // 0.07% | |
| { 81920, 10, 2}, // 0.06% | |
| { 90112, 11, 2}, // 0.05% | |
| { 98304, 12, 2}, // 0.05% | |
| { 106496, 13, 2}, // 0.05% | |
| { 114688, 14, 2}, // 0.04% | |
| { 131072, 16, 2}, // 0.04% | |
| { 139264, 17, 2}, // 0.03% | |
| { 155648, 19, 2}, // 0.03% | |
| { 172032, 21, 2}, // 0.03% | |
| { 188416, 23, 2}, // 0.03% | |
| { 204800, 25, 2}, // 0.02% | |
| { 221184, 27, 2}, // 0.02% | |
| { 237568, 29, 2}, // 0.02% | |
| { 262144, 32, 2}, // 0.02% | |
| }; | |
| #elif TCMALLOC_PAGE_SHIFT == 15 | |
| static_assert(kMaxSize == 262144, "kMaxSize mismatch"); | |
| static const int kCount = 78; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 0.15% | |
| { 16, 1, 32}, // 0.15% | |
| { 32, 1, 32}, // 0.15% | |
| { 48, 1, 32}, // 0.24% | |
| { 64, 1, 32}, // 0.15% | |
| { 80, 1, 32}, // 0.29% | |
| { 96, 1, 32}, // 0.24% | |
| { 112, 1, 32}, // 0.34% | |
| { 128, 1, 32}, // 0.15% | |
| { 144, 1, 32}, // 0.39% | |
| { 160, 1, 32}, // 0.54% | |
| { 176, 1, 32}, // 0.24% | |
| { 192, 1, 32}, // 0.54% | |
| { 208, 1, 32}, // 0.49% | |
| { 224, 1, 32}, // 0.34% | |
| { 240, 1, 32}, // 0.54% | |
| { 256, 1, 32}, // 0.15% | |
| { 272, 1, 32}, // 0.54% | |
| { 288, 1, 32}, // 0.84% | |
| { 304, 1, 32}, // 0.89% | |
| { 320, 1, 32}, // 0.54% | |
| { 336, 1, 32}, // 0.69% | |
| { 352, 1, 32}, // 0.24% | |
| { 384, 1, 32}, // 0.54% | |
| { 416, 1, 32}, // 1.13% | |
| { 448, 1, 32}, // 0.34% | |
| { 480, 1, 32}, // 0.54% | |
| { 512, 1, 32}, // 0.15% | |
| { 576, 1, 32}, // 1.74% | |
| { 640, 1, 32}, // 0.54% | |
| { 704, 1, 32}, // 1.33% | |
| { 768, 1, 32}, // 1.74% | |
| { 832, 1, 32}, // 1.13% | |
| { 896, 1, 32}, // 1.74% | |
| { 1024, 1, 32}, // 0.15% | |
| { 1152, 1, 32}, // 1.74% | |
| { 1280, 1, 32}, // 2.55% | |
| { 1408, 1, 32}, // 1.33% | |
| { 1536, 1, 32}, // 1.74% | |
| { 1792, 1, 32}, // 1.74% | |
| { 2048, 1, 32}, // 0.15% | |
| { 2176, 1, 30}, // 0.54% | |
| { 2304, 1, 28}, // 1.74% | |
| { 2432, 1, 26}, // 3.80% | |
| { 2688, 1, 24}, // 1.74% | |
| { 2944, 1, 22}, // 1.33% | |
| { 3200, 1, 20}, // 2.55% | |
| { 3584, 1, 18}, // 1.74% | |
| { 4096, 1, 16}, // 0.15% | |
| { 4608, 1, 14}, // 1.74% | |
| { 5376, 1, 12}, // 1.74% | |
| { 6528, 1, 10}, // 0.54% | |
| { 7168, 2, 9}, // 1.66% | |
| { 8192, 1, 8}, // 0.15% | |
| { 9344, 2, 7}, // 0.27% | |
| { 10880, 1, 6}, // 0.54% | |
| { 13056, 2, 5}, // 0.47% | |
| { 13952, 3, 4}, // 0.70% | |
| { 16384, 1, 4}, // 0.15% | |
| { 19072, 3, 3}, // 3.14% | |
| { 21760, 2, 3}, // 0.47% | |
| { 24576, 3, 2}, // 0.05% | |
| { 28032, 6, 2}, // 0.22% | |
| { 32768, 1, 2}, // 0.15% | |
| { 38144, 5, 2}, // 7.41% | |
| { 40960, 4, 2}, // 6.71% | |
| { 49152, 3, 2}, // 0.05% | |
| { 57344, 7, 2}, // 0.02% | |
| { 65536, 2, 2}, // 0.07% | |
| { 81920, 5, 2}, // 0.03% | |
| { 98304, 3, 2}, // 0.05% | |
| { 114688, 7, 2}, // 0.02% | |
| { 131072, 4, 2}, // 0.04% | |
| { 163840, 5, 2}, // 0.03% | |
| { 196608, 6, 2}, // 0.02% | |
| { 229376, 7, 2}, // 0.02% | |
| { 262144, 8, 2}, // 0.02% | |
| }; | |
| #elif TCMALLOC_PAGE_SHIFT == 18 | |
| static_assert(kMaxSize == 262144, "kMaxSize mismatch"); | |
| static const int kCount = 89; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 0.02% | |
| { 16, 1, 32}, // 0.02% | |
| { 32, 1, 32}, // 0.02% | |
| { 48, 1, 32}, // 0.02% | |
| { 64, 1, 32}, // 0.02% | |
| { 80, 1, 32}, // 0.04% | |
| { 96, 1, 32}, // 0.04% | |
| { 112, 1, 32}, // 0.04% | |
| { 128, 1, 32}, // 0.02% | |
| { 144, 1, 32}, // 0.04% | |
| { 160, 1, 32}, // 0.04% | |
| { 176, 1, 32}, // 0.05% | |
| { 192, 1, 32}, // 0.04% | |
| { 208, 1, 32}, // 0.04% | |
| { 240, 1, 32}, // 0.04% | |
| { 256, 1, 32}, // 0.02% | |
| { 304, 1, 32}, // 0.05% | |
| { 336, 1, 32}, // 0.04% | |
| { 368, 1, 32}, // 0.07% | |
| { 416, 1, 32}, // 0.04% | |
| { 464, 1, 32}, // 0.19% | |
| { 512, 1, 32}, // 0.02% | |
| { 576, 1, 32}, // 0.04% | |
| { 640, 1, 32}, // 0.17% | |
| { 704, 1, 32}, // 0.12% | |
| { 768, 1, 32}, // 0.12% | |
| { 832, 1, 32}, // 0.04% | |
| { 896, 1, 32}, // 0.21% | |
| { 1024, 1, 32}, // 0.02% | |
| { 1152, 1, 32}, // 0.26% | |
| { 1280, 1, 32}, // 0.41% | |
| { 1408, 1, 32}, // 0.12% | |
| { 1536, 1, 32}, // 0.41% | |
| { 1664, 1, 32}, // 0.36% | |
| { 1792, 1, 32}, // 0.21% | |
| { 1920, 1, 32}, // 0.41% | |
| { 2048, 1, 32}, // 0.02% | |
| { 2176, 1, 30}, // 0.41% | |
| { 2304, 1, 28}, // 0.71% | |
| { 2432, 1, 26}, // 0.76% | |
| { 2560, 1, 25}, // 0.41% | |
| { 2688, 1, 24}, // 0.56% | |
| { 2816, 1, 23}, // 0.12% | |
| { 2944, 1, 22}, // 0.07% | |
| { 3072, 1, 21}, // 0.41% | |
| { 3200, 1, 20}, // 1.15% | |
| { 3328, 1, 19}, // 1.00% | |
| { 3584, 1, 18}, // 0.21% | |
| { 3840, 1, 17}, // 0.41% | |
| { 4096, 1, 16}, // 0.02% | |
| { 4736, 1, 13}, // 0.66% | |
| { 5504, 1, 11}, // 1.35% | |
| { 6144, 1, 10}, // 1.61% | |
| { 6528, 1, 10}, // 0.41% | |
| { 6784, 1, 9}, // 1.71% | |
| { 7168, 1, 9}, // 1.61% | |
| { 7680, 1, 8}, // 0.41% | |
| { 8192, 1, 8}, // 0.02% | |
| { 8704, 1, 7}, // 0.41% | |
| { 9344, 1, 7}, // 0.21% | |
| { 10368, 1, 6}, // 1.15% | |
| { 11392, 1, 5}, // 0.07% | |
| { 12416, 1, 5}, // 0.56% | |
| { 13696, 1, 4}, // 0.76% | |
| { 14464, 1, 4}, // 0.71% | |
| { 16384, 1, 4}, // 0.02% | |
| { 17408, 1, 3}, // 0.41% | |
| { 20096, 1, 3}, // 0.36% | |
| { 21760, 1, 3}, // 0.41% | |
| { 23808, 1, 2}, // 0.12% | |
| { 26112, 1, 2}, // 0.41% | |
| { 29056, 1, 2}, // 0.26% | |
| { 32768, 1, 2}, // 0.02% | |
| { 37376, 1, 2}, // 0.21% | |
| { 43648, 1, 2}, // 0.12% | |
| { 52352, 1, 2}, // 0.17% | |
| { 56064, 2, 2}, // 3.92% | |
| { 65536, 1, 2}, // 0.02% | |
| { 74880, 2, 2}, // 0.03% | |
| { 87296, 1, 2}, // 0.12% | |
| { 104832, 2, 2}, // 0.03% | |
| { 112256, 3, 2}, // 0.09% | |
| { 131072, 1, 2}, // 0.02% | |
| { 149760, 3, 2}, // 5.03% | |
| { 174720, 2, 2}, // 0.03% | |
| { 196608, 3, 2}, // 0.01% | |
| { 209664, 4, 2}, // 0.03% | |
| { 262144, 1, 2}, // 0.02% | |
| }; | |
| #elif TCMALLOC_PAGE_SHIFT == 12 | |
| static_assert(kMaxSize == 8192, "kMaxSize mismatch"); | |
| static const int kCount = 46; | |
| static_assert(kCount <= kNumClasses); | |
| const int SizeMap::kSizeClassesCount = kCount; | |
| const SizeClassInfo SizeMap::kSizeClasses[SizeMap::kSizeClassesCount] = { | |
| // <bytes>, <pages>, <batch size> <fixed> | |
| { 0, 0, 0}, // +Inf% | |
| { 8, 1, 32}, // 1.17% | |
| { 16, 1, 32}, // 1.17% | |
| { 32, 1, 32}, // 1.17% | |
| { 48, 1, 32}, // 1.57% | |
| { 64, 1, 32}, // 1.17% | |
| { 80, 1, 32}, // 1.57% | |
| { 96, 1, 32}, // 2.78% | |
| { 112, 1, 32}, // 2.78% | |
| { 128, 1, 32}, // 1.17% | |
| { 144, 1, 32}, // 2.78% | |
| { 160, 1, 32}, // 3.60% | |
| { 176, 1, 32}, // 2.37% | |
| { 192, 1, 32}, // 2.78% | |
| { 208, 1, 32}, // 4.86% | |
| { 224, 1, 32}, // 2.78% | |
| { 240, 1, 32}, // 1.57% | |
| { 256, 1, 32}, // 1.17% | |
| { 272, 1, 32}, // 1.57% | |
| { 288, 1, 32}, // 2.78% | |
| { 304, 1, 32}, // 4.86% | |
| { 336, 1, 32}, // 2.78% | |
| { 368, 1, 32}, // 2.37% | |
| { 400, 1, 32}, // 3.60% | |
| { 448, 1, 32}, // 2.78% | |
| { 512, 1, 32}, // 1.17% | |
| { 576, 2, 32}, // 2.18% | |
| { 640, 2, 32}, // 7.29% | |
| { 704, 2, 32}, // 6.40% | |
| { 768, 2, 32}, // 7.29% | |
| { 896, 2, 32}, // 2.18% | |
| { 1024, 2, 32}, // 0.59% | |
| { 1152, 3, 32}, // 7.08% | |
| { 1280, 3, 32}, // 7.08% | |
| { 1536, 3, 32}, // 0.39% | |
| { 1792, 4, 32}, // 1.88% | |
| { 2048, 4, 32}, // 0.29% | |
| { 2304, 4, 28}, // 1.88% | |
| { 2688, 4, 24}, // 1.88% | |
| { 3200, 4, 20}, // 2.70% | |
| { 3584, 7, 18}, // 0.17% | |
| { 4096, 4, 16}, // 0.29% | |
| { 5376, 4, 12}, // 1.88% | |
| { 6144, 3, 10}, // 0.39% | |
| { 7168, 7, 9}, // 0.17% | |
| { 8192, 4, 8}, // 0.29% | |
| }; | |
| #else | |
| #error "Unsupported TCMALLOC_PAGE_SHIFT value!" | |
| #endif | |
| #endif | |
| // clang-format on | |
| } // namespace tcmalloc_internal | |
| } // namespace tcmalloc | |
| GOOGLE_MALLOC_SECTION_END |