2012 년 tcmalloc 학습 노트 3
몇 가지 기본 개념
A. 조직 구조
1. 스 레 드 부분 캐 시 ThreadCache
2. 중앙 데이터 구조 CentralHeap
B. 메모리 대상
1. 대상
2. 작은 상대
C. 테스트
1. 검사 기 쌓 기
2. 로 미터
경간
중앙 배열
2. 어떻게 최적화 하여 성능 을 향상 시 킵 니까?
컴 파일 매개 변수 수정
./configure--disable-cpu-profiler --disable-heap-profiler --disable-heap-checker--enable-minimal –disable-dependency-tracking –disable-debugalloc
목적 은 최소 tcmalloc 만 생 성 합 니 다.minimal
./configure --disable-cpu-profiler --disable-heap-profiler --disable-heap-checker --disable-debugalloc --enable-minimal
목적 은 최소 tcmalloc 만 생 성 합 니 다.minimal
3. tcmalloc 동적 라 이브 러 리 를 지정 한 디 렉 터 리 에 추가 합 니 다.
sudo echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf # ,
sudo /sbin/ldconfig
4. Mysql 은 tcmalloc 동적 라 이브 러 리 에 어떻게 가입 합 니까?
mysql 서비스의 시작 스 크 립 트 수정 mysqldsafe, "\ # executing my sqld safe" 줄 뒤에 줄 추가: exportLDPRELOAD = "/ usr / local / lib / libtcmalloc. so" 는 mysql 을 시작 하기 전에 tcmalloc 동적 라 이브 러 리 를 불 러 오 는 것 을 목적 으로 합 니 다.
다섯 째, 작은 대상
사 이 즈 를 < = 32K 이하 의 대상 을 '작은 대상' 이 라 고 부른다.
170 개 로 나 눌 수 있 는 사이즈 유형 이 있 습 니 다.
크기 분류 간격:
작은 사이즈 차이 8 바이트;
큰 사이즈 차이 16 바이트;
좀 더 큰 사이즈 차 이 는 32 바이트 로 유추 된다.
최대 간격 (사이즈 에 대해 > = ~ 2K 의) 은 256 바이트 입 니 다.
하나의 스 레 드 캐 시 는 모든 사이즈 클래스 에 자유 대상 의 단 방향 링크 를 포함 하고 있 습 니 다.
6. 작은 대상 을 분배 하 는 알고리즘
작은 대상 을 할당 할 때:
목적: 우 리 는 그 크기 를 대응 하 는 사이즈 클래스 에 투사 합 니 다.
첫 번 째 단계: 현재 스 레 드 의 스 레 드 캐 시 에 해당 하 는 자유 목록 을 찾 습 니 다.
두 번 째 단계:
자유 목록 이 비어 있 지 않 으 면:
1. 우선 자유 목록 의 첫 번 째 대상 을 옮 기기;
2. 이 대상 에 게 되 돌아 가기;
이 알고리즘 을 따 를 때 TCMalloc 는 어떤 자물쇠 도 가 져 오지 않 습 니 다.잠 금 / 잠 금 해제 작업 은 2.8GHzXeon 에서 약 100 나 초의 시간 이 필요 하기 때문에 분배 속 도 를 크게 높 일 수 있다.
자유 목록 이 비어 있 으 면:
우선, 이 사이즈 유형의 중앙 자유 목록 (중앙 자유 목록 은 모든 스 레 드 에 의 해 공유 되 는 것) 에서 일련의 대상 을 얻 을 수 있 습 니 다.
스 레 드 부분 에 있 는 자유 목록 에 넣 으 세 요.
중앙 자유 목록 도 비어 있 으 면:
첫 번 째 단계: 우 리 는 중앙 페이지 분배 기 에서 일련의 페이지 를 분배 했다.
두 번 째 단계: 그들 을 이 사이즈 의 일련의 대상 으로 나눈다.
세 번 째: 앞에서 처럼 일부 대상 을 스 레 드 부분 자유 목록 에 옮 깁 니 다.
대상
큰 대상 은 페이지 급 분배 기 (한 페이지 는 4K 의 메모리 정렬 영역) 를 사용 하여 중앙 더미 에서 직접 분배 합 니 다.
이 를 통 해 알 수 있 듯 이 큰 대상 은 항상 페이지 를 정렬 하고 정수 개의 페이지 를 차지 했다.
결론:
1. 중앙 더미 에서 직접 분배 하기;
2. 사용 하 는 기술 수단 페이지 급 분배 기;
3. 큰 대상 은 항상 페이지 를 정렬 합 니 다.
4. 큰 대상 은 항상 정수 개의 페이지 를 차지한다.
5. 페이지 는 4K 크기 의 메모리 정렬 영역 입 니 다.
8. 큰 대상 과 작은 대상 의 관계 와 차이
연락: 연속 적 인 일부 페이지 는 일련의 작은 대상 으로 나 눌 수 있 습 니 다.
차이: 그러나 그들의 크기 는 모두 같다.예 를 들 어 하나의 연속 페이지 (4K) 는 128 바이트 32 개의 대상 으로 나 눌 수 있다.
9. 폭
1. 경 계 는 무엇 입 니까?
연속 적 인 페이지 는 '범위'
Span
대상 에 의 해 표시 된다.또는 경 계 는 연속 적 인 페이지 를 나타 내 는 데 쓰 인 다.
2. 범위 의 상 태 는 어떤 것 이 있 습 니까?
하나의 경 계 는 이미 분배 되 었 거나 자 유 롭 게 될 수 있다.
3. 경계 상태 설명:
자유 라면, 경 계 는 한 페이지 의 링크 에 있 는 항목 일 것 이다.
분 배 된 경우 프로그램 에 전 달 된 큰 대상 이거 나 일련의 작은 대상 으로 분 단 된 페이지 일 것 입 니 다.작은 대상 으로 나 뉘 어 져 있 으 면 대상 의 사이즈 유형 은 범위 에 기 록 됩 니 다.
10. 어떤 페이지 가 어느 범위 에 속 하 는 지 어떻게 얻 습 니까?
페이지 번호 색인 의 중앙 배열 은 한 페이지 에 속 하 는 경 계 를 찾 는 데 사용 할 수 있 습 니 다.
즉, 페이지 번호 에 색인 이 있 고 색인 은 중앙 배열 에 저장 되 며 중앙 배열 을 통 해 페이지 가 속 한 경 계 를 찾 을 수 있다.
11. 중앙 배열 을 어떻게 실현 합 니까?
32 비트 의 주소 공간 에서 중앙 배열 은 2 층 의 기수 트 리 로 표시 되 는데 그 중에서 뿌리 는 32 개의 항목 을 포함 하고 잎 마다 215 개의 항목 (하나의 32 는 주소 공간 에 220 개의 4K 페이지 가 포함 되 어 있 기 때문에 이 나무의 1 층 은 25 로 220 개의 페이지 를 나 누 는 것) 을 포함한다.이 로 인해 중앙 배열 의 초기 메모리 사용 은 128 KB 공간 (215 * 4 바이트) 이 필요 하고 받 아들 일 수 있 을 것 으로 보인다.
64 개의 기계 에서 우 리 는 3 층 의 기수 나 무 를 사용 할 것 이다.
12. 하나의 32 는 주소 공간 으로 220 개의 4K 페이지 를 포함 하 는데 어떻게 이해 합 니까?
페이지 크기: 4K = 4 * 210 = 212
32 주소 공간 주소 지정 공간 은 232 입 니 다.
하나의 32 주소 공간 에는 232 / (4 * 210) = 220 개의 4K 페이지 가 포함 되 어 있 습 니 다.
13. 메모 리 를 어떻게 방출 합 니까?
대상 이 분배 가 해제 되 었 을 때, 우 리 는 먼저 그의 페이지 번 호 를 계산 하고 중앙 진열 에서 대응 하 는 범위 대상 을 찾 습 니 다.이 경 계 는 대상 이 크 고 작 으 며 작은 대상 이 라면 사이즈 유형 이 무엇 인지 알려 준다.작은 대상 이 라면 현재 스 레 드 캐 시 에 해당 하 는 자유 목록 에 삽입 합 니 다.스 레 드 캐 시가 현재 예 정 된 크기 (기본 값 2MB) 를 초과 하면 스 팸 수집 기 를 실행 하여 사용 하지 않 은 대상 을 스 레 드 캐 시 에서 중앙 자유 목록 으로 옮 깁 니 다.
이 대상 이 큰 대상 이 라면 그 대상 이 덮 인 페이지 의 범 위 를 알려 준다.이 범 위 를 가정 하면
[p,q]
.우 리 는 페이지 p-1
와 페이지 q+1
에 대응 하 는 경 계 를 찾 을 것 이다.만약 이 두 개의 인접 한 경계 중 어느 하나 가 자유롭다 면 우 리 는 그들 과 [p,q]
의 경 계 를 접합 할 것 이다.마지막 경 계 는 페이지 더미 에 적합 한 자유 목록 에 삽 입 됩 니 다.작은 대상 석방
한 대상 이 풀 려 났 을 때,
1. 먼저 그의 페이지 번 호 를 계산한다.
2. 그리고 중앙 배열 에서 해당 하 는 범위 의 대상 을 찾 습 니 다.이 경 계 는 우리 에 게 대상 이 큰 대상 인지 작은 대상 인지 알려 줄 것 이다.
3. 작은 대상 이 라면 사이즈 유형 이 무엇 입 니까?
4. 현재 스 레 드 의 스 레 드 캐 시 에 해당 하 는 자유 목록 에 이 분 류 를 삽입 합 니 다.
5. 삽입 후 스 레 드 캐 시가 예 정 된 크기 (기본 값 2MB) 를 초과 하면 스 팸 수집 기 를 실행 하여 사용 하지 않 은 대상 을 스 레 드 캐 시 에서 중앙 자유 목록 으로 이동 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.