วิธีการย้ายหน้าหน่วยความจำทั้งหมดของกระบวนการจาก NUMA หนึ่งโหนดไปยังอีก NUMA โหนด?


10

ใน Linux ฉันต้องการย้ายหน้าหน่วยความจำของเครื่องเสมือน KVM จาก NUMA หนึ่งโหนดไปยังอีก NUMA โหนดในขณะใช้งานจริง แต่ฉันไม่พบอินเทอร์เฟซใด ๆ ที่จะทำเช่นนั้นใน KVM hypervisor หรือใช้ 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

ฉันคิดว่าคุณกำลังเรียกใช้ numa โยกย้ายหน้าเว็บเป็นรากหรือไม่
Lmwangi

@Lmwangi ใช่ฉันใช้งานเป็น root
Jenson

มีเพจว่างเพียงพอใน Node0 เพื่อทำธุรกรรมให้เสร็จสมบูรณ์หรือไม่?
Aaron Walerstein

คำตอบ:


1

คุณต้องการmigratepagesไบนารีในnumactlแพ็คเกจ

การใช้งาน & ตัวอย่าง

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

ข้อ จำกัด

ฮาร์ดแวร์ VM

หน้าอาจถูกล็อคไปยังโหนดเช่น หากพวกเขาเกี่ยวข้องกับการส่งผ่านฮาร์ดแวร์และพวกเขาเป็นตัวแทนของฮาร์ดแวร์ที่ตั้งอยู่บนโหนดที่เฉพาะเจาะจง

ฟรีหน่วยความจำ & ขนาดหน้า

เห็นได้ชัดว่าคุณต้องการหน่วยความจำว่างเพียงพอบนโหนดปลายทาง แต่ก็ยังไม่จำเป็นต้องมีการแยกส่วนเพื่อย้ายหน้าขนาดใหญ่เกินไป หากหน้าใดหน้าหนึ่งเป็นการจัดสรรลำดับที่ต่อเนื่องกันจำนวนมากและหน่วยความจำที่ว่างโหนดปลายทางไม่มีพื้นที่ว่างที่ใหญ่พอการย้ายหน้าขนาดใหญ่อาจล้มเหลว

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.