Linux'ta, bir KVM sanal makinesinin bellek sayfalarını çalışma zamanında bir NUMA düğümünden başka bir NUMA düğümüne geçirmek istiyorum. Ama bunu KVM hipervizöründe veya libvirt API'sini kullanarak herhangi bir arayüz bulamıyorum. Sonra numa_migrate_pages
işlevi içinde kullanmaya -lnuma
ve VM işleminin bellek sayfalarını geçirmeye çalıştım . Ancak, numa_migrate_pages
işlevin yalnızca bazı sayfaları taşıyabildiğini, tüm sayfaları taşıyamayacağını buldum . Örneğin, aşağıdaki metin bu VM işleminin bellek sayfaları dağılımını gösterir:
Node0: 0 pages
Node1: 1538 pages
Node2: 270641 pages
Node3: 552 pages
Düğüm2'deki tüm sayfaları Düğüm0'a geçirmek istiyorum. Ancak numa_migrate_pages
işlevi kullandıktan sonra , aşağıdaki metnin gösterdiği gibi, yalnızca bazı sayfalar taşınır:
Node0: 7952 pages
Node1: 1538 pages
Node2: 262113 pages
Node3: 552 pages
Sonra dosyayı açıyorum ve Düğüm2'de kalan sayfaların çoğunun anonim ve kirli sayfalar olduğunu görüyorum :/proc/[pid of VM process]/numa_maps
7f572c000000 default anon=262143 dirty=262143 N2=262113 ...
Peki, neden Düğüm2'deki tüm sayfalar Düğüm0'a taşınamıyor? Burada sorun ne?