2009-05-28 2 views
5

사용 된 메모리 (RAM) 대역폭은 어떻게 계산합니까? 어떤 성능 카운터가 필요합니까?메모리 대역폭 사용량

내가 할 수있는 도구 인 "Rightmark multi-threaded memory test"가 나타났습니다. 그러나 나머지 Rightmark 테스트와는 달리 바이너리 만 소스 코드를 찾지 못했습니다.

+0

왜 태그가 C#, C++ 및 c입니까? – unwind

답변

1

메모리 대역폭 사용량을 '계산'하는 것은 매우 어렵습니다. 많은 논쟁의 여지가없는 캐시와 MMU 문제가 있습니다. 이를 수행하는 유일한 방법은 시뮬레이션 또는 실제 측정을 사용하는 것입니다.

코드를 디버깅하고 수행 된 메모리로드 및 저장 작업 수를 계산하면 '거친'아이디어를 얻을 수 있습니다. 그러나 캐시 히트/미스인지 여부를 아는 것은 또 다른 문제입니다.

용도에 따라 다릅니다. 추측을 얻으려면 일반적인 목적 코드의 약 30 %가 메모리로드 및 저장이라는 경험 법칙을 사용할 수 있습니다. 최악의 경우를 얻으 려한다면 캐시가 항상 빠져 나가는 것으로 생각할 수 있습니다.

당신이 할 수있는 잠재적 인 일은 가상화를 보는 것입니다. 몇 가지 오픈 소스 옵션이 있습니다 (QEMU가 마음에 듭니다). 하드웨어 측정 값을 내보낼 수도 있습니다.

1

MSDN Magazine 6 월호의 CLR Inside Out 문서는 .NET 응용 프로그램의 메모리 사용량을 프로파일 링하는 데 사용됩니다. 코드가 리눅스에서 실행할 수있는 경우

http://msdn.microsoft.com/en-us/magazine/dd882521.aspx

+1

하지만 질문은/bandwidth/(데이터 전송률의 관점에서)가 아니라 메모리 소비에 관한 것입니다. – Frank

1

, Cachegrind를 사용

Cachegrind는 캐시 프로파일입니다. 은 CPU에있는 I1, D1 및 L2 캐시와 캐시의 자세한 시뮬레이션을 수행하므로 코드에서 캐시 누락이있는 소스 을 정확히 정확히 찾아 낼 수 있습니다. 은 함수 단위, 모듈 단위 및 전체 프로그램 요약을 사용하여 메모리 참조 및 소스 코드의 각 행에 대해 실행 된 캐시 누락 횟수를 확인합니다. 은 입니다. 모든 언어로 작성된 프로그램을 가진 이 유용합니다. Cachegrind는 보통보다 느린 20--100x에 대한 프로그램을 실행합니다.

KCacheGrind GUI을 사용할 수 있습니다.