Như vậy đến nay trong phạm vi của chúng ta về bộ nhớ ảo, chúng ta đã giả định rằng tất cả các chính
bộ nhớ được tạo ra bằng nhau, hoặc ít nhất là nó được truy cập như nhau. Trên nhiều
9,6 trận đòn 425
hệ thống máy tính, đó không phải là trường hợp. Thông thường, trong các hệ thống với multipleCPUs
(mục 1.3.2), một truy cập givenCPUcan một số phần của bộ nhớ chính nhanh
hơn nó có thể truy cập vào những người khác. Những sự khác biệt hiệu suất là do cách
CPU và bộ nhớ được kết nối với nhau trong hệ thống. Thông thường, một hệ thống như vậy
được tạo thành từ nhiều bảng hệ thống, mỗi có chứa multipleCPUs và một số
bộ nhớ. Ban hệ thống được kết nối với nhau theo những cách khác nhau, từ
xe buýt hệ thống để kết nối mạng tốc độ cao như InfiniBand. Như bạn có thể
mong đợi, theCPUs trên một bảng cụ thể có thể truy cập vào bộ nhớ trên bo mạch với
độ trễ ít hơn họ có thể truy cập vào bộ nhớ trên các bảng khác trong hệ thống. Hệ thống
, trong đó thời gian truy cập bộ nhớ thay đổi đáng kể được gọi chung là
hệ thống không truy cập bộ nhớ (NUMA), và không có ngoại lệ, họ
là chậm hơn so với các hệ thống trong đó bộ nhớ andCPUsarelocatedonthesame
bo mạch chủ.
Giám mà khung trang được lưu trữ tại địa điểm mà có thể đáng kể
ảnh hưởng đến hiệu suất inNUMAsystems. Nếu chúng tôi xử lý bộ nhớ như thống nhất trong đó
một hệ thống, CPU có thể chờ đợi lâu hơn đáng kể cho việc truy cập bộ nhớ hơn nếu chúng ta
sửa đổi các thuật toán cấp phát bộ nhớ cho tài khoản takeNUMAinto. Tương tự như
thay đổi phải được thực hiện cho các hệ thống lập kế hoạch. Mục đích của những thay đổi này là
để có khung hình cấp phát bộ nhớ "càng gần càng tốt" để theCPUon mà
tiến trình đang chạy. Định nghĩa về "gần gũi" là "với độ trễ tối thiểu",
trong đó thường có nghĩa là trên bảng hệ thống tương tự như theCPU.
Những thay đổi thuật toán bao gồm việc lên lịch theo dõi lastCPU
mà mỗi quá trình chạy. Nếu lịch trình cố gắng để sắp xếp mỗi quá trình lên
previousCPU của nó, và các hệ thống quản lý bộ nhớ cố gắng bố trí khung
cho quá trình gần theCPUon mà nó đang được lên kế hoạch, sau đó cải tiến
hits bộ nhớ cache và giảm bộ nhớ thời gian truy cập sẽ cho kết quả.
Những hình ảnh hơn phức tạp khi bài được thêm vào. Ví dụ, một
quá trình với nhiều chủ đề hoạt động có thể kết thúc với những chủ đề dự kiến
trên nhiều bảng hệ thống khác nhau. Làm thế nào là bộ nhớ được phân bổ trong này
trường hợp? Solaris giải quyết vấn đề bằng cách creatinglgroups (cho "nhóm độ trễ") trong
hạt nhân. Mỗi lgroup tập hợp lại với nhau closeCPUs và bộ nhớ. Trong thực tế, có
một hệ thống phân cấp của lgroups dựa vào lượng thời gian trễ giữa các nhóm.
Solaris cố gắng để sắp xếp tất cả các chủ đề của một quá trình và phân bổ tất cả bộ nhớ của một
quá trình trong vòng một lgroup. Nếu điều đó là không thể, nó chọn lgroups gần đó cho
phần còn lại của các nguồn lực cần thiết. Điều này thực tế giảm thiểu độ trễ bộ nhớ tổng thể
và tỷ lệ hit maximizesCPUcache.
đang được dịch, vui lòng đợi..