리눅스 cache miss rate 모니터링을 하고싶습니다.


특정 명령을 사용할 때 L2 cache miss rate 이 몇 % 인지를 화면에 출력하려고 하는데 어떤 명령어를 쓰면 좋을까요?

  • 2016년 03월 18일에 작성됨

조회수 421


1 답변


좋아요
3
싫어요
채택취소하기

리눅스에 perf 라는 툴이 있습니다.

perf stat -B <명령어 ..>

위와 같이 실행하면 다음과 같이 명령어에 의한 출력 후(즉, 프로그램이 실행되고 종료한 후)에 성능 지표들이 출력됩니다.

<명령어의 화면 출력 결과>

 Performance counter stats for 'ls':

          2.076373      task-clock (msec)         #    0.775 CPUs utilized
                 0      context-switches          #    0.000 K/sec
                 0      cpu-migrations            #    0.000 K/sec
               262      page-faults               #    0.126 M/sec
         5,062,230      cycles                    #    2.438 GHz                     [64.69%]
         3,657,439      stalled-cycles-frontend   #   72.25% frontend cycles idle    [52.08%]
         3,131,202      stalled-cycles-backend    #   61.85% backend  cycles idle
         2,006,362      instructions              #    0.40  insns per cycle
                                                  #    1.82  stalled cycles per insn
           495,853      branches                  #  238.807 M/sec
            14,877      branch-misses             #    3.00% of all branches

       0.002679898 seconds time elapsed

perf 도구는 https://perf.wiki.kernel.org/index.php/Tutorial 를 참고하시면 됩니다.

L2 캐쉬

L2 캐쉬면 LLC-loads 와 LLC-load-misses,LLC-stores,LLC-store-misses,LLC-prefetch-misses 를 보면 되지 않을 까 싶네요. LLC는 Last Level Cache의 약자입니다.

perf로 확인하려면, 다음과 같이 해보세요.

perf record -e LLC-loads,LLC-load-misses <명령어 ....>

위와 같이 실행하면 perf.data 라는 파일이 생기는 데, 이는 다음 명령어를 통해서 기록 내용을 확인할 수 있습니다.

perf report

아마도 컴파일이 가능하다면 -g 옵션을 준 후 사용하면 더 좋은 결과를 얻을 수 있지 않을까 싶네요.

  • 2016년 06월 01일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 03월 18일에 작성됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close