Bir işlemin tüm bellek sayfalarını bir NUMA düğümünden başka bir NUMA düğümüne nasıl taşıyabilirim?


10

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_pagesişlevi içinde kullanmaya -lnumave VM işleminin bellek sayfalarını geçirmeye çalıştım . Ancak, numa_migrate_pagesiş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_pagesiş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?


3
metni yapıştırırken resim göndermeyin. görüntüler aranamaz veya yanıtlara yapıştırılamaz ve sizinkinden önemli ölçüde farklı monitörlerde (örneğin, daha büyük, daha yüksek çözünürlüklü monitörlerde okunamayan küçük yazı tipleri) veya ekran okuyucu yazılımı gibi görme engelli kullanıcılar tarafından okunamaz. Jaws.
cas

Numa migrate sayfalarını root olarak çalıştırdığınızı varsayıyorum.
Lmwangi

@Lmwangi evet, kök olarak koşuyorum.
Jenson

Düğüm0'da işlemi tamamlamak için yeterli sayıda boş sayfa var mı?
Aaron Walerstein

Yanıtlar:


1

Paketteki migratepagesikili dosyayı istiyorsunuz numactl.

Kullanım ve Örnek

sudo migratepages $VM_PID $SRC_NODE $DEST_NODE
sudo migratepages 12345 2 0

Sınırlamalar

VM donanımı

Sayfalar bir düğüme kilitlenmiş olabilir, örn. donanım geçişi ile ilgili ve belirli bir düğümde bulunan donanımı temsil ediyorlarsa.

Boş Bellek ve Sayfa boyutu

Hedef düğümde yeterince boş belleğe ihtiyacınız olduğu açıktır, ancak aynı zamanda büyük sayfaları taşımak için fazla parçalanması gerekmez. Sayfalardan biri büyük bir sıralı bitişik ayırma ise ve hedef düğüm boş belleğinin yeterince büyük boş bölgesi yoksa, büyük sayfayı taşımak başarısız olabilir (sıkıştırmanın tetiklenmesine ve başarılı olmasına bağlı olarak).

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.