Họ đề xuất một bộ điều khiển bộ nhớ mới cho nhân Linux

Nền tảng Linux

Trình quản lý bộ nhớ là một tập hợp con của hệ thống điều hành Nó chia sẻ bộ nhớ giữa hệ điều hành và các ứng dụng khác nhau. Thuật ngữ bộ nhớ chủ yếu đề cập đến bộ nhớ chính (RAM), nhưng việc quản lý nó đòi hỏi sự đóng góp của bộ nhớ phụ và bộ nhớ đệm.

Trình quản lý bộ nhớ đặc biệt chịu trách nhiệm phân bổ bộ nhớ hiệu quả cho các quy trình, có nghĩa là bạn phải có khả năng liệt kê các vị trí trống của bộ nhớ khả dụng, cấp phát bộ nhớ cần thiết cho các quy trình mới và lấy lại bộ nhớ từ các quy trình kết thúc. Bộ điều phối quá trình trong nhân Linux là bộ điều phối SLAB.

PHIẾN dựa trên một khối và hệ thống bộ nhớ cache để tối ưu hóa các yêu cầu bộ nhớ. Kiểu quản lý bộ nhớ này làm giảm sự phân mảnh gây ra bởi các hoạt động cấp phát và di dời.

Cấp phát khối liên quan đến việc triển khai một bộ đệm cho một loại / kích thước đối tượng nhất định có một số khối bộ nhớ được cấp phát trước được cắt thành các phần có kích thước cố định phù hợp với các đối tượng cụ thể.

SLAB quản lý các phần để khi hạt nhân được yêu cầu cấp phát bộ nhớ cho một đối tượng, Bạn có thể đáp ứng yêu cầu đó với một bộ phận dự phòng từ một khối hiện có. SLAB giữ lại bộ nhớ được cấp phát để sử dụng lại khi phân bổ tiếp theo các đối tượng tương tự, và do đó giảm chi phí chung liên quan đến việc khởi tạo đối tượng.

Họ dự định thay thế SLAB

La Mã Gushchin, Một thành viên của nhóm kỹ thuật nhân Linux tại Facebook, anh đã phát hiện ra thứ mà anh coi là "lỗ hổng nghiêm trọng" trong trình quản lý / bộ điều khiển bộ nhớ hiện tại. Và rgần đây đã đề xuất một bộ điều khiển bộ nhớ mới khối hứa hẹn cải thiện đáng kể việc sử dụng bộ nhớ giữa nhiều "nhóm" (hoặc các nhóm điều khiển) từ bộ nhớ.

Do đó, điều quan trọng cần lưu ý là cgroups đề cập đến một tính năng của hạt nhân Linux cho phép giới hạn, đếm và cô lập việc sử dụng tài nguyên của hệ thống (bộ xử lý, bộ nhớ, sử dụng đĩa, v.v.) và thuật ngữ "trang của phiến» có thể được SLAB đồng hóa với quá trình cấp phát bộ nhớ.

Theo Gushchin:

“Lý do thực sự mà thiết kế hiện tại dẫn đến việc sử dụng SLAB thấp rất đơn giản: Các trang Slab được sử dụng riêng bởi một nhóm bộ nhớ duy nhất.

Nếu chỉ có một số phân bổ có kích thước nhất định được thực hiện bởi cgroup hoặc nếu có một số đối tượng hoạt động còn lại sau khi cgroup đã bị xóa hoặc nếu cgroup chứa một ứng dụng luồng đơn lẻ hầu như không cấp phát hạt nhân nào, nhưng luôn làm như vậy trong CPU mới: Trong tất cả các trường hợp này, việc sử dụng SLAB dẫn đến rất thấp.

Nếu tính toán kmem bị tắt, hạt nhân có thể sử dụng không gian trống trên các trang xếp chồng cho các phân bổ khác «.

Gushchin lập luận rằng đây không phải là vấn đề khi trình điều khiển kmem được giới thiệu như một tính năng tùy chọn phải được kích hoạt cho mỗi nhóm bộ nhớ.

Tuy nhiên bây giờ, trình điều khiển kmem được bật theo mặc định cho cgroup v1 và v2. Và vì các hệ thống hiện đại có xu hướng tạo ra một số lượng lớn các nhóm c, việc sử dụng SLAB sẽ kém hiệu quả hơn.

Theo ông, bằng cách chia sẻ các trang phiến giữa các nhóm bộ nhớ khác nhau và bằng cách sử dụng một hệ thống được làm lại trong đó việc hạch toán được thực hiện theo đối tượng thay vì theo trang, người ta sẽ có trong nhân linux một bộ điều khiển bộ nhớ được tối ưu hóa mang lại mức độ sử dụng hiệu quả hơn nhiều.

Bản vá do Gushchin đề xuất chứa hai yếu tố bán độc lập: API tải trang con có thể được sử dụng trong tương lai cho mục đích kế toán và API mem_cgroup_ptr.

Các thử nghiệm được thực hiện với bộ điều khiển mới ký ức về Gushchin đã chỉ ra rằng có thể có thêm từ 35% đến 42% bộ nhớ trong Linux trên web front-end, máy chủ DNS và bộ đệm cơ sở dữ liệu, và nhiều khối lượng công việc khác.

Đề xuất của Gushchin hiện đang được đặt dưới biểu ngữ "yêu cầu bình luận." Nếu được chấp nhận, nó có thể được tích hợp vào phiên bản hạt nhân Linux 2020.

Fuente: https://lkml.org/


Để lại bình luận của bạn

địa chỉ email của bạn sẽ không được công bố. Các trường bắt buộc được đánh dấu bằng *

*

*

  1. Chịu trách nhiệm về dữ liệu: AB Internet Networks 2008 SL
  2. Mục đích của dữ liệu: Kiểm soát SPAM, quản lý bình luận.
  3. Hợp pháp: Sự đồng ý của bạn
  4. Truyền thông dữ liệu: Dữ liệu sẽ không được thông báo cho các bên thứ ba trừ khi có nghĩa vụ pháp lý.
  5. Lưu trữ dữ liệu: Cơ sở dữ liệu do Occentus Networks (EU) lưu trữ
  6. Quyền: Bất cứ lúc nào bạn có thể giới hạn, khôi phục và xóa thông tin của mình.