문제

Firefox 3에는 새로운 할당자가 포함되어 있습니다: jemalloc.

나는 이 새로운 할당자가 더 좋다는 말을 여러 곳에서 들었습니다.상위 Google 결과는 추가 정보를 제공하지 않으며 그것이 정확히 어떻게 작동하는지에 관심이 있습니다.

도움이 되었습니까?

해결책

jemalloc "Jason Evans"의 아이디어 인 Freebsd에 처음 등장했습니다. 나는 한 번도 운영 체제를 작성하지 않았다면 이기적으로 그를 조롱 할 것입니다. paxos :-)

보다 이 PDF 자세한 내용은. 알고리즘의 작동 방식을 자세히 설명하는 백서입니다.

주요 이점은 다중 경기장 (할당 된 원시 메모리 덩어리)을 사용하여 다중 프로세서 및 다중 스레드 시스템의 확장 성입니다.

단일 스레드 상황에서는 여러 경기장에 실질적인 이점이 없으므로 단일 경기장이 사용됩니다.

그러나 멀티 스레드 상황에서는 많은 경기장이 만들어지고 (프로세서가있는 것보다 4 배 많은 경기장) 스레드 가이 경기장에 라운드 로빈 방식으로 할당됩니다.

이것은 여러 스레드가 호출 할 수 있으므로 잠금 경합을 줄일 수 있음을 의미합니다. malloc 또는 free 동시에, 그들은 같은 경기장을 공유하는 경우에만 경쟁합니다. 경기장이 다른 두 개의 스레드는 서로 영향을 미치지 않습니다.

게다가, jemalloc RAM의 데이터를 가져 오는 행위가 CPU 캐시에 이미 데이터를 사용하는 것보다 훨씬 느리기 때문에 캐시 지역에 최적화하려고 시도합니다 (개념에서는 RAM의 빠른 페치와 디스크의 느린 페치 사이의 차이와 다르지 않습니다). 이를 위해 먼저 응용 프로그램의 전체 작업 세트가 캐시에있을 가능성이 높기 때문에 먼저 메모리 사용량을 최소화하려고합니다.

그리고 그것이 달성 할 수없는 곳에서, 함께 할당 된 메모리가 함께 사용되는 경향이 있기 때문에 할당이 인접 해지도록 시도합니다.

백서에서 이러한 전략은 단일 스레드 사용을위한 현재 최고의 알고리즘과 유사한 성능을 제공하는 동시에 멀티 스레드 사용을위한 개선을 제공하는 것으로 보입니다.

다른 팁

intersting 출처가 하나 있습니다 : C-Source 자체 :http://mxr.mozilla.org/mozilla-central/source/memory/mozjemalloc/jemalloc.c

처음에는 짧은 요약이 대략 작동 방식을 설명합니다. 그러나 더 깊이 알고리즘 분석이 누락되었습니다.

Jemalloc이 어떤 혜택을받는 지에 대해서 http://blog.pavlov.net/2008/03/11/firefox-3-mory-usage/ (Mozilla+Jemalloc의 첫 번째 Google 결과) :

...] Jemalloc이 우리에게 주었다는 결론을 내 렸습니다 가장 적은 양의 조각화 오랜 시간 동안 달리는 후. [...] Windows Vista의 자동 테스트에서 메모리 사용량이 22% 감소했습니다 우리가 jemalloc을 켜면.

Aerospike는 2013년에 개인 지점에서 jemalloc을 다시 구현했습니다.2014년에는 Aerospike 3.3에 통합되었습니다.Psi Mankoski는 방금 Aerospike의 구현과 jemalloc을 효과적으로 사용하는 시기와 방법에 대해 썼습니다. 높은 확장성.

jemalloc은 Aerospike가 최신 멀티스레드, 멀티 CPU, 멀티 코어 컴퓨터 아키텍처를 활용하는 데 큰 도움이 되었습니다.또한 jemalloc에는 경기장을 관리하기 위한 매우 중요한 디버깅 기능이 내장되어 있습니다.예를 들어 디버깅을 통해 Psi는 실제 메모리 누수와 메모리 조각화의 결과를 구분할 수 있었습니다.Psi는 또한 스레드 캐시와 스레드당 할당이 어떻게 전반적인 성능(속도) 향상을 제공했는지 설명합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top