2

일부 작업을 실행하는 동안 성능 카운터 번호를 수집하려고합니다. 기존 LAPI 성능 카운터 인프라를 사용하여 쉽게 수행 할 수 있습니다. 는하지만, 내가 원하는 반지 수준에서 지침의운영 체제의 액세스를 계산하는 하드웨어 성능 카운터

  1. 번호와 같은 좀 더 통계 다른 링 수준으로 L1 캐시에 대한 부하 요청 0, 1, 2, 3
  2. 수 링 -의
  3. 길이 레벨 스위치

따라서 효과적으로 운영 체제와 응용 프로그램의 메모리 액세스를 구분해야합니다.

다른 사람이 나를 어떻게 안내 할 수 있습니까? 추신 : 이전에 성능 카운터를 사용하지 않았습니다. 그래서, 당신에게 사소한 것처럼 보일지도 모르는 것들이 실제로 저를 도울 수 있습니다. 감사합니다

추신 : 응용 프로그램 동작을 변경하지 않고 시스템의 실행 추적 및 메모리 액세스 추적을 얻을 수있는 방법이 있습니까?

+0

이 실험에 사용 된 CPU는 무엇입니까? OS는 무엇입니까 (현대 리눅스입니까?)? – osgx

+0

여기에 사용 된 CPU는 펜티엄 i5 프로세서이며 운영체제는 최신 리눅스 (우분투 최신 배포판)입니다. –

답변

3

perf과 같은 하드웨어 성능 카운터를 사용할 수 있습니다.

최신 하드웨어는 하드웨어 성능 카운터를 제공하므로 컴퓨터에이 기능이 포함되어있을 가능성이 큽니다. 또한 커널 드라이버를 넣어야 할 수도 있습니다. (우분투에서는 sudo apt-get이 마법을 사용합니다).

반환 한의 약간의 설명은

를 성능 리눅스의 성능 측정에 멀리 CPU의 하드웨어 차이를 추상화하고 간단한 명령 줄 인터페이스를 제공 기반 시스템 2.6+ Linux 용 프로파일 러 도구입니다 (위의 링크에서 수입) . Perf는 최신 버전의 Linux 커널에서 내 보낸 perf_events 인터페이스를 기반으로합니다.

반환 한 도구는 해당 이벤트는 위의 링크에 나와있는 측정 이벤트

의 목록을 지원합니다.

는 많은 사건에서, 당신은 uk은 각각 사용자와 커널을 의미 곳

perf stat -e cycles:u -e cycles:k -e cycles dd if=/dev/zero of=/dev/null count=100000

아래에 대한 cycles 이벤트의 통계를 얻을하고 싶은 말은. 쉼표로 구분하여 모든 이벤트를 넣을 수도 있습니다.