size = 27_000_000 $ time -p inst/bin/python3.8 arena.py This gets printed! Small block threshold = 512, in 32 size classes. class size num pools blocks in use avail blocks ----- ---- --------- ------------- ------------ 0 16 1 190 63 1 32 5 562 68 2 48 26 1900 284 3 64 136 8165 403 4 80 20717416 1035870759 41 5 96 15 543 87 6 112 9 291 33 7 128 33 962 61 8 144 5 115 25 9 160 43 1015 60 10 176 18 390 24 11 192 3 51 12 12 208 3 40 17 13 224 8 136 8 14 240 4 55 9 15 256 3 30 15 16 272 2 21 7 17 288 2 25 3 18 304 13 162 7 19 320 1 11 1 20 336 1 11 1 21 352 1 11 0 22 368 1 10 1 23 384 1 8 2 24 400 2 20 0 25 416 4 33 3 26 432 6 45 9 27 448 4 29 7 28 464 17 126 10 29 480 4 28 4 30 496 4 28 4 31 512 5 30 5 # arenas allocated total = 420,038 # arenas reclaimed = 96,322 # arenas highwater mark = 323,716 # arenas allocated current = 323,716 323716 arenas * 262144 bytes/arena = 84,860,207,104 # bytes in allocated blocks = 82,871,055,728 # bytes in available blocks = 122,864 28 unused pools * 4096 bytes = 114,688 # bytes lost to pool headers = 994,454,208 # bytes lost to quantization = 994,459,616 # bytes lost to arena alignment = 0 Total = 84,860,207,104 1 free PyCFunctionObjects * 48 bytes each = 48 0 free PyDictObjects * 48 bytes each = 0 3 free PyFloatObjects * 24 bytes each = 72 99 free PyFrameObjects * 368 bytes each = 36,432 80 free PyListObjects * 40 bytes each = 3,200 0 free PyMethodObjects * 40 bytes each = 0 1 free 1-sized PyTupleObjects * 32 bytes each = 32 1 free 2-sized PyTupleObjects * 40 bytes each = 40 0 free 3-sized PyTupleObjects * 48 bytes each = 0 1 free 4-sized PyTupleObjects * 56 bytes each = 56 0 free 5-sized PyTupleObjects * 64 bytes each = 0 0 free 6-sized PyTupleObjects * 72 bytes each = 0 0 free 7-sized PyTupleObjects * 80 bytes each = 0 0 free 8-sized PyTupleObjects * 88 bytes each = 0 0 free 9-sized PyTupleObjects * 96 bytes each = 0 0 free 10-sized PyTupleObjects * 104 bytes each = 0 0 free 11-sized PyTupleObjects * 112 bytes each = 0 0 free 12-sized PyTupleObjects * 120 bytes each = 0 0 free 13-sized PyTupleObjects * 128 bytes each = 0 0 free 14-sized PyTupleObjects * 136 bytes each = 0 0 free 15-sized PyTupleObjects * 144 bytes each = 0 0 free 16-sized PyTupleObjects * 152 bytes each = 0 0 free 17-sized PyTupleObjects * 160 bytes each = 0 0 free 18-sized PyTupleObjects * 168 bytes each = 0 0 free 19-sized PyTupleObjects * 176 bytes each = 0 build time 0:38:19.225665 teardown time 0:01:46.427741 This doesn't get printed 0 killed Small block threshold = 512, in 32 size classes. class size num pools blocks in use avail blocks ----- ---- --------- ------------- ------------ 0 16 1 190 63 1 32 5 562 68 2 48 26 1897 287 3 64 136 8161 407 4 80 70 3292 208 5 96 15 542 88 6 112 9 291 33 7 128 33 962 61 8 144 5 115 25 9 160 43 1015 60 10 176 18 390 24 11 192 3 51 12 12 208 3 40 17 13 224 8 136 8 14 240 4 55 9 15 256 3 30 15 16 272 2 21 7 17 288 2 25 3 18 304 13 162 7 19 320 1 11 1 20 336 1 11 1 21 352 1 11 0 22 368 1 10 1 23 384 1 8 2 24 400 2 20 0 25 416 4 33 3 26 432 6 45 9 27 448 4 29 7 28 464 17 126 10 29 480 4 28 4 30 496 4 28 4 31 512 5 30 5 # arenas allocated total = 420,038 # arenas reclaimed = 420,020 # arenas highwater mark = 323,716 # arenas allocated current = 18 18 arenas * 262144 bytes/arena = 4,718,592 # bytes in allocated blocks = 1,657,872 # bytes in available blocks = 136,720 702 unused pools * 4096 bytes = 2,875,392 # bytes lost to pool headers = 21,600 # bytes lost to quantization = 27,008 # bytes lost to arena alignment = 0 Total = 4,718,592 1 free PyCFunctionObjects * 48 bytes each = 48 1 free PyDictObjects * 48 bytes each = 48 3 free PyFloatObjects * 24 bytes each = 72 98 free PyFrameObjects * 368 bytes each = 36,064 80 free PyListObjects * 40 bytes each = 3,200 0 free PyMethodObjects * 40 bytes each = 0 1 free 1-sized PyTupleObjects * 32 bytes each = 32 1 free 2-sized PyTupleObjects * 40 bytes each = 40 0 free 3-sized PyTupleObjects * 48 bytes each = 0 1 free 4-sized PyTupleObjects * 56 bytes each = 56 0 free 5-sized PyTupleObjects * 64 bytes each = 0 0 free 6-sized PyTupleObjects * 72 bytes each = 0 0 free 7-sized PyTupleObjects * 80 bytes each = 0 0 free 8-sized PyTupleObjects * 88 bytes each = 0 0 free 9-sized PyTupleObjects * 96 bytes each = 0 0 free 10-sized PyTupleObjects * 104 bytes each = 0 0 free 11-sized PyTupleObjects * 112 bytes each = 0 0 free 12-sized PyTupleObjects * 120 bytes each = 0 0 free 13-sized PyTupleObjects * 128 bytes each = 0 0 free 14-sized PyTupleObjects * 136 bytes each = 0 0 free 15-sized PyTupleObjects * 144 bytes each = 0 0 free 16-sized PyTupleObjects * 152 bytes each = 0 0 free 17-sized PyTupleObjects * 160 bytes each = 0 0 free 18-sized PyTupleObjects * 168 bytes each = 0 0 free 19-sized PyTupleObjects * 176 bytes each = 0 real 2406.08 user 2209.52 sys 195.49 size = 54_000_000 $ time -p inst/bin/python3.8 arena.py This gets printed! Small block threshold = 512, in 32 size classes. class size num pools blocks in use avail blocks ----- ---- --------- ------------- ------------ 0 16 1 190 63 1 32 5 562 68 2 48 26 1900 284 3 64 136 8167 401 4 80 41189251 2059462544 6 5 96 15 543 87 6 112 9 291 33 7 128 33 962 61 8 144 5 115 25 9 160 43 1015 60 10 176 18 390 24 11 192 3 51 12 12 208 3 40 17 13 224 8 136 8 14 240 4 55 9 15 256 3 30 15 16 272 2 21 7 17 288 2 25 3 18 304 13 162 7 19 320 1 11 1 20 336 1 11 1 21 352 1 11 0 22 368 1 10 1 23 384 1 8 2 24 400 2 20 0 25 416 4 33 3 26 432 6 45 9 27 448 4 29 7 28 464 17 129 7 29 480 4 28 4 30 496 4 28 4 31 512 5 30 5 # arenas allocated total = 831,389 # arenas reclaimed = 187,800 # arenas highwater mark = 643,589 # arenas allocated current = 643,589 643589 arenas * 262144 bytes/arena = 168,712,994,816 # bytes in allocated blocks = 164,758,400,048 # bytes in available blocks = 118,544 65 unused pools * 4096 bytes = 266,240 # bytes lost to pool headers = 1,977,102,288 # bytes lost to quantization = 1,977,107,696 # bytes lost to arena alignment = 0 Total = 168,712,994,816 1 free PyCFunctionObjects * 48 bytes each = 48 0 free PyDictObjects * 48 bytes each = 0 3 free PyFloatObjects * 24 bytes each = 72 102 free PyFrameObjects * 368 bytes each = 37,536 80 free PyListObjects * 40 bytes each = 3,200 0 free PyMethodObjects * 40 bytes each = 0 1 free 1-sized PyTupleObjects * 32 bytes each = 32 1 free 2-sized PyTupleObjects * 40 bytes each = 40 0 free 3-sized PyTupleObjects * 48 bytes each = 0 1 free 4-sized PyTupleObjects * 56 bytes each = 56 0 free 5-sized PyTupleObjects * 64 bytes each = 0 0 free 6-sized PyTupleObjects * 72 bytes each = 0 0 free 7-sized PyTupleObjects * 80 bytes each = 0 0 free 8-sized PyTupleObjects * 88 bytes each = 0 0 free 9-sized PyTupleObjects * 96 bytes each = 0 0 free 10-sized PyTupleObjects * 104 bytes each = 0 0 free 11-sized PyTupleObjects * 112 bytes each = 0 0 free 12-sized PyTupleObjects * 120 bytes each = 0 0 free 13-sized PyTupleObjects * 128 bytes each = 0 0 free 14-sized PyTupleObjects * 136 bytes each = 0 0 free 15-sized PyTupleObjects * 144 bytes each = 0 0 free 16-sized PyTupleObjects * 152 bytes each = 0 0 free 17-sized PyTupleObjects * 160 bytes each = 0 0 free 18-sized PyTupleObjects * 168 bytes each = 0 0 free 19-sized PyTupleObjects * 176 bytes each = 0 build time 1:19:45.611413 teardown time 0:04:27.604806 This doesn't get printed 0 killed Small block threshold = 512, in 32 size classes. class size num pools blocks in use avail blocks ----- ---- --------- ------------- ------------ 0 16 1 190 63 1 32 5 562 68 2 48 26 1897 287 3 64 136 8163 405 4 80 70 3292 208 5 96 15 542 88 6 112 9 291 33 7 128 33 962 61 8 144 5 115 25 9 160 43 1015 60 10 176 18 390 24 11 192 3 51 12 12 208 3 40 17 13 224 8 136 8 14 240 4 55 9 15 256 3 30 15 16 272 2 21 7 17 288 2 25 3 18 304 13 162 7 19 320 1 11 1 20 336 1 11 1 21 352 1 11 0 22 368 1 10 1 23 384 1 8 2 24 400 2 20 0 25 416 4 33 3 26 432 6 45 9 27 448 4 29 7 28 464 17 129 7 29 480 4 28 4 30 496 4 28 4 31 512 5 30 5 # arenas allocated total = 831,389 # arenas reclaimed = 831,371 # arenas highwater mark = 643,589 # arenas allocated current = 18 18 arenas * 262144 bytes/arena = 4,718,592 # bytes in allocated blocks = 1,659,392 # bytes in available blocks = 135,200 702 unused pools * 4096 bytes = 2,875,392 # bytes lost to pool headers = 21,600 # bytes lost to quantization = 27,008 # bytes lost to arena alignment = 0 Total = 4,718,592 1 free PyCFunctionObjects * 48 bytes each = 48 1 free PyDictObjects * 48 bytes each = 48 3 free PyFloatObjects * 24 bytes each = 72 101 free PyFrameObjects * 368 bytes each = 37,168 80 free PyListObjects * 40 bytes each = 3,200 0 free PyMethodObjects * 40 bytes each = 0 1 free 1-sized PyTupleObjects * 32 bytes each = 32 1 free 2-sized PyTupleObjects * 40 bytes each = 40 0 free 3-sized PyTupleObjects * 48 bytes each = 0 1 free 4-sized PyTupleObjects * 56 bytes each = 56 0 free 5-sized PyTupleObjects * 64 bytes each = 0 0 free 6-sized PyTupleObjects * 72 bytes each = 0 0 free 7-sized PyTupleObjects * 80 bytes each = 0 0 free 8-sized PyTupleObjects * 88 bytes each = 0 0 free 9-sized PyTupleObjects * 96 bytes each = 0 0 free 10-sized PyTupleObjects * 104 bytes each = 0 0 free 11-sized PyTupleObjects * 112 bytes each = 0 0 free 12-sized PyTupleObjects * 120 bytes each = 0 0 free 13-sized PyTupleObjects * 128 bytes each = 0 0 free 14-sized PyTupleObjects * 136 bytes each = 0 0 free 15-sized PyTupleObjects * 144 bytes each = 0 0 free 16-sized PyTupleObjects * 152 bytes each = 0 0 free 17-sized PyTupleObjects * 160 bytes each = 0 0 free 18-sized PyTupleObjects * 168 bytes each = 0 0 free 19-sized PyTupleObjects * 176 bytes each = 0 real 5056.95 user 4502.00 sys 553.66 size = 108_000_000 $ time -p inst/bin/python3.8 arena.py This gets printed! Small block threshold = 512, in 32 size classes. class size num pools blocks in use avail blocks ----- ---- --------- ------------- ------------ 0 16 1 190 63 1 32 5 562 68 2 48 26 1900 284 3 64 136 8167 401 4 80 81967039 4098351935 15 5 96 15 543 87 6 112 9 291 33 7 128 33 962 61 8 144 5 115 25 9 160 43 1015 60 10 176 18 390 24 11 192 3 51 12 12 208 3 40 17 13 224 8 136 8 14 240 4 55 9 15 256 3 30 15 16 272 2 21 7 17 288 2 25 3 18 304 13 162 7 19 320 1 11 1 20 336 1 11 1 21 352 1 11 0 22 368 1 10 1 23 384 1 8 2 24 400 2 20 0 25 416 4 33 3 26 432 6 45 9 27 448 4 29 7 28 464 17 132 4 29 480 4 28 4 30 496 4 28 4 31 512 5 30 5 # arenas allocated total = 1,652,078 # arenas reclaimed = 371,336 # arenas highwater mark = 1,280,742 # arenas allocated current = 1,280,742 1280742 arenas * 262144 bytes/arena= 335,738,830,848 # bytes in allocated blocks = 327,869,552,720 # bytes in available blocks = 117,872 69 unused pools * 4096 bytes = 282,624 # bytes lost to pool headers = 3,934,436,112 # bytes lost to quantization = 3,934,441,520 # bytes lost to arena alignment = 0 Total = 335,738,830,848 1 free PyCFunctionObjects * 48 bytes each = 48 0 free PyDictObjects * 48 bytes each = 0 3 free PyFloatObjects * 24 bytes each = 72 105 free PyFrameObjects * 368 bytes each = 38,640 80 free PyListObjects * 40 bytes each = 3,200 0 free PyMethodObjects * 40 bytes each = 0 1 free 1-sized PyTupleObjects * 32 bytes each = 32 1 free 2-sized PyTupleObjects * 40 bytes each = 40 0 free 3-sized PyTupleObjects * 48 bytes each = 0 1 free 4-sized PyTupleObjects * 56 bytes each = 56 0 free 5-sized PyTupleObjects * 64 bytes each = 0 0 free 6-sized PyTupleObjects * 72 bytes each = 0 0 free 7-sized PyTupleObjects * 80 bytes each = 0 0 free 8-sized PyTupleObjects * 88 bytes each = 0 0 free 9-sized PyTupleObjects * 96 bytes each = 0 0 free 10-sized PyTupleObjects * 104 bytes each = 0 0 free 11-sized PyTupleObjects * 112 bytes each = 0 0 free 12-sized PyTupleObjects * 120 bytes each = 0 0 free 13-sized PyTupleObjects * 128 bytes each = 0 0 free 14-sized PyTupleObjects * 136 bytes each = 0 0 free 15-sized PyTupleObjects * 144 bytes each = 0 0 free 16-sized PyTupleObjects * 152 bytes each = 0 0 free 17-sized PyTupleObjects * 160 bytes each = 0 0 free 18-sized PyTupleObjects * 168 bytes each = 0 0 free 19-sized PyTupleObjects * 176 bytes each = 0 build time 2:44:30.591097 teardown time 0:09:08.863007 This doesn't get printed 0 killed Small block threshold = 512, in 32 size classes. class size num pools blocks in use avail blocks ----- ---- --------- ------------- ------------ 0 16 1 190 63 1 32 5 562 68 2 48 26 1897 287 3 64 136 8163 405 4 80 70 3293 207 5 96 15 542 88 6 112 9 291 33 7 128 33 962 61 8 144 5 115 25 9 160 43 1015 60 10 176 18 390 24 11 192 3 51 12 12 208 3 40 17 13 224 8 136 8 14 240 4 55 9 15 256 3 30 15 16 272 2 21 7 17 288 2 25 3 18 304 13 162 7 19 320 1 11 1 20 336 1 11 1 21 352 1 11 0 22 368 1 10 1 23 384 1 8 2 24 400 2 20 0 25 416 4 33 3 26 432 6 45 9 27 448 4 29 7 28 464 17 132 4 29 480 4 28 4 30 496 4 28 4 31 512 5 30 5 # arenas allocated total = 1,652,078 # arenas reclaimed = 1,652,059 # arenas highwater mark = 1,280,742 # arenas allocated current = 19 19 arenas * 262144 bytes/arena = 4,980,736 # bytes in allocated blocks = 1,660,864 # bytes in available blocks = 133,728 766 unused pools * 4096 bytes = 3,137,536 # bytes lost to pool headers = 21,600 # bytes lost to quantization = 27,008 # bytes lost to arena alignment = 0 Total = 4,980,736 1 free PyCFunctionObjects * 48 bytes each = 48 1 free PyDictObjects * 48 bytes each = 48 3 free PyFloatObjects * 24 bytes each = 72 104 free PyFrameObjects * 368 bytes each = 38,272 80 free PyListObjects * 40 bytes each = 3,200 0 free PyMethodObjects * 40 bytes each = 0 1 free 1-sized PyTupleObjects * 32 bytes each = 32 1 free 2-sized PyTupleObjects * 40 bytes each = 40 0 free 3-sized PyTupleObjects * 48 bytes each = 0 1 free 4-sized PyTupleObjects * 56 bytes each = 56 0 free 5-sized PyTupleObjects * 64 bytes each = 0 0 free 6-sized PyTupleObjects * 72 bytes each = 0 0 free 7-sized PyTupleObjects * 80 bytes each = 0 0 free 8-sized PyTupleObjects * 88 bytes each = 0 0 free 9-sized PyTupleObjects * 96 bytes each = 0 0 free 10-sized PyTupleObjects * 104 bytes each = 0 0 free 11-sized PyTupleObjects * 112 bytes each = 0 0 free 12-sized PyTupleObjects * 120 bytes each = 0 0 free 13-sized PyTupleObjects * 128 bytes each = 0 0 free 14-sized PyTupleObjects * 136 bytes each = 0 0 free 15-sized PyTupleObjects * 144 bytes each = 0 0 free 16-sized PyTupleObjects * 152 bytes each = 0 0 free 17-sized PyTupleObjects * 160 bytes each = 0 0 free 18-sized PyTupleObjects * 168 bytes each = 0 0 free 19-sized PyTupleObjects * 176 bytes each = 0 real 10443.52 user 9028.45 sys 1410.57