
[IAMROOT] 2022/4/23 Note
Q1: __free_one_pages의 다소 복잡한 이유? A: mm/page_alloc: prevent merging between isolated and other pageblocks CMA 타입과, ISOLATE 타입의 블록 병합 문제 현상 존재. 기존에는, free되는 페이지의 migration type을 보고, MAX_ORDER 까지의 병합을 허락한다. 하지만, isolation은 atmoic하게 pageblock의 속성을 변경하는게 아니라, 순차적으로 변경한다. zone에 isolated된 페이지가 있는지 확인하고, target과 buudy의 block의 속성이 다르고, 하나라도 isolated 속성이라면 merging을 중단하는 로직을 추가한다. 그렇지 않다면 IC, CI 일 때, C에 free pages가 일어나면, isolated pageblock이 병합될 수 있다. Q2: isolation type? A: memory unplug