DAMON (Data Access MONitor) — Linux 5.15부터 메인라인. 커널 모니터링 프레임워크.
- kdamond 커널 스레드가 주기적으로 페이지 테이블 access bit를 스캔
- 메모리 영역을 region 단위로 추상화하고 access frequency를 추적
- AutoNUMA가 NUMA fault로 "우연히" 접근 정보를 얻는 것과 달리, 능동적으로 샘플링
DAMOS (DAMON-based Operation Schemes) — DAMON 위에서 동작하는 정책 엔진.
- "접근 빈도가 X 이상인 region → fast tier로 migrate" 같은 규칙을 정의
- tiered memory용으로 쓰는 주요 action: MIGRATE_HOT (promotion), MIGRATE_COLD / PAGEOUT (demotion)
→ 실행 경로에서 hooking만 할 예정이므로, DAMON은 건드릴 필요 없고 DAMOS만 point 잡으면 된다

DAMOS의 demotion은 MIGRATE_COLD를 활용할 수도, PAGEOUT을 활용할 수도 있는데 나는 MIGRATE를 쓰겠다. damon_pa_migrate_pages() 함수의 migrate_page()
- hot page detection이야 뭐 어떻게 하든 상관없으니까 DAMON을 건드릴 필요는 없고, DAMOS의 MIGRATE_HOT과 MIGRATE_COLD에만 hooking 포인트를 넣으면 된다.
- DAMO 실험에서는 AutoNUMA에서 사용한 numa_balancing과 demotion_enable는 linux default인 off로 설정해야 한다.
- 관련 파라미터는 DAMO 기존 파라미터를 활용하되, 나는 hot threshold와 age를 설정해줘야 한다.
HMSDK는 5%/30s고, 적절히 조정하면 되는데 기본적으로 몇 %하는지는 모르겠다. 10%정도로 시작해보면 좋을 것같다?

kconfig 관련 github에 반영안된거같은데 이거 고민좀 해봐야될 듯
- 이제 kernel patch하고 실험해볼거임. kernel 이름 수정하면서, 1회성 reboot 박고 할 예정 (old version)
우선 workspace에 promotion, demotion 경로에 hooking 포인트는 넣었음.