티스토리 뷰

etc

__read_mostly 매크로의 의미

코로케 2013. 7. 26. 20:29

리눅스 커널 소스를 보다보면 심심치 않게 __read_mostly 매크로를 마주하게된다. 

unsigned long __per_cpu_offset[NR_CPUS] __read_mostly;

 
 __read_mostly 매크로를 통해서 프로그래머는 컴파일러에게  " 이 데이터는 자주 수정되지 않으며 대부분 읽기 연산만 이루어진다" 라는 것을 알려준다. __read_mostly 는 다음과 같이 정의 되어있다.

#define __read_mostly __attribute__((__section__(".data.read_mostly")))


 보통 SMP 를 고려한 코드 내에서 자주 볼수가 있는데,  컴파일러는  __read_mostly 로 선언 되어있는 데이터들을 바이너리 파일의 일정 부분에 모여있게 하여, 코어(core)들이 이러한 데이터들을 각각(복사본을) 캐시하도록 한다. 읽기 위주의 데이터들만을 동일 cacheline 에 위치시킴으로써 SMP 내에서 빈번히 발생할 수 있는 cacheline bouncing 문제를 방지하기 위함이다.


출처 <http://blog.daum.net/birdkiller/326>

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG more
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함