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으로 마이그레이션 할 수없는 이유는 무엇입니까? 여기서 무슨 문제가 있습니까?