Multikernel, một tiện ích tuyệt vời để chạy nhiều nhân hệ điều hành mà không cần ảo hóa.

Những điểm chính:
  • Linux đa nhân cho phép chạy đồng thời các nhân độc lập trên phần cứng vật lý.
  • Dựa trên nhân Linux 7.0, nó sử dụng CONFIG_MULTIKERNEL và hiện hỗ trợ kiến ​​trúc x86_64.
  • Nó loại bỏ chi phí phát sinh của ảo hóa (máy chủ ảo KVM), giúp chuyển đổi ngữ cảnh nhanh hơn 2,5 lần.
  • Khác với container, các instance không dùng chung nhân hệ điều hành, giúp ngăn ngừa các lỗi hoặc lỗ hổng bảo mật ảnh hưởng đến toàn bộ máy chủ.
  • Sử dụng công cụ Kerf cùng với các mô-đun Lazy CMA và DAXFS để quản lý tài nguyên một cách linh hoạt và khởi động ảnh Docker.

Linux đa nhân

Năm ngoái, chúng ta đã thảo luận trên blog này về đề xuất của ByteDance (nhà sáng tạo TikTok) về một tiện ích có tên Parker (PARTitioned KERnel), một công nghệ thử nghiệm cho phép nhiều nhân Linux chạy đồng thời. Và giờ đây, hơn một năm rưỡi sau, một tiện ích công khai mới từ dự án, "Multikernel Linux (mklinux-v7.0-mk2)", đã được phát hành.

Sự phát triển này giới thiệu một biến thể chuyên biệt của nhân Linux cho phép thực thi đồng thời nhiều phiên bản nhân độc lập trong một máy chủ vật lý duy nhất. Bằng cách hoạt động trực tiếp trên phần cứng, công nghệ này loại bỏ hoàn toàn nhu cầu về các lớp ảo hóa hoặc hypervisor, cấp cho mỗi phiên bản quyền truy cập trực tiếp vào bộ nhớ, CPU và các thiết bị được phân bổ.

ByteDance-Parker-đa nhân
Bài viết liên quan:
Parker: Công nghệ mới cho phép chạy nhiều nhân Linux mà không cần ảo hóa

Dựa trên nhân Linux 7.0 mới được phát hành gần đây, dự án cho phép kích hoạt tính năng này thông qua tham số cấu hình CONFIG_MULTIKERNEL . Nếu tùy chọn này bị vô hiệu hóa, nhân kết quả sẽ hoàn toàn giống nhau và hoạt động như Linux 7.0 tiêu chuẩn. Hiện tại, phiên bản đầu tiên này (v7.0-mk2) chỉ hỗ trợ kiến ​​trúc x86_64 và được thiết kế để thu hẹp khoảng cách về hiệu năng và bảo mật giữa ảo hóa truyền thống và cách ly container.

Sự cô lập mà không ảnh hưởng đến hiệu năng

Vấn đề lớn nhất của ảo hóa là "chi phí" hiệu năng do các hypervisor tính phí. Ngược lại, Multikernel Linux loại bỏ các chuyển đổi thoát khỏi máy ảo , dịch bộ nhớ cấp hai và chi phí phát sinh từ các mô hình thiết bị.

Theo dữ liệu hiệu năng được công bố sau khi thử nghiệm trên bộ xử lý Xeon Gold 5418Y (Sapphire Rapids), hệ thống đa nhân cho thấy tốc độ thực thi tăng đáng kể so với các máy ảo KVM. Ví dụ, việc chuyển đổi ngữ cảnh giữa các tiến trình nhanh hơn 2,5 lần, độ trễ đường ống giảm hơn một nửa (2,18 lần), và các lệnh gọi hệ thống cơ bản, chẳng hạn như các thao tác đọc và ghi, có thời gian phản hồi nhanh hơn hơn 25%.

So với các container Docker truyền thống, Multikernel cung cấp khả năng bảo vệ vượt trội hơn vì các container chia sẻ cùng một nhân hệ điều hành của máy chủ, do đó, lỗ hổng bảo mật cấp nhân, lỗi hệ thống (panic) hoặc tình trạng quá tải khóa nội bộ sẽ ảnh hưởng đến tất cả các người dùng. Trong hệ sinh thái Multikernel, mỗi môi trường có nhân hệ điều hành độc lập riêng ; nghĩa là, nếu một phiên bản gặp sự cố nghiêm trọng, các phiên bản khác vẫn tiếp tục hoạt động bình thường, đảm bảo một môi trường biệt lập lý tưởng để chạy mọi thứ từ máy chủ web đến các tác vụ huấn luyện AI chuyên sâu (học máy) trên cùng một phần cứng.

Phân công và điều phối động với Kerf

Hệ điều hành Linux đa nhân hoạt động bằng cách sử dụng một nhân máy chủ quản lý một lượng lớn tài nguyên (CPU, RAM và thiết bị PCI). Sử dụng cấu trúc cây thiết bị hiện có (có thể truy cập tại /sys/fs/multikernel/), nhân phân chia nhóm tài nguyên này và khởi chạy các "nhân con" thông qua hệ thống con kexec_file_load() gốc. Nhờ khả năng cắm nóng của Linux, các tài nguyên này có thể được di chuyển linh hoạt giữa các phiên bản mà không cần khởi động lại máy chủ, đảm bảo hiệu năng có thể dự đoán và điều chỉnh theo thời gian thực.

Để điều phối hệ sinh thái này, các nhà phát triển đã giới thiệu công cụ dòng lệnh Kerf . Tiện ích này quản lý toàn bộ vòng đời của các phiên bản, dựa trên các mô-đun mã nguồn mở bổ sung. Một trong số đó là Lazy CMA, phân bổ bộ nhớ vật lý liền kề trong thời gian chạy mà không yêu cầu bất kỳ cấu hình trước khi khởi động nào.

Trụ cột còn lại là DAXFS, một mô-đun cho phép các phiên bản chia sẻ hệ thống tệp trực tiếp trong bộ nhớ; nhờ đó, Kerf có thể khởi động một nhân con trực tiếp bên trong ảnh container Docker, tận dụng hệ thống tệp của nó mà không cần đến các lớp mô phỏng và sử dụng các mô tả trong bộ nhớ để kết nối mạng mà không cần sao chép dữ liệu.

Điều đáng chú ý là phiên bản phát hành đầu tiên này đã vượt qua các bài kiểm tra độ ổn định chuyên sâu dưới kiến ​​trúc phân trang 5 cấp và KASLR hoạt động, chứng minh rằng việc khôi phục tài nguyên hoàn toàn an toàn ngay cả khi nhân con gặp sự cố.

Bằng cách cho phép phân chia các khối lượng công việc xung đột do khóa hệ thống (chẳng hạn như một số lượng lớn các tiến trình hủy liên kết hoặc đổi tên trên cùng một bộ nhớ cache) thành các nhân riêng biệt phù hợp với các socket bộ xử lý vật lý, Multikernel Linux chứng minh khả năng mở rộng vượt qua rào cản hiệu năng do một nhân đơn khối đặt ra, mở ra một kỷ nguyên mới trong việc hợp nhất máy chủ và điện toán đám mây hiệu năng cao.

Cuối cùng, nếu bạn muốn tìm hiểu thêm, bạn có thể xem chi tiết tại liên kết sau.


Thêm vào danh sách nguồn ưu tiên trên Google.