【问题标题】:Migrate memory pages of a running process迁移正在运行的进程的内存页
【发布时间】:2016-06-26 09:09:03
【问题描述】:

在 NUMA 机器上,是否可以将正在运行的进程的内存页面迁移到一个节点?

P.S:我知道任务集可以在运行时更改关联性,但没有文档说明已分配的内存页面如何受到影响。

据我所知,Numactl 只能在创建进程时起作用。

【问题讨论】:

    标签: process migrate numa


    【解决方案1】:

    libnuma库中有这样的调用(numactl包,自2003):http://linux.die.net/man/3/numa

    void numa_tonode_memory(void *start, size_t size, int node);
    

    numa_tonode_memory() 将内存放在特定节点上。

    它可以通过mbind 调用和MPOL_MF_MOVE 选项来实现:http://man7.org/linux/man-pages/man2/mbind.2.html

    mbind - 为内存范围设置内存策略
    如果 MPOL_MF_MOVE 在 flags 中指定,那么内核将尝试 移动内存范围内的所有现有页面,以便它们 遵守政策。

    https://www.kernel.org/doc/Documentation/vm/page_migration

    页面迁移允许进程手动重新定位其所在的节点 页面在设置时通过 MF_MOVE 和 MF_MOVE_ALL 选项定位 通过 mbind() 的新内存策略。

    或者move_pages: http://man7.org/linux/man-pages/man2/move_pages.2.html "move_pages - 将进程的各个页面移动到另一个节点"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-11
      • 1970-01-01
      • 2012-06-14
      • 2017-09-19
      • 1970-01-01
      • 2020-10-06
      • 2011-05-01
      相关资源
      最近更新 更多