# Day 29 Page Migration (四)

文件


监控迁移
========

下列事件 (计数器) 可以用来监控分页迁移。

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.

我的理解

  • THP 是 transparent huge page 一个用於优化查询 TLB 行为的记忆体子系统 feature。

这份文件描述了 page migration 的相关知识:

  • 首先描述 page migration 的目的:
    • 原本的意图:优化 NUMA 系统下,记忆体的存取延迟。
    • Heterogeneous Memory Management 刚好也有类似的 migration 需求
  • 接下来是 page migration 的使用者和使用方法:
    • numactl 这套工具底层使用的就是 migrate_pages() 这个 syscall
    • cpuset 这个 feature 可以达到当一个 task 被移动到特定的 cpuset 中时,自动的迁移该 task 的分页
    • 在 kernel 中如何使用
      • 先将要迁移的分页从 LRU list 中剔除
      • 实作一个 new_page_t 类型的函数
      • 呼叫 migrate_pages
  • 描述 page migration 的运作过程
  • 再来描述 page migration 也支援 non-LRU page 的 page migration
    • memory compaction(记忆体规整) 也是 page migration 的使用者
    • 由於 non-LRU page 也是潜在的 page migration 使用者,所以新增了 non-LRU page 的支援
      • driver 必须自行实作 isolate_pagemigratepageputback_page 这三个函数,并利用 PG_movablePG_isolated 这两个 flags
  • 最後描述的是,page migration 进行的事件计数器,若成功进行迁移会有哪些计数器增加、若失败则有另外哪些,可以透过这些计数器来达到 page migration 结果的监控

参考资料


<<:  #24 可携式静态服务器

>>:  [Day 23] Crypto 小生活

Day 02: JavaScript 与 物件导向程序设计

物件导向程序设计是什麽? 英文原文:Object-oriented programming,简称 O...

【修正模型】4-1 执行上下文(Execution Context)

经过了二十多天,一路上我们从基本的逻辑思考方式到了解 JavaScript 的意义,再从 JavaS...

Day15-hprof文件分析工具:mat(二)

前言 上篇提及了mat这工具的下载以及文件的载入,接下来就要针对mat工具进行介绍。 mat这工具的...

Day28 NiFi 案例分享 - Renault

今天这篇来分享一个我觉得在介绍 Apache NiFi 的时候很典型的一个企业案例 - Renaul...

Day27 - 铁人付外挂测试验收(三)- 端对端测试

曾经做过一个专案,顾客把商品加入购物车後,可以同时选择要加入几笔商品,然後在结帐页的时候需要根据商品...