본문 바로가기
Kernel/理解

[mm][fs] File/Anon + VMA/Page

by 暻煥 2024. 2. 2.

※ File 및 Anon의 VMA와 Page 구조

 

 

File Page = Dirty Cache + Clean Cache
File VMA = Anone Page + File Page
Anon VMA = Anon Page

 

( 즉, File-VMA에도 Anon Page가 존재할 수 있다. )

 

※ 주요 사용 API

int PageAnon(struct page *page);
int page_is_file_lru(struct page *page);
bool vma_is_anonymous(struct vm_area_struct *vma);

 

※ KSWAPD Reclaim Path

kswapd(void *p);
/**/
balance_pgdat(pg_data_t *pgdat, int order, int highest_zoneidx);
/**/
kswapd_shrink_node(pg_data_t *pgdat, struct scan_control *sc);
/**/
shrink_node(pg_data_t *pgdat, struct scan_control *sc);
/**/
shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc);
/**/
shrink_lruvec(struct lruvec *lruvec, struct scan_control *sc);
/**/
shrink_list(enum lru_list lru, unsigned long nr_to_scan, struct lruvec *lruvec, struct scan_control *sc);
/**/
shrink_inactive_list(unsigned long nr_to_scan, struct lruvec *lruvec, struct scan_control *sc, enum lru_list lru);
/**/
shrink_page_list(struct list_head *page_list, struct pglist_data *pgdat, struct scan_control *sc, struct reclaim_stat *stat, bool ignore_references);
// shrink_page_list() 함수는 다름 reclaim logic에서도 주로 사용
/**/
__remove_mapping(struct address_space *mapping, struct page *page, bool reclaimed, struct mem_cgroup *target_memcg);
/**/
__delete_from_page_cache(struct page *page, void *shadow);
/**/
free_unref_page_list(struct list_head *list);

'Kernel > 理解' 카테고리의 다른 글

ZRAM 분석  (0) 2024.02.02
ELF 실행 & execve  (0) 2024.02.02
Bootloader 개요  (0) 2024.02.02
[sched] Pressure Stall Information (PSI)  (0) 2024.02.02
ARM64 (ARMv8) Assembly 참고 자료  (0) 2024.02.02