순수 software적인 방법으로 page 접근 빈도를 알 수 있나요? (H/W cache 접근 포함)
글쓴이: smartcode / 작성시간: 목, 2012/12/27 - 6:34오후
예를 들어 다음과 같은 코드를 실행하게될때 참조될 page의 접근 빈도를 알아보려합니다.
int main() { int dummy[1024]; int i, res; for(i=0; i<1024; i++) res = dummy[i]; return 0; }
단순하게 생각해보면, 위의 프로그램이 실행되면 dummy를 위한 page가 하나 할당이 될텐데요,
dummy 배열에 최초 접근시 cache miss가 나서 dummy page 내용중 일부 (cache line 크기)만큼 메모리에서 가져와 cache에 넣고 가져온 cache line 크기가 넘지않는 한 cache에 올라온 dummy page의 일부 내용만을 사용할텐데 이때에도 page 접근 횟수가 카운트되는지 궁금합니다. (page struct의 count 변수 (atomic_t count)가 증가하나요?)
사실 H/W cache로의 접근은 OS 입장에서는 안보이는 존재라 매번 dummy를 참조할때마다 dummy page로의 접근이 일어날것 같은데 제 지식이 짧은지라 확신이 안서서 질문하게 되었습니다. ㅜ
아니라면, page struct의 count값은 언제 증가가 되는지도 궁금합니다.
그리고 cache에 올라온 dummy page의 일부 내용이 접근되는것도 software 적인 방법 (커널 코드 수정 등..)으로 그 빈도를 알아볼 수 있는 방법이 있는지도 궁금합니다..
많은 답변 부탁드려요 ^^;
Forums:
linux perf
linux perf
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
댓글 달기