리눅스 프로젝트 중인데 질문입니다 ㅜㅜ

조회수 1769회

Raspberry Pi를 사용해서 1분 간격으로 L1 cache miss rate 을 화면에 출력하고 cache miss rate가 50 퍼센트를 넘기면 LED 전구를 키려고합니다.

LED 전구는 GPIO 사용해서 킬건데 임의로 L1 cache miss rate를 어떻게 소스코드로 50프로 이상 올려야되는지가 어떻게 해야할지 의문입니다... 하루종일 구글링했는데 잘 안나오네요...

그리고 perf나 valgrind 쓰면 L2는 나오는데 L1 은 안나오고 I1 같은건 나옵니다... L1은 어떻게 해야 출력할수 있는건가요? 또 간격을 1분씩 주려면 어떻게 해야 할까요.

고수님들 답변 부탁드립니다. 커널쪽은 처음이라 많이 어렵네요 ㅜㅜ

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • L1 cache의 miss가 50% 까지 날 수 있을지 잘 모르겠네요. L2 캐쉬는 데이터가 큰 파일을 읽거나 하면 50%를 넘는 경우도 발생하는데... 허대영(소프트웨어융합대학) 2016.3.19 09:58
  • 답변 정말 감사드립니다. 만약에 그럼 L2캐쉬 miss rate를 임의로 50프로 넘기게 하려면 어떻게 해야할까요? 알 수 없는 사용자 2016.3.19 10:35

1 답변

  • https://hashcode.co.kr/questions/1521 참고

    다음 명령은 perf를 통해서 얻을 수 있는 측정값 목록입니다.

    perf list
    

    그중 perf 에서 다음 항목이 L1 cache 입니다.

    L1-dcache-loads
    L1-dcache-load-misses
    L1-dcache-stores
    L1-dcache-store-misses
    L1-dcache-prefetches
    L1-dcache-prefetch-misses
    L1-icache-loads
    L1-icache-load-misses
    L1-icache-prefetches
    L1-icache-prefetch-misses

    perf <perf 명령어> -e <측정 항목,...> <실행명령어>
    

    간단한 perf 명령어

    • stat : 통계 처리 결과 출력
    • list : 측정 목록 보여주기
    • record : 측정하여 파일로 저장하기. 기본 저장 파일 perf.data

    예시

    perf stat -e  L1-dcache-loads,L1-dcache-load-misses ls
    

    위 예는 ls 명령의 L1 캐쉬 측정값을 출력해줄겁니다.

    참고

    • icache 는 명령어(Instruction) Cache 의 약자
    • dcache 는 데이터(Data) Cache 약자

    반복적으로 명령실행하는 방법

    watch -n <N초> <반복할 명령어>
    

    앞의 perf 명령 구문을 반복할 명령어 구문에 쓰고, N을 60으로 하면 1분마다 반복하겠습니다.

    • 답변 정말 감사드립니다. 만약에 그럼 L2캐쉬 miss rate를 임의로 50프로 넘기게 하려면 어떻게 해야할까요? 알 수 없는 사용자 2016.3.19 10:36
    • 한번 wc(워드카운트) 명령어를 사용하여 2M 이상의 크기에 적용하여 LLC-loads,LLC-load-misses를 비교해보세요. L2 캐쉬보다 큰 크기의 파일을 처음부터 끝까지 읽게 하면 cache-miss가 증가할 수 밖에 없습니다. 그리고 여러개의 프로세스가 바쁘게 동작(동시에 실행)하고 있다면, 그것도 cache-miss가 증가하게 될겁니다. 허대영(소프트웨어융합대학) 2016.3.19 10:53

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)