본문 바로가기

Cache

proc/meminfo 분석하기 와 pagecache size limitation(restrict) 하는 방법 1. meminfo 분석하기 전반적인 내용 : https://ssambback.tistory.com/entry/Linux-Memory%EC%9D%98-%EC%83%81%ED%83%9C%EB%A5%BC-%EB%B6%84%EC%84%9D%ED%95%98%EB%9D%BC Linux Memory의 상태를 분석하라 리눅스의 메모리 사용량의 경우 항상 물리적인 메모리 대비 Cache 와 Buffer의 사용량에 대해서 논쟁이도고는 한다. 물론 운영중에 갑자기 물리적인 메모리의 사용량이 늘어서 SWAP을 사용하는 경우라면 달라지겠.. ssambback.tistory.com 정보는 최고사용량과 최저사용량으로 표현되며, 먼저 최고사용량에 대해 살펴보면 다음과 같다. - MemoryTotal : 사용 가능한 최대 메모리(R.. 더보기
cache - clean, Invalidate, Flush Clean : Cache의 dirty data를 memory에 write. (Cache line은 dirty에서 clean으로 변경 & data는 Cache line에 존재) Invalidate : Cache line의 valid flag를 0으로 change. (Cache line을 버림) Flush : Clean + Invalidate. [출처] Clean, Invalidate, Flush of Cache|작성자 고고빨간양말 더보기
linux 에서 page cache(페이지 캐쉬)란? disk I/O 의 효율을 위해 main memory 에 잡아놓은 cache buffer 의 명칭 아래와 같이 cache memory 의 상태를 알 수 있다. # free -m total used free shared buffers cachedMem: 6759 3121 3638 0 220 2008-/+ buffers/cache: 892 5867Swap: 4692 0 4692 원문 : http://wnstjqdl.tistory.com/46 시스템이 특별히 메모리 자원의 사용량이 없는데 캐쉬메모리가 많아 할당되어 여유메모리 할당이 적게 나올 경우 메모리를 초기화 하는 방법은 아래와 같다. To free pagecache(페이지캐쉬 초기화)echo 1 > /proc/sys/vm/drop_caches To fr.. 더보기
The cost of inline functions The cost of inline functions [Posted April 28, 2004 by corbet] The kernel makes heavy use of inline functions. In many cases, inline expansion of functions is necessary; some of these functions employ various sorts of assembly language trickery that must be part of the calling function. In many other cases, though, inline functions are used as a way of improving performance. The thinking is that.. 더보기
Cache - Flush, clean, Invalidate cache 의 disable 하는 방법을 찾다가 invalidate 와 diable 의 용어의 혼돈이 생겨서 검색하던중 좋은 자료를 발견하였다. 헌데 cache disable 은 어떻게 하는걸까 ㅡㅡ; 찾으면 추가로 정리하겠다. 원문 : http://blog.naver.com/PostView.nhn?blogId=sadbiker&logNo=90016135740&redirect=Dlog&widgetTypeCall=true Cache Flush와 Invalidate… Cache란 뭐 다들 아시다시피.. 저장공간(일반적 메모리와 하드등 저장공간)과 CPU사이에 속도차이를 줄여주기 위하여 있는 소형(비싸서 작은것만 쓰져) 메모리 공간입니다.. 주로 CPU내부에 장착되어 있다지요? ^^ 그래서 CPU는 저장장치에서.. 더보기
L1, L2 cache 와 I cache, D cache 의 관계 전에도 언급한 적이 있듯이 어떠한 instruction set 이나 data 를 읽어올때 부근에 있는 data 들을 cache 로 저장합니다. 이때 L1 cache 를 사용하게 되며 L1 cache 에 없는 내용은 L2 cache 에서 뒤지게 됩니다. L2 cache 에도 없으면 Ram 에서 해당 데이터와 주변의 값들을 읽어오는 것이지요. I cache 는 instruction 이고 D cache 는 data cache 를 말합니다. L1 은 I cache 와 D cache 를 모두 가지고 있으며, L2 는 자주 access 가 이루어 지는 D cache 만으로 이루어져 있습니다. ==> 실제 확인해 본 결과 (Havard Archithecture 의 프로세서에서) L2 cache 에 Data와 Inst.. 더보기
flush_dcache_page와 kmap_atomic 원문 : http://barriosstory.blogspot.com/2009/01/flushdcachepage-kmapatomic.html 굉장히 소중한 자료이다. 더불어 글을 쓰는 스타일도 너무나 마음에 든다. 좋은 자료를 공유해준 분께 다시한번 감사 드립니다. 왜 file system code들 중 kmap_atomic과 flush_dcache_page가 있을까? 아는 분의 도움으로 이 문제에 대해서 생각해 볼 기회가 생겼다. 먼저, flush_dcache_page 함수의 용도를 먼저 알아야 한다. David Miller가 작성한 문서에는 다음과 같이 되어 있다. void flush_dcache_page(struct page *page) Any time the kernel writes to a pag.. 더보기
L1, L2 cache 원문 : http://www.bcpark.net/bbs/31751 CPU는 Central Processing Unit의 머릿글자로 이 용어에서 알수 있듯이 여러개의 장치가 모여서 CPU를 구성하고 있습니다 이 구성요소중 하나가 케시메모리인데 케시 메모리는 L1 cache와 L2 cache로 나뉩니다. L1 cache memory는 CPU가 처리하는과정에서 필요한 여러가지 계산식이나 명령코드를 저장하는 케시메모리로써 CPU에 포함되어 있습니다 반복되는 계산을 줄이는 방법이 되는 중요한 케시 입니다 L2 cache memory는 CPU와 다른 장치와의 속도차이를 개선하기 위해 사용되는 메모리인데 CPU가 연산처리를 하는동안 다음에 필요한 데이터를 미리 저장해두는 공간입니다 즉 가장빠른 CPU가 상대적으로 느.. 더보기
slab cache - 생성과 파괴를 반복하는 커다란 자료구조 관리 리눅스 커널에서 커다란 자료 구조(structer)를 자주 생성/파괴해야 하는 경우라면 slab cache의 사용을 고려해 보자. slab layer 는 프로세서별로 할당되는 객체 캐시를 보존하며, 이 리스트는 객체(데이터)의 할당과 해제 성능을 획기적으로 향상시킨다. (예를 들어 inode 로 slab cache 로 관리한다.) 객체(데이터) slab------------------------- 객체(데이터) 객체들... cache----------------------- 객체(데이터) slab------------------------- 객체들... slab들 .... 각 객체 유형별(struct 별)로 하나의 cache 를 선언한다. 하나의 cache 는 다수의 slab 을 가지고 이 각각의 sla.. 더보기
arm cache 의 속성과 셋팅 (2) = Cache System = Write strategy 1. Write- through All write are passed to main memory immediately Processor slow down to main memory speed during write cpu ↔ cache ↔ Main memory요 때, Write Through와 Write Back이라는 용어가 난무하는데요, Write Through라는 용어는 쓰루 패스와 마찬가지로 Memory에 뭔가를 쓸 때 그 값이 Cache위에 올라와 있는 값일 경우에 곤란하겠죠. Cache와 Memory값이 다르면 안되니까요. Write Through를 쓰게 되면 Cache와 Memory에 모두 Update를 같이 해버리는 거지요. 간편한 S.. 더보기
arm cache 의 속성과 셋팅 (1) cache 셋팅에 여러가지 속성중 두가지에 대해 이야기 해보자. #define L_PTE_MT_UNCACHED (0x00 더보기