17. jemalloc
1024K
512KRequest 100K 256KA 128K
512KRequest 240K BA 128K
512KRequest 64K BA 128KC 64K
Request 256K BA 128KC 64K D 256K
Release B 256KA 128KC 64K D 256K
B를 반환 한 후에, 자신의 나머지 반쪽(Buddy) 영역을 확인하고 비어있다면 합침
현재는 A와 C가 있기 때문에 합치지 않음
18. jemalloc
1024K
512KRequest 100K 256KA 128K
512KRequest 240K BA 128K
512KRequest 64K BA 128KC 64K
Request 256K BA 128KC 64K D 256K
Release B 256KA 128KC 64K D 256K
Release A 256K128K 128KC 64K D 256K
19. jemalloc
1024K
512KRequest 100K 256KA 128K
512KRequest 240K BA 128K
512KRequest 64K BA 128KC 64K
Request 256K BA 128KC 64K D 256K
Release B 256KA 128KC 64K D 256K
Release A 256K128K 128KC 64K D 256K
Request 75K 256KE 128KC 64K D 256K
20. jemalloc
1024K
512KRequest 100K 256KA 128K
512KRequest 240K BA 128K
512KRequest 64K BA 128KC 64K
Request 256K BA 128KC 64K D 256K
Release B 256KA 128KC 64K D 256K
Release A 256K128K 128KC 64K D 256K
Request 75K 256KE 128KC 64K D 256K
Release C 256KE 128K D 256K
21. jemalloc
1024K
512KRequest 100K 256KA 128K
512KRequest 240K BA 128K
512KRequest 64K BA 128KC 64K
Request 256K BA 128KC 64K D 256K
Release B 256KA 128KC 64K D 256K
Release A 256K128K 128KC 64K D 256K
Request 75K 256KE 128KC 64K D 256K
Release C 256KE 128K D 256K
512KRelease E D 256K
22. jemalloc
Slab Allocation :
내부 단편화를 최소화 하기 위해 고안.
- 자주 사용하는 자료구조는 할당과 해제가 빈번하므로 캐쉬
- 단편화를 막기 위해 리스트는 연속된 순서로 정리
- 해제하면 해제 리스트로 들어가기 때문에 단편화가 없음
- 바로 다음 할당 시 해제 리스트에서 깨내서 사용
23. jemalloc
Small: [2, 4, 8], [16, 32, 48, ..., 128], [129, 256, 320, ...., 512], [1KB, 2KB]
Large: [4 KB, 8KB, 12 KB, ..., 4072 KB]
Huge: [4 MB, 8MB, 12MB, ...]
Allocation Size Class Category
4KB pages and a 16 byte quantum 환경
64bit OS
24. jemalloc
huge 오브젝트(chunk-aligned)는 red-black tree에 할당해서 관리
log시간에 찾을 수 있음
red-blacktree: self-balancing binary search tree
Search : binary tree와 동일
Insert : Color Promotion + Rotation
Delete : Color Demotion + Rotation
Search / Insert / Delete 모두 O(logN) 보장
https://www.cs.usfca.edu/~galles/visualization/RedBlack.html