linux-5.15/zone_watermark_fast()
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*参照元 [#hc8f6b83]
#backlinks
*説明 [#b8ca5968]
-パス: [[linux-5.15/mm/page_alloc.c]]
-ゾーンにmark以上の空きページがあるか取得する。
--order 0の判定に対する高速化が実装されている。
--markに指定する値は任意だが、watermarkが指定されることが...
**引数 [#s1c64106]
-struct zone *z
--メモリゾーン。
--[[linux-5.15/zone]]
-unsigned int order
--オーダー。カーネルのメモリ確保関数は、ページ数を2^order...
-unsigned long mark
--十分な空きページがあると判定するための閾値。指定する値...
-int highest_zoneidx
--ゾーンインデックス。このインデックス以下のゾーンからメ...
-unsigned int alloc_flags
--
-gfp_t gfp_mask
--
--[[linux-5.15/gfp_t]]
**返り値 [#rc902135]
-bool
--十分な空きページがあればtrue、なければfalse。
**参考 [#j8ff0c00]
*実装 [#nbdc975e]
static inline bool zone_watermark_fast(struct zone *z, u...
unsigned long mark, int highest_zoneidx,
unsigned int alloc_flags, gfp_t gfp_mask)
{
long free_pages;
free_pages = zone_page_state(z, NR_FREE_PAGES);
-ゾーンの空きページ数を取得する。
--[[linux-5.15/zone_page_state()]]
/*
* Fast check for order-0 only. If this fails then the ...
* need to be calculated.
*/
if (!order) {
long fast_free;
fast_free = free_pages;
fast_free -= __zone_watermark_unusable_free(z, 0, allo...
if (fast_free > mark + z->lowmem_reserve[highest_zonei...
return true;
}
-order 0のみの高速判定処理。空きページ数からunusable_free...
-通常判定と比べると、ALLOC_HIGH、ALLOC_HARDERやALLOC_OOM...
--[[linux-5.15/__zone_watermark_unusable_free()]]
if (__zone_watermark_ok(z, order, mark, highest_zoneidx...
free_pages))
return true;
-通常判定に成功したらtrueを返す。
--[[linux-5.15/__zone_watermark_ok()]]
/*
* Ignore watermark boosting for GFP_ATOMIC order-0 all...
* when checking the min watermark. The min watermark i...
* point where boosting is ignored so that kswapd is wo...
* when below the low watermark.
*/
if (unlikely(!order && (gfp_mask & __GFP_ATOMIC) && z->...
&& ((alloc_flags & ALLOC_WMARK_MASK) == WMARK_MIN))) {
mark = z->_watermark[WMARK_MIN];
return __zone_watermark_ok(z, order, mark, highest_zon...
alloc_flags, free_pages);
}
return false;
}
-order 0でGFP_ATOMICが指定されているときはwatermark_boost...
--[[linux-5.15/__zone_watermark_ok()]]
*コメント [#y05c2ade]
終了行:
*参照元 [#hc8f6b83]
#backlinks
*説明 [#b8ca5968]
-パス: [[linux-5.15/mm/page_alloc.c]]
-ゾーンにmark以上の空きページがあるか取得する。
--order 0の判定に対する高速化が実装されている。
--markに指定する値は任意だが、watermarkが指定されることが...
**引数 [#s1c64106]
-struct zone *z
--メモリゾーン。
--[[linux-5.15/zone]]
-unsigned int order
--オーダー。カーネルのメモリ確保関数は、ページ数を2^order...
-unsigned long mark
--十分な空きページがあると判定するための閾値。指定する値...
-int highest_zoneidx
--ゾーンインデックス。このインデックス以下のゾーンからメ...
-unsigned int alloc_flags
--
-gfp_t gfp_mask
--
--[[linux-5.15/gfp_t]]
**返り値 [#rc902135]
-bool
--十分な空きページがあればtrue、なければfalse。
**参考 [#j8ff0c00]
*実装 [#nbdc975e]
static inline bool zone_watermark_fast(struct zone *z, u...
unsigned long mark, int highest_zoneidx,
unsigned int alloc_flags, gfp_t gfp_mask)
{
long free_pages;
free_pages = zone_page_state(z, NR_FREE_PAGES);
-ゾーンの空きページ数を取得する。
--[[linux-5.15/zone_page_state()]]
/*
* Fast check for order-0 only. If this fails then the ...
* need to be calculated.
*/
if (!order) {
long fast_free;
fast_free = free_pages;
fast_free -= __zone_watermark_unusable_free(z, 0, allo...
if (fast_free > mark + z->lowmem_reserve[highest_zonei...
return true;
}
-order 0のみの高速判定処理。空きページ数からunusable_free...
-通常判定と比べると、ALLOC_HIGH、ALLOC_HARDERやALLOC_OOM...
--[[linux-5.15/__zone_watermark_unusable_free()]]
if (__zone_watermark_ok(z, order, mark, highest_zoneidx...
free_pages))
return true;
-通常判定に成功したらtrueを返す。
--[[linux-5.15/__zone_watermark_ok()]]
/*
* Ignore watermark boosting for GFP_ATOMIC order-0 all...
* when checking the min watermark. The min watermark i...
* point where boosting is ignored so that kswapd is wo...
* when below the low watermark.
*/
if (unlikely(!order && (gfp_mask & __GFP_ATOMIC) && z->...
&& ((alloc_flags & ALLOC_WMARK_MASK) == WMARK_MIN))) {
mark = z->_watermark[WMARK_MIN];
return __zone_watermark_ok(z, order, mark, highest_zon...
alloc_flags, free_pages);
}
return false;
}
-order 0でGFP_ATOMICが指定されているときはwatermark_boost...
--[[linux-5.15/__zone_watermark_ok()]]
*コメント [#y05c2ade]
ページ名: