在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
我想将Node2中的所有页面迁移到Node0。但是使用numa_migrate_pages
功能后,仅迁移了一些页面,如下文本所示:
Node0: 7952 pages
Node1: 1538 pages
Node2: 262113 pages
Node3: 552 pages
然后打开文件,发现Node2上剩下的大多数页面都是匿名页面和脏页面:/proc/[pid of VM process]/numa_maps
7f572c000000 default anon=262143 dirty=262143 N2=262113 ...
那么,为什么不能将Node2中的所有页面都迁移到Node0?这是什么问题
3
粘贴文字时不要张贴图片。无法搜索图像或将图像粘贴到答案中,甚至无法在与您的显示器大不相同的显示器上读取图像(例如,在较大的高分辨率显示器上无法读取的小字体),或者视障用户使用屏幕阅读器软件(例如颚。
—
cas
我假设您以root身份运行numa迁移页面?
—
Lmwangi '16
@Lmwangi是的,我以root身份运行。
—
简森
Node0上是否有足够的可用页面来完成事务?
—
亚伦·沃尔斯坦