2012-08-30 26 views
8

Khi chúng tôi làm việc trên hệ thống NUMA, bộ nhớ có thể là cục bộ hoặc từ xa so với nút NUMA hiện tại. Để làm cho bộ nhớ địa phương hơn có một chính sách "đầu tiên-touch" (bộ nhớ mặc định đến nút chiến lược ràng buộc): http://lse.sourceforge.net/numa/status/description.htmlCó NUMA chính sách tiếp theo trong Linux hiện đại

Memory Mặc định Binding Điều quan trọng là bộ nhớ chương trình của người sử dụng được phân bổ vào một nút gần với nút chứa CPU mà chúng đang chạy. Do đó, theo mặc định, lỗi trang được thỏa mãn bởi bộ nhớ từ nút chứa CPU lỗi trang. Vì CPU đầu tiên chạm vào trang sẽ là CPU làm lỗi trang, chính sách mặc định này được gọi là "chạm đầu tiên".

http://techpubs.sgi.com/library/dynaweb_docs/0640/SGI_Developer/books/OrOn2_PfTune/sgi_html/ch08.html

Các chính sách mặc định được gọi là đầu tiên chạm. Theo chính sách này, quá trình đầu tiên chạm (nghĩa là, ghi vào hoặc đọc từ) một trang bộ nhớ làm cho trang đó được cấp phát trong nút mà quá trình đang chạy. Chính sách này hoạt động tốt cho các chương trình tuần tự và cho nhiều chương trình song song.

Ngoài ra còn có một số chính sách phi địa phương khác. Ngoài ra còn có một chức năng để yêu cầu di chuyển rõ ràng của phân đoạn bộ nhớ đến một số nút NUMA. Tuy nhiên, đôi khi (trong bối cảnh của nhiều chủ đề của các ứng dụng đơn lẻ) có thể hữu ích khi có chính sách "tiếp theo": gọi một số chức năng để "unbind" một số vùng bộ nhớ (lên đến 100s MB) với một số dữ liệu và đăng ký lại "cảm ứng đầu tiên" giống như trình xử lý trên vùng này sẽ di chuyển trang trên lần chạm tiếp theo (đọc hoặc ghi) vào nút numa của chuỗi truy cập.

Chính sách này hữu ích trong trường hợp có nhiều dữ liệu lớn để xử lý theo nhiều luồng và có các kiểu truy cập khác nhau vào dữ liệu này (ví dụ: giai đoạn đầu tiên - chia mảng 2D theo cột qua chủ đề; theo hàng).

chính sách như vậy đã được hỗ trợ trong Solaris từ 9 qua madvice với MADV_ACCESS_LWP cờ

https://cims.nyu.edu/cgi-systems/man.cgi?section=3C&topic=madvise

MADV_ACCESS_LWP Cho kernel rằng LWP bên cạnh chạm vào dải địa chỉ quy định sẽ truy cập vào nó nặng nề nhất, do đó hạt nhân nên cố gắng phân bổ bộ nhớ và các tài nguyên khác cho phạm vi này và LWP tương ứng.

Có (có thể 2009) các miếng vá cho hạt nhân Linux có tên là "ái lực-on-next-touch", http://lwn.net/Articles/332754/ (thread) nhưng như tôi hiểu nó đã không được chấp nhận vào đường chính, không phải là nó?

Cũng có các bản vá "migrate_on_fault" của Lee Schermerhorn http://free.linux.hp.com/~lts/Patches/PageMigration/.

Vì vậy, câu hỏi: Có một số liên lạc tiếp theo cho NUMA trong nhân Linux vanilla hiện tại hoặc trong một số ngã ba chính, như hạt nhân Linux RedHat hoặc hạt nhân Linux của Oracle không?

+0

Kiểm tra bài báo này - https://hal.inria.fr/inria-00358172/file/article.pdf "Bật chuyển đổi bộ nhớ hiệu năng cao cho các ứng dụng đa luồng trên Linux", Brice Goglin, Nathalie Furmento, 2009 "Triển khai Chính sách tiếp theo trong không gian người dùng thông qua mprotect và bộ xử lý tín hiệu cho lỗi phân đoạn. ". Việc thực hiện tiếp theo là một phần của MaMI/Marcel https://runtime.bordeaux.inria.fr/MaMI//https://runtime.bordeaux.inria.fr/marcel/ của họ – osgx

Trả lời

1

Với sự hiểu biết của tôi, không có bất kỳ điều gì tương tự trong hạt nhân vanilla.numactl có các chức năng để di chuyển các trang theo cách thủ công, nhưng nó có thể không hữu ích trong trường hợp của bạn. (NUMA mô tả chính sách nằm trong Tài liệu/vm/numa_memory_policy nếu bạn muốn tự kiểm tra)

Tôi nghĩ rằng các bản vá đó không được hợp nhất vì tôi không thấy bất kỳ đoạn mã nào có liên quan hiển thị trong hạt nhân hiện tại.

Các vấn đề liên quan