Як перемістити всі сторінки пам'яті процесу з одного вузла NUMA до іншого вузла NUMA?


10

У Linux я хочу перенести сторінки пам'яті віртуальної машини KVM з одного вузла NUMA на інший вузол NUMA під час виконання. Але я не можу знайти жодного інтерфейсу для цього в гіпервізорі KVM або за допомогою API libvirt. Потім я спробував використати 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 обладнання

Сторінки можуть бути заблоковані у вузлі, наприклад. якщо вони пов'язані з апаратним проходом і вони представляють апаратне забезпечення, розташоване на певному вузлі.

Безкоштовна пам'ять та розмір сторінки

Вам, очевидно, потрібно достатньо вільної пам’яті на вузлі призначення, але для переміщення великих сторінок він також повинен бути не надто фрагментованим. Якщо на одній із сторінок є безперервне виділення великого порядку, а вільна пам'ять вузла призначення не має достатньо великих вільних областей, то переміщення великої сторінки може бути невдалим (залежно від запуску та успіху ущільнення).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.