x86-8 / linux-3.2

iamroot.org linux study x86 8th
Other
4 stars 1 forks source link

SPARSEMEM_EXTREAM은 무엇인가! #3

Open Minq opened 11 years ago

Minq commented 11 years ago

뭔가요.. 먹는건가요.

Minq commented 11 years ago

@hwiorn @bangch @jminrang 소환!

hwiorn commented 11 years ago

SPARSEMEM_EXTREME 은 기존의 1차원 배열이었던 mem_section 구조를 2차원 포인터 배열로 바꾼 구조를 의미합니다. 그렇게 바꾼 이유는 더 작은 메모리를 차지하기 때문이라고 합니다. 기존 1차원 배열인 상태라면, 쓰지 않음에도 메모리를 잡고 있어야 하기 때문에, 메모리 낭비가 발생하지만, section 번호를 가지고, memory_presnet()에서 메모리 접근 시 할당하는 방식을 취하면, 쓰려는 mem_section만 할당된 상태가 됩니다(기존 1차원 배열 방식에서는 memory_present()이전에 모두 할당되어 있어야 한다고 합니다)

SPARSEMEM_EXTREME가 구현된 patch에서는 2차원 배열로 바꾼 만큼, 1차원 배열보다 접근하는데 추가적인 overhead가 있다고 합니다. 구조를 바꾼 만큼 생기는 속도-메모리 tradeoff 인데, 얼마 만큼의 overhead가 발생하는지는 모르겠습니다.

추가적으로, kernel 소스에서 CONFIG_SSPARSEMEM_EXTREME 이 활성화 안되어 있을 때도, mem_section 이 2차원 배열인 것은 같은 함수들을 쓰기 위함입니다(처리 방법은 2차원 배열이되, 의미상 1차원 배열과 같습니다)