Làm cách nào để di chuyển tất cả các trang bộ nhớ của một quá trình từ một nút NUMA sang một nút NUMA khác?


10

Trong Linux, tôi muốn di chuyển các trang bộ nhớ của máy ảo KVM từ một nút NUMA sang một nút NUMA khác trong thời gian chạy. Nhưng tôi không thể tìm thấy bất kỳ giao diện nào để thực hiện điều đó trong bộ ảo hóa KVM hoặc sử dụng API libvirt. Sau đó, tôi đã cố gắng sử dụng numa_migrate_pageschức năng trong -lnumavà di chuyển các trang bộ nhớ của quy trình VM. Nhưng tôi thấy rằng numa_migrate_pageschức năng chỉ có thể di chuyển một số trang, nó không thể di chuyển tất cả các trang. Ví dụ, văn bản dưới đây cho thấy phân phối trang bộ nhớ của quy trình VM này:

Node0:  0             pages
Node1:  1538          pages
Node2:  270641        pages
Node3:  552           pages

Và tôi muốn di chuyển tất cả các trang trong Node2 sang Node0. Nhưng sau khi sử dụng numa_migrate_pageschức năng, chỉ một số trang được di chuyển, như văn bản dưới đây cho thấy:

Node0:  7952          pages
Node1:  1538          pages
Node2:  262113        pages
Node3:  552           pages

Sau đó, tôi mở tệp và thấy rằng hầu hết các trang còn lại trên Node2 là các trang ẩn danh và bẩn:/proc/[pid of VM process]/numa_maps

7f572c000000 default anon=262143 dirty=262143 N2=262113 ...

Vậy tại sao tất cả các trang trong Node2 không thể được di chuyển sang Node0? Vấn đề ở đây là gì?


3
không đăng hình ảnh khi dán văn bản sẽ làm. hình ảnh không thể được tìm kiếm hoặc dán vào câu trả lời và thậm chí không thể đọc được trên màn hình khác biệt đáng kể với màn hình của bạn (ví dụ: phông chữ nhỏ không thể đọc được trên màn hình lớn hơn, độ phân giải cao hơn) hoặc bởi người dùng khiếm thị sử dụng phần mềm đọc màn hình như Hàm.
cas

Tôi đoán rằng bạn đang chạy các trang di chuyển numa như root?
Lmwangi

@Lmwangi vâng, tôi đang chạy root.
Jenson

Có đủ các trang miễn phí trên Node0 để hoàn thành giao dịch không?
Aaron Walerstein

Câu trả lời:


1

Bạn muốn migratepagesnhị phân trong numactlgói.

Cách sử dụng & ví dụ

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

Hạn chế

Phần cứng VM

Các trang có thể bị khóa vào một nút, ví dụ. nếu chúng liên quan đến truyền qua phần cứng và chúng đại diện cho phần cứng nằm trên một nút cụ thể.

Bộ nhớ & kích thước trang miễn phí

Bạn rõ ràng cần đủ bộ nhớ trống trên nút đích, nhưng nó cũng cần không quá phân mảnh để di chuyển các trang lớn. Nếu một trong các trang là phân bổ liên tục theo thứ tự lớn và bộ nhớ trống của nút đích không có vùng trống đủ lớn, thì việc di chuyển trang lớn có thể thất bại (tùy thuộc vào việc nén được kích hoạt & thành công).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.