監控遷移
========
下列事件 (計數器) 可以用來監控分頁遷移。
1. PGMIGRATE_SUCCESS: 一般分頁成功遷移。
每一個計數表示一個分頁被遷移。如果分頁是一個 non-THP 分頁,
則計數器是以 1 為單位做增加。如果是一個 THP 分頁,
則計數器是增加該 THP 分頁的子分頁數量。
舉例來說,若遷移一個 2 MB 的 THP,其基本分頁 (子分頁) 大小為 4KB,
則這個計數器增加 512。
2. PGMIGRATE_FAIL: 一般分頁遷移失敗。
與上述 PGMIGRATE_SUCCESS 有相同的計數規則:
如果是 THP 這個計數器會增加子分頁的數量。
3. THP_MIGRATION_SUCCESS: 一個 THP 被成功的遷移且並沒有被拆分。
4. THP_MIGRATION_FAIL: 一個 THP 無法被遷移也無法被拆分。
5. THP_MIGRATION_SPLIT: 一個 THP 被遷移,但不是完整的遷移:
首先,這個 THP 先被拆分。拆分後,重新嘗試遷移拆分後的子分頁。
THP_MIGRATION_* 事件也會更新適當的 PGMIGRATE_SUCCESS 或 PGMIGRATE_FAIL 事件。
例如,一個 THP 遷移失敗會導致 THP_MIGRATION_FAIL 和 PGMIGRATE_FAIL 增加。
Christoph Lameter, May 8, 2006.
Minchan Kim, Mar 28, 2016.
這份文件描述了 page migration 的相關知識:
isolate_page
、migratepage
、putback_page
這三個函數,並利用 PG_movable
和 PG_isolated
這兩個 flags