小编Jen*_*son的帖子

如何将一个进程的所有内存页从一个 NUMA 节点迁移到另一个 NUMA 节点?

在 Linux 中,我想在运行时将 KVM 虚拟机的内存页从一个 NUMA 节点迁移到另一个 NUMA 节点。但是我在 KVM 管理程序或使用 libvirt API 中找不到任何接口来执行此操作。然后我尝试使用中的numa_migrate_pages函数-lnuma,迁移VM进程的内存页。但是我发现该numa_migrate_pages功能只能迁移部分页面,不能迁移所有页面。例如,下面的文字显示了这个 VM 进程的内存页分布:

Node0:  0             pages
Node1:  1538          pages
Node2:  270641        pages
Node3:  552           pages
Run Code Online (Sandbox Code Playgroud)

我想把Node2中的所有页面都迁移到Node0。但是使用该numa_migrate_pages功能后,只迁移了部分页面,如下图所示:

Node0:  7952          pages
Node1:  1538          pages
Node2:  262113        pages
Node3:  552           pages
Run Code Online (Sandbox Code Playgroud)

然后我打开文件,发现Node2上剩下的大部分页面都是匿名和脏页:/proc/[pid of VM process]/numa_maps

7f572c000000 default anon=262143 dirty=262143 N2=262113 ...
Run Code Online (Sandbox Code Playgroud)

那么为什么不能将Node2中的所有页面都迁移到Node0上呢?这里有什么问题?

linux kvm numa

11
推荐指数
1
解决办法
1572
查看次数

标签 统计

kvm ×1

linux ×1

numa ×1