#author("2025-09-10T18:07:56+09:00","default:guest","guest") #author("2025-09-10T18:21:02+09:00","default:guest","guest") *参照元 [#gc157f76] #backlinks *説明 [#e787d49e] -パス: [[linux-5.15/mm/compaction.c]] -FIXME: これは何? --説明 -ゾーンの断片化スコアを取得する。 **引数 [#we4226f2] -struct zone *zone -- --メモリゾーン。 --[[linux-5.15/zone]] **返り値 [#w719dd80] -unsigned int -- --ゾーンの断片化スコア **参考 [#a7ccfa10] *実装 [#o7fcd4fb] /* * A zone's fragmentation score is the external fragmentation wrt to the * COMPACTION_HPAGE_ORDER. It returns a value in the range [0, 100]. */ static unsigned int fragmentation_score_zone(struct zone *zone) { return extfrag_for_order(zone, COMPACTION_HPAGE_ORDER); } - -COMPACTION_HPAGE_ORDERの値 --CONFIG_TRANSPARENT_HUGEPAGE=yなら、COMPACTION_HPAGE_ORDER = HPAGE_PMD_ORDER --HPAGE_PMD_ORDER = HPAGE_PMD_SHIFT - PAGE_SHIFT = 21 - 12 = 9(つまり2MB) -HPAGE_PMD_SHIFTはコンフィグ次第で変わる。 --HPAGE_PMD_SHIFT = PMD_SHIFT = ARM64_HW_PGTABLE_LEVEL_SHIFT(2) --= (PAGE_SHIFT - 3) * (4 - n) + 3 = (12 - 3) + (4 - 2) + 3 = 21 --PAGE_SHIFT = CONFIG_ARM64_PAGE_SHIFT = 12(つまり4KB) --[[linux-5.15/extfrag_for_order()]] *コメント [#o6ef0e14]