Facebook phát hành các bản vá cải thiện bộ điều khiển bộ nhớ Slab trong Linux

Roman Gushchin (một kỹ sư phần mềm của Facebook) đăng ký trong danh sách phát triển nhân Linux, một tập hợp các bản vá cho ứng dụng ánh xạ bộ nhớ bộ điều khiển phiến (một bộ điều khiển bộ nhớ).

Bộ điều khiển mới rất đáng chú ý bằng cách di chuyển tính toán phiến từ cấp độ trang bộ nhớ sang cấp đối tượng nhân, điều này giúp có thể chia sẻ các trang phiến trên các nhóm khác nhau c, thay vì phân bổ các bộ đệm phiến riêng biệt cho từng nhóm c.

Roman phát hiện ra cái mà anh ta gọi là "một lỗ hổng rất nghiêm trọng" trong bộ điều khiển bộ nhớ phiến hiện có dẫn đến hiệu suất sử dụng thấp ngày nay với các nhóm.

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

Nếu chỉ có một vài 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ị loại bỏ, hoặc cgroup chứa một ứng dụng luồng đơn lẻ hầu như không cấp phát bất kỳ đối tượng hạt nhân nào, nhưng mọi lúc trên một CPU mới: trong tất cả những trường hợp này, hiệu suất sử dụng phiến kết quả là rất thấp.

Nếu tính năng kế toán kmem bị vô hiệu hóa, hạt nhân có thể sử dụng không gian trống trên các trang phiến cho các phân bổ khác. «

Bộ điều khiển bộ nhớ Slab được đề xuất của Romano Gushchin trong năm qua khá hứa hẹn khi tăng hiệu quả về việc sử dụng tấm, giảm dung lượng bộ nhớ được sử dụng cho phiến từ 30-45% và giảm đáng kể tổng mức tiêu thụ bộ nhớ nhân.

Ngoài ra các bản vá được triển khai đã chỉ ra rằng Facebook đã sử dụng mã trong quá trình sản xuất trên máy chủ của họ và tiết kiệm ~ 650-700MB + cho máy chủ web front-end, bộ nhớ đệm cơ sở dữ liệu và máy chủ DNS, trong số các giải thưởng khác.

Bằng cách giảm số lượng phiến không di động, một tác động tích cực cũng được quan sát thấy trong lĩnh vực giảm phân mảnh bộ nhớ. Bộ điều khiển bộ nhớ mới đơn giản hóa đáng kể mã cho bảng kế toán và không yêu cầu các thuật toán phức tạp để tạo động và xóa bộ đệm phiến cho mỗi nhóm c.

Tất cả các cgroup cho bộ nhớ trong quá trình triển khai mới đều sử dụng một tập hợp chung các bộ đệm bản và tuổi thọ của bộ nhớ đệm bản không còn bị ràng buộc với tuổi thọ của các ràng buộc bộ nhớ được đặt thông qua cgroup.

Việc hạch toán tài nguyên chính xác hơn được triển khai trong bộ điều khiển phiến mới về mặt lý thuyết sẽ tải CPU nhiều hơn, nhưng trên thực tế, sự khác biệt hóa ra là không đáng kể.

Đặc biệt, trình điều khiển phiến mới đã được sử dụng trong vài tháng trên máy chủ Facebook trong hoạt động xử lý các loại tải khác nhau, và cho đến nay không phát hiện thấy sự hồi quy đáng kể nào.

Bản vá chứa một số bộ phận bán độc lập, cũng có thể tìm thấy việc sử dụng chúng bên ngoài bộ điều khiển bộ nhớ của phiến:

  • API tải trang con, có thể được sử dụng trong tương lai để đếm các đối tượng khác không phải là kích thước của trang, ví dụ: phân bổ percpu
  • API mem_cgroup_ptr, nơi các con trỏ được đếm đến một bản ghi nhớ, có thể được sử dụng lại để tạo lại hiệu quả cho các đối tượng khác, ví dụ: pagecache.

Đồng thời giảm đáng kể mức tiêu thụ bộ nhớ- Trên một số máy chủ, có thể tiết kiệm đến 1 GB bộ nhớ, nhưng chỉ báo này phần lớn phụ thuộc vào bản chất của tải, tổng dung lượng RAM, dung lượng CPU và đặc điểm làm việc với bộ nhớ.

Thay vì tạo một tập kmem_caches riêng biệt cho mỗi cgroup bộ nhớ, hai tập toàn cục được sử dụng: tập hợp gốc cho các phép gán cgroup chưa được đếm và nhóm gốc, và tập hợp thứ hai cho tất cả các phép gán khác. Điều này cho phép đơn giản hóa việc quản lý trọn đời các kmem_caches riêng lẻ.

Cuối cùng, nếu bạn muốn biết bộ 19 bản vá lỗi mới, có thể tìm thấy nó trong danh sách thư nhân.


Hãy là người đầu tiên nhận xét

Để 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: Miguel Ángel Gatón
  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.