2009-03-12 3 views
7

인텔 Vtune 분석기와 같은 프로파일 링 도구를 사용 했습니까?C++ 멀티 스레드 응용 프로그램 프로파일 링

Linux 및 Windows에서 C++ 멀티 스레드 응용 프로그램에 대한 권장 사항은 무엇입니까? 나는 주로 캐시 누락, 메모리 사용, 메모리 누출 및 CPU 사용에 관심이있다.

저는 valgrind (UNIX에서만 사용)를 사용하지만, 주로 메모리 오류 및 누수를 찾기 위해 사용합니다.

+0

최근 필자는 프로파일 링에 대한이 백서를 보았습니다. http://www.iop.org/EJ/article/1742-6596/119/4/042030/jpconf8_119_042030.pdf?request-id=6fb45e59-676f-4728- 86bd-f324abdc5053. igprof https://twiki.cern.ch/twiki/bin/view/CMS/IgProfAnalysis는 멋진 도구처럼 보입니다 (아직 시도해야하지만). –

답변

8

다음은 멀티 스레드 응용 프로그램을위한 유용한 도구입니다. 평가 사본을 사용해 볼 수 있습니다.

  1. 런타임 전성 검사 도구
    • 스레드 검사기 - 인텔 스레드 검사기 /의 VTune, here
  2. 메모리 일관성 검사 도구 (메모리 사용량, 메모리 누수) - 메모리 검사기, here
  3. 성능 분석. (CPU 사용량) - AQTime, here

편집 : 인텔 스레드 검사기 데이터 경주를 진단하는 데 사용할 수 있습니다, 교착 상태, 마구간 스레드 등을 포기 잠금 그것으로 결과를 분석에 많은 인내를하시기 바랍니다 혼동되기 쉽습니다.

몇 가지 팁 :.

  1. 가 필요하지 않은 기능 해제 (교착 상태를 식별하는 경우는, 데이터 경주는 그 반대의 경우도 마찬가지 비활성화 할 수 있습니다.) 필요에 따라
  2. 를 사용하여 계측 수준. "API 가져 오기"가 교착 상태 감지에 사용될 수있는 데이터 경주에는 "모든 기능"및 "전체 이미지"와 같은 수준이 사용됩니다.
  3. 상황에 맞는 메뉴 "진단 도움말"을 자주 사용하십시오.
1

Rational PurifyPlus 제품군에는 검증 된 누설 감지기와 프로파일 스터가 포함되어 있습니다. 캐시 미스의 수준까지 내려갈 지 확신 할 수 없습니다. VTune이 필요할 수도 있습니다.

PurifyPlus는 다양한 Unices 및 Windows에서 사용할 수 있으므로 요구 사항을 충족해야하지만 불행히도 Valgrind와는 달리 무료는 아닙니다.

3

VTune은 프로세서의 기능에 대해 자세히 알려주고 때로는 나무가 보이지 않는 것을 발견합니다. VTune은 메모리 누수를보고하지 않습니다. 이를 위해 정화가 필요하거나 리눅스 박스에서 실행할 수 있다면 valgrind는 좋은 가격으로 메모리 누출에 좋습니다.

VTune은 두 가지 뷰를 보여 주며, 하나는 테이블 형 뷰, 다른 하나는 판매용 뷰티 유저에게 좋은 인상을 주지만 유용하지는 않습니다.

빠르고 값싼 옵션으로 valgrind와 (과) 함께 할 것입니다. Valgrind는 또한 캐시 갈기 부분을 가지고 있지만 사용하지는 않았지만 매우 훌륭하다고 생각합니다.

건배, Martin.

5

Linux의 경우 oprofile을 시도하십시오. 다양한 성능 카운터를 지원합니다.

Windows에서는 AMD의 CodeAnalyst (무료, VTune과 달리)을 살펴볼 필요가 있습니다. (인텔 CPU에서는 타이머 기반의 편리한 프로파일 러입니다.)이지만 AMD 하드웨어의 이벤트 프로파일 링 만 지원합니다.

동료가 최근에 Intel Parallel Studio (베타)을 시도하여 호의적으로 으로 평가했습니다 (일부 코드에서 일부 흥미로운 병렬 처리 관련 문제가 있음).

2

valgrind에 대한 또 다른 답변, 특히 UI가있는 callgrind 부분을 입력하겠습니다. 그것은 캐시 미스 등 각 스레드를 프로파일 링하여 여러 스레드를 처리 할 수 ​​있습니다. 그들은 또한 helgrind라는 멀티 스레드 오류 검사기를 가지고 있지만, 나는 그것을 사용한 적이 얼마나 좋은지 모르겠다. 간단한 프로파일 gprof를 들어

+2

Helgrind는 뮤텍스 잠금 순서 불일치, 경쟁 조건 등과 같은 잠재적 인 스레딩 문제를 찾아내는 데 아주 능숙합니다. pthread 와만 작동하므로 다른 스레딩 라이브러리 사용자가 운이 좋지 않을 수 있습니다. 내 컴퓨터에서 valgrind보다 훨씬 느리게 실행되므로 인내심이 중요합니다! –

1

2

당신은 AMD CodeXL의 CPU 프로파일을 시도 할 수 있습니다 .. 꽤 좋은 것입니다. 무료이며 Windows 및 Linux에서 모두 사용할 수 있습니다.

AMD CodeXL의 CPU 프로파일 러는 더 이상 지원되지 않는 CodeAnalyst 도구 (위의 답변에서 언급 한 timday로 바뀜)를 대체합니다.

자세한 내용 및 다운로드 링크를 얻으려면 AMD CodeXL web page을 방문하십시오.

관련 문제