Jemalloc 5.4.0

1 hour ago 2

160개 이상의 커밋을 담은 릴리스로, 리팩터링과 버그 수정, 테스트 커버리지 개선, 옵션 정리 등 기술 부채 해소와 이식성 개선에 집중함 tcache 정책이 고정된 재충전/비우기 방식에서 관측 수요에 적응하는 방식으로 바뀜. 기존 제어 옵션 7개가 제거되며, 해당 malloc_conf 설정은 경고 없이 무시됨 EXTENT_ALLOC_FLAG_PINNED 를 추가해 사용자 정의 메모리 할당 훅이 HugeTLB 페이지처럼 회수할 수 없는 매핑을 표시하고, decay/purge 경로 밖에서 우선 재사용할 수 있게 함 C++의 런타임 옵션 experimental_infallible_new를 빌드 옵션 --enable-cxx-infallible-new 로 대체해 컴파일러 및 이동 생성자 최적화를 지원하고, new(std::nothrow)의 동작 계약을 수정함 메모리 해제 API와 스레드 수명주기의 안정성을 개선함. errno 보존, C23에 맞춘 NULL 처리, 스레드 초기화/종료 경계 조건, arena_reset의 잠재적 교착 상태 등을 수정함 tcache 정책 변경과 옵션 호환성 tcache는 GC 이벤트 사이에 관측한 수요를 기준으로 bin별 채우기 및 보유 목표를 조정하며, 기존 고정 재충전/비우기 정책을 대체함 비실험적 레거시 제어 옵션 7개를 제거함 lg_tcache_nslots_mul, tcache_nslots_small_min, tcache_nslots_small_max, tcache_nslots_large tcache_gc_delay_bytes, lg_tcache_flush_small_div, lg_tcache_flush_large_div 제거된 옵션의 malloc_conf 설정은 경고 없이 무시되며, 대응하는 opt.* mallctl은 ENOENT를 반환함 tcache_ncached_max는 계속 지원함 thread.arena를 통해 CPU별 arena 선택을 재개할 수 있게 됨 회수 불가능한 매핑 지원과 통계 개선 EXTENT_ALLOC_FLAG_PINNED 를 사용자 정의 extent 할당 훅에서 사용할 수 있음 HugeTLB 페이지처럼 회수할 수 없는 매핑을 표시해 decay/purge 경로 밖에서 우선 재사용함 고정 메모리 사용량과 뮤텍스 통계를 조회하는 mallctl 인터페이스를 추가함 stats.pinned, stats.arenas.<i>.pinned stats.arenas.&l...

Read Entire Article