#author("2025-09-11T21:06:44+09:00","default:guest","guest")
#author("2025-09-11T21:07:27+09:00","default:guest","guest")
*参照元 [#qe998f82]
#backlinks

*説明 [#efc8b750]
-パス: [[linux-5.15/mm/vmscan.c]]

-指定したLRU listからページ回収する。


**引数 [#r23e690a]
-enum lru_list lru
--LRU listの種類。
--[[linux-5.15/lru_list]]
-unsigned long nr_to_scan
--
-struct lruvec *lruvec
--LRU list
--[[linux-5.15/lruvec]]
-struct scan_control *sc
--
--[[linux-5.15/scan_control]]


**返り値 [#r96849dc]
-unsigned long
--回収したページ数。active系のLRU listからページ回収した場合は0を返す。


**参考 [#m83c63da]


*実装 [#dc6fd057]

 static unsigned long shrink_list(enum lru_list lru, unsigned long nr_to_scan,
 				 struct lruvec *lruvec, struct scan_control *sc)
 {
 	if (is_active_lru(lru)) {
 		if (sc->may_deactivate & (1 << is_file_lru(lru)))
 			shrink_active_list(nr_to_scan, lruvec, sc, lru);
 		else
 			sc->skipped_deactivate = 1;
 		return 0;
 	}
 
-LRU listがactive系(active anon, active file)で、scan_control->may_deactivateのビットと一致していればactive系のLRU listからページを回収する。
-LRU listがactive系(active anon, active file)で、scan_control->may_deactivateのビットと一致していればactive系のLRU listを縮小する(ページは回収しない)。
-active anonのとき
--1 << is_file_lru(lru) = 1 << false = 1 << 0 = 1 (= DEACTIVATE_ANON)
-active fileのとき
--1 << is_file_lru(lru) = 1 << true = 1 << 1 = 2 (= DEACTIVATE_FILE)
-may_deactivateはshrink_node()で設定される。
--[[linux-5.15/is_active_lru()]]
--[[linux-5.15/is_file_lru()]]
--[[linux-5.15/shrink_active_list()]]
--[[linux-5.15/shrink_node()]]

 	return shrink_inactive_list(nr_to_scan, lruvec, sc, lru);
 }

-inactive系のLRU listからページを回収する。
--[[linux-5.15/shrink_inactive_list()]]


*コメント [#q64516a2]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS