mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
This CL adds a generator function in runtime/_mkmalloc to generate specialized mallocgc functions for sizes up throuht 512 bytes. (That's the limit where it's possible to end up in the no header case when there are scan bits, and where the benefits of the specialized functions significantly diminish according to microbenchmarks). If the specializedmalloc GOEXPERIMENT is turned on, mallocgc will call one of these functions in the no header case. malloc_generated.go is the generated file containing the specialized malloc functions. malloc_stubs.go contains the templates that will be stamped to create the specialized malloc functions. malloc_tables_generated contains the tables that mallocgc will use to select the specialized function to call. I've had to update the two stdlib_test.go files to account for the new submodule mkmalloc is in. mprof_test accounts for the changes in the stacks since different functions can be called in some cases. I still need to investigate heapsampling.go. Change-Id: Ia0f68dccdf1c6a200554ae88657cf4d686ace819 Reviewed-on: https://go-review.googlesource.com/c/go/+/665835 Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Michael Matloob <matloob@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
102 lines
9.3 KiB
Go
102 lines
9.3 KiB
Go
// Code generated by mksizeclasses.go; DO NOT EDIT.
|
|
//go:generate go -C ../../../runtime/_mkmalloc run mksizeclasses.go
|
|
|
|
package gc
|
|
|
|
// class bytes/obj bytes/span objects tail waste max waste min align
|
|
// 1 8 8192 1024 0 87.50% 8
|
|
// 2 16 8192 512 0 43.75% 16
|
|
// 3 24 8192 341 8 29.24% 8
|
|
// 4 32 8192 256 0 21.88% 32
|
|
// 5 48 8192 170 32 31.52% 16
|
|
// 6 64 8192 128 0 23.44% 64
|
|
// 7 80 8192 102 32 19.07% 16
|
|
// 8 96 8192 85 32 15.95% 32
|
|
// 9 112 8192 73 16 13.56% 16
|
|
// 10 128 8192 64 0 11.72% 128
|
|
// 11 144 8192 56 128 11.82% 16
|
|
// 12 160 8192 51 32 9.73% 32
|
|
// 13 176 8192 46 96 9.59% 16
|
|
// 14 192 8192 42 128 9.25% 64
|
|
// 15 208 8192 39 80 8.12% 16
|
|
// 16 224 8192 36 128 8.15% 32
|
|
// 17 240 8192 34 32 6.62% 16
|
|
// 18 256 8192 32 0 5.86% 256
|
|
// 19 288 8192 28 128 12.16% 32
|
|
// 20 320 8192 25 192 11.80% 64
|
|
// 21 352 8192 23 96 9.88% 32
|
|
// 22 384 8192 21 128 9.51% 128
|
|
// 23 416 8192 19 288 10.71% 32
|
|
// 24 448 8192 18 128 8.37% 64
|
|
// 25 480 8192 17 32 6.82% 32
|
|
// 26 512 8192 16 0 6.05% 512
|
|
// 27 576 8192 14 128 12.33% 64
|
|
// 28 640 8192 12 512 15.48% 128
|
|
// 29 704 8192 11 448 13.93% 64
|
|
// 30 768 8192 10 512 13.94% 256
|
|
// 31 896 8192 9 128 15.52% 128
|
|
// 32 1024 8192 8 0 12.40% 1024
|
|
// 33 1152 8192 7 128 12.41% 128
|
|
// 34 1280 8192 6 512 15.55% 256
|
|
// 35 1408 16384 11 896 14.00% 128
|
|
// 36 1536 8192 5 512 14.00% 512
|
|
// 37 1792 16384 9 256 15.57% 256
|
|
// 38 2048 8192 4 0 12.45% 2048
|
|
// 39 2304 16384 7 256 12.46% 256
|
|
// 40 2688 8192 3 128 15.59% 128
|
|
// 41 3072 24576 8 0 12.47% 1024
|
|
// 42 3200 16384 5 384 6.22% 128
|
|
// 43 3456 24576 7 384 8.83% 128
|
|
// 44 4096 8192 2 0 15.60% 4096
|
|
// 45 4864 24576 5 256 16.65% 256
|
|
// 46 5376 16384 3 256 10.92% 256
|
|
// 47 6144 24576 4 0 12.48% 2048
|
|
// 48 6528 32768 5 128 6.23% 128
|
|
// 49 6784 40960 6 256 4.36% 128
|
|
// 50 6912 49152 7 768 3.37% 256
|
|
// 51 8192 8192 1 0 15.61% 8192
|
|
// 52 9472 57344 6 512 14.28% 256
|
|
// 53 9728 49152 5 512 3.64% 512
|
|
// 54 10240 40960 4 0 4.99% 2048
|
|
// 55 10880 32768 3 128 6.24% 128
|
|
// 56 12288 24576 2 0 11.45% 4096
|
|
// 57 13568 40960 3 256 9.99% 256
|
|
// 58 14336 57344 4 0 5.35% 2048
|
|
// 59 16384 16384 1 0 12.49% 8192
|
|
// 60 18432 73728 4 0 11.11% 2048
|
|
// 61 19072 57344 3 128 3.57% 128
|
|
// 62 20480 40960 2 0 6.87% 4096
|
|
// 63 21760 65536 3 256 6.25% 256
|
|
// 64 24576 24576 1 0 11.45% 8192
|
|
// 65 27264 81920 3 128 10.00% 128
|
|
// 66 28672 57344 2 0 4.91% 4096
|
|
// 67 32768 32768 1 0 12.50% 8192
|
|
|
|
// alignment bits min obj size
|
|
// 8 3 8
|
|
// 16 4 32
|
|
// 32 5 256
|
|
// 64 6 512
|
|
// 128 7 768
|
|
// 4096 12 28672
|
|
// 8192 13 32768
|
|
|
|
const (
|
|
MinHeapAlign = 8
|
|
MaxSmallSize = 32768
|
|
SmallSizeDiv = 8
|
|
SmallSizeMax = 1024
|
|
LargeSizeDiv = 128
|
|
NumSizeClasses = 68
|
|
PageShift = 13
|
|
MaxObjsPerSpan = 1024
|
|
MaxSizeClassNPages = 10
|
|
TinySize = 16
|
|
TinySizeClass = 2
|
|
)
|
|
|
|
var SizeClassToSize = [NumSizeClasses]uint16{0, 8, 16, 24, 32, 48, 64, 80, 96, 112, 128, 144, 160, 176, 192, 208, 224, 240, 256, 288, 320, 352, 384, 416, 448, 480, 512, 576, 640, 704, 768, 896, 1024, 1152, 1280, 1408, 1536, 1792, 2048, 2304, 2688, 3072, 3200, 3456, 4096, 4864, 5376, 6144, 6528, 6784, 6912, 8192, 9472, 9728, 10240, 10880, 12288, 13568, 14336, 16384, 18432, 19072, 20480, 21760, 24576, 27264, 28672, 32768}
|
|
var SizeClassToNPages = [NumSizeClasses]uint8{0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 3, 2, 3, 1, 3, 2, 3, 4, 5, 6, 1, 7, 6, 5, 4, 3, 5, 7, 2, 9, 7, 5, 8, 3, 10, 7, 4}
|
|
var SizeClassToDivMagic = [NumSizeClasses]uint32{0, ^uint32(0)/8 + 1, ^uint32(0)/16 + 1, ^uint32(0)/24 + 1, ^uint32(0)/32 + 1, ^uint32(0)/48 + 1, ^uint32(0)/64 + 1, ^uint32(0)/80 + 1, ^uint32(0)/96 + 1, ^uint32(0)/112 + 1, ^uint32(0)/128 + 1, ^uint32(0)/144 + 1, ^uint32(0)/160 + 1, ^uint32(0)/176 + 1, ^uint32(0)/192 + 1, ^uint32(0)/208 + 1, ^uint32(0)/224 + 1, ^uint32(0)/240 + 1, ^uint32(0)/256 + 1, ^uint32(0)/288 + 1, ^uint32(0)/320 + 1, ^uint32(0)/352 + 1, ^uint32(0)/384 + 1, ^uint32(0)/416 + 1, ^uint32(0)/448 + 1, ^uint32(0)/480 + 1, ^uint32(0)/512 + 1, ^uint32(0)/576 + 1, ^uint32(0)/640 + 1, ^uint32(0)/704 + 1, ^uint32(0)/768 + 1, ^uint32(0)/896 + 1, ^uint32(0)/1024 + 1, ^uint32(0)/1152 + 1, ^uint32(0)/1280 + 1, ^uint32(0)/1408 + 1, ^uint32(0)/1536 + 1, ^uint32(0)/1792 + 1, ^uint32(0)/2048 + 1, ^uint32(0)/2304 + 1, ^uint32(0)/2688 + 1, ^uint32(0)/3072 + 1, ^uint32(0)/3200 + 1, ^uint32(0)/3456 + 1, ^uint32(0)/4096 + 1, ^uint32(0)/4864 + 1, ^uint32(0)/5376 + 1, ^uint32(0)/6144 + 1, ^uint32(0)/6528 + 1, ^uint32(0)/6784 + 1, ^uint32(0)/6912 + 1, ^uint32(0)/8192 + 1, ^uint32(0)/9472 + 1, ^uint32(0)/9728 + 1, ^uint32(0)/10240 + 1, ^uint32(0)/10880 + 1, ^uint32(0)/12288 + 1, ^uint32(0)/13568 + 1, ^uint32(0)/14336 + 1, ^uint32(0)/16384 + 1, ^uint32(0)/18432 + 1, ^uint32(0)/19072 + 1, ^uint32(0)/20480 + 1, ^uint32(0)/21760 + 1, ^uint32(0)/24576 + 1, ^uint32(0)/27264 + 1, ^uint32(0)/28672 + 1, ^uint32(0)/32768 + 1}
|
|
var SizeToSizeClass8 = [SmallSizeMax/SmallSizeDiv + 1]uint8{0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32}
|
|
var SizeToSizeClass128 = [(MaxSmallSize-SmallSizeMax)/LargeSizeDiv + 1]uint8{32, 33, 34, 35, 36, 37, 37, 38, 38, 39, 39, 40, 40, 40, 41, 41, 41, 42, 43, 43, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 48, 48, 48, 49, 49, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 54, 54, 54, 54, 55, 55, 55, 55, 55, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67, 67}
|