메뉴 닫기

valgrind를 이용한 메모리 체크

valgrind는  프로그램 설능을 프로파일링 후 메모리 할당 / 초기화 되지 않은 메모리 영역 을 검색할 수 있는데, Redhat 문서를 참고하며 다음과 같은 리포트를 받을 수 있다고 합니다.

  • 실행하지 않아야 하는 메모리 액세스
  • 지정되지 않았거나 초기화되지 않은 값 사용
  • 잘못된 힙 메모리 해제
  • 포인터 중복
  • 메모리 누수

memcheck로 실행되는 어플리케이션은  메모리 사용량 을 확인해야 하기 때문에 일반적으로 실행하는것보다 10~30배 가량 느리게 실행된다고 합니다.

메모리 누수 프로파일링

  1. 패키지 설치
  2. valgrind를 이용한 메모리 누수 여부 체크
    /usr/bin/test라는 임의 프로그램을 실행하되 하위 라이브러리들도 같이 실행하도록 합니다.

  3. leak 옵션은 summary(기본값) / full 둘중하나 선택 가능한듯 하고, full로 실행하게 되면 summary보다는 좀 더 자세한 정보가 보이네요.

 

캐시 사용량 프로파일링

캐시 사용량은 다음 기능을 하고 있다 합니다.

  • 첫번째 레벨 지시 캐시 읽기 / 읽기 미스 /
  • 데이터 캐시 읽기 (메모리 읽기), 읽기 미스,
  • 데이터 캐시 쓰기 (메모리 쓰기), 쓰기 미스
  • 실행 및 잘못 예측된 조건 분기
  • 실행 및 잘못 예측된 간접 분기
  1. 패키지 설치
  2. valgrind 를 이용한 캐쉬 사용량 확인
  3. cache 내용 확인하기
  4. cache 내용 확인
    1. IL / D / 정보
      1. I캐시 읽기 (Ir, 실행된 명령어 수), I1, 캐시 읽기 미스 (I1mr), LL캐시 명령어 읽기 미스 (ILmr)
      2. D캐시 읽기 (Dr, 메모리 읽기 수), D1 캐시 읽기 미스 (D1mr), LL 캐시 데이터 읽기 미스 (DLmr)
      3. D캐시 쓰기 (Dw, 메모리 쓰기 수), D1 캐시 쓰기 누락 (D1mw), LL 캐시 데이터 쓰기 누락 (Dlmw)
    2. 전체 프로그램에 대한 요약 통계
      ——————————————————————————–
      Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw
      ——————————————————————————–
      6,122,264 3,538 2,481 1,725,087 79,539 16,924 655,284 10,140 8,215 PROGRAM TOTALS
    3. 기능별 통계
      ——————————————————————————–
      Ir I1mr ILmr Dr D1mr DLmr Dw D1mw DLmw file:function
      ——————————————————————————–
      2,074,204 48 14 699,500 46,437 1,226 284,276 70 12 ???:do_lookup_x

 

참고URL : https://valgrind.org/docs/manual/cg-manual.htmlhttps://access.redhat.com/documentation/ko-kr/red_hat_enterprise_linux/7/html/performance_tuning_guide/sect-red_hat_enterprise_linux-performance_tuning_guide-performance_monitoring_tools-valgrind

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다

[+] kaskus emoticons nartzco