top of page
  • 작성자 사진Wonhyuk Yang

mm/compaction.c 복습 자료

최종 수정일: 2021년 6월 5일

기나긴 compaction 분석이 거의 끝났지만, compaction 외에 migrate와 rmap과 같은 큼직큼직한 부분도 동시에 다뤘기 때문에 다시 한 번 compaction을 복습하는 시간을 가지면 유용할 것 같아요. Compaction 기본 개념부터 발전사에 따라 추가된 부분들을 되짚어 보며 최신 compaction에 대해 이해하는 방향으로 기술하도록 할게요.


1) /proc, /sys를 통해 트리거되면 compaction이 진행됨


2) direct compaction 추가, high order 할당 실패 시, reclaim 이전에 compaction이 호출되며 요청된 order을 만들어내기 위해 노력함.


3) async: migrate 함수에 의존. sync 인자가 추가됨.


7db8889ab05b57200158432755af318fb68854a2 mm: have order > 0 compaction start off where it left mm/compaction.c | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 58 insertions(+), 5 deletions(-)

Free page의 위치를 캐시. qudratic 시간 복잡도를 O(n)으로 개선. 즉, zone에 free_page 위치를 캐시. 그러면 중간 부터 시작하므로 종료조건이 한 바퀴 돌도록 추가. 다른 쓰레드에서 동시에 cache에 접근 가능 따라서 매 루프마다 캐시를 읽어오고 그 값 사용을 고려.


bb13ffeb9f6bfeb301443994dfbf29f91117dfb3 mm: compaction: cache if a pageblock was scanned and no pages were isolated mm/compaction.c | 125 ++++++++++++++++++++++++++++++++++++++++++++++++--------


Scannerr한 블록 중 스킵할 녀석들은 캐시해서 나음에 무시.

c89511ab2f8fe2b47585e60da8af7fd213ec877e mm: compaction: Restart compaction from near where it left off mm/compaction.c | 58 ++++++++++++++++++++++++++++++++++++++++++++++++----------

Revert된 캐시 아이디어 다시 도입. Free page의 위치를 캐시. qudratic 시간 복잡도를 O(n)으로 개선. 즉, zone에 free_page 위치를 캐시.


35979ef3393110ff3c12c6b94552208d3bdf1a36 mm, compaction: add per-zone migration pfn cache for async compaction mm/compaction.c | 66 ++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 40 insertions(+), 26 deletions(-)


70b44595eafe9c7c235f076d653a268ca1ab9fdb mm, compaction: use free lists to quickly locate a migration source mm/compaction.c | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-


5) fast find block by using free list


6) selective

조회수 24회댓글 0개

관련 게시물

전체 보기
bottom of page