<kernel v5.0>
디버그 메모리 -4- (Idle Page 추적)
/sys/kernel/mm/page_idle/bitmap을 조회하여 idle 페이지를 추적하기 위해 사용한다. 비트맵에서 각 비트는 페이지를 의미하고 8바이트 단위로 정렬하여 사용된다. 1로 설정된 비트가 idle 페이지이다. 이 기능은 유저 페이지에 한하여 사용될 수 있다.
- bitmap 파일을 사용하여 특정 페이지를 추적하려면 해당 페이지에 해당하는 bit를 1로 설정하고, 해당 페이지에 접근한 후 다시 bitmap을 보면 0으로 변경됨을 확인할 수 있다.
사용 조건
- CONFIG_IDLE_PAGE_TRACKING 커널 옵션
- /sys/kernel/mm/page_idle/bitmap을 사용
- 커널 v4.3-rc1에서 추가되었다.
need_page_idle()
mm/page_idle.c
#ifndef CONFIG_64BIT static bool need_page_idle(void) { return true; } #endif
page_idle_init()
mm/page_idle.c
static int __init page_idle_init(void) { int err; err = sysfs_create_group(mm_kobj, &page_idle_attr_group); if (err) { pr_err("page_idle: register sysfs failed\n"); return err; } return 0; } subsys_initcall(page_idle_init);
참고
- 디버그 메모리 -1- (Page Alloc) | 문c
- 디버그 메모리 -2- (Page Poisoning) | 문c
- 디버그 메모리 -3- (Page Owner 추적) | 문c
- 디버그 메모리 -4- (Idle Page 추적) | 문c
- page_ext_init_flatmem() | 문c
- page_ext_init() | 문c
- Idle Page Tracking | Kernel.org