2012 년 tcmalloc 학습 노트 3

5462 단어
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) 를 초과 하면 스 팸 수집 기 를 실행 하여 사용 하지 않 은 대상 을 스 레 드 캐 시 에서 중앙 자유 목록 으로 이동 합 니 다.

    좋은 웹페이지 즐겨찾기