Google bắt đầu mở triển khai mô hình luồng M:N

Google gợi ý để đưa vào nhân Linux bộ bản vá đầu tiên với việc triển khai các thành phần cần thiết để đảm bảo hoạt động của mô hình luồng M: N. Sáng kiến ​​​​của Google liên quan đến việc mở API được phát triển sau cánh cửa đóng kín Chuyển sang cho nhân Linux, cung cấp một hệ thống con đa luồng được triển khai trong không gian người dùng sử dụng mô hình luồng M:N. Hệ thống con được Google sử dụng để cung cấp các dịch vụ yêu cầu độ trễ tối thiểu. Lập kế hoạch và quản lý phân phối luồng được thực hiện hoàn toàn trong không gian người dùng, điều này có thể làm giảm đáng kể số lượng chuyển ngữ cảnh bằng cách giảm thiểu việc thực hiện các cuộc gọi hệ thống.

Để đảm bảo hoạt động của hệ thống con này, API SwitchTo đã được triển khai ở cấp nhân Linux, cung cấp ba thao tác cơ bản - chờ, tiếp tục và hoán đổi (chuyển đổi). Để đưa vào nhân, mã cho thao tác FUTEX_SWAP mới được đề xuất, bổ sung FUTEX_WAIT và FUTEX_WAKEvà cung cấp một khung để xây dựng các thư viện không gian người dùng đa luồng. FUTEX_SWAP cũng có thể được sử dụng để truyền thông báo giữa các tác vụ, tương tự như RPC. Ví dụ: hiện tại, để chuyển một tin nhắn giữa các tác vụ, cần có ít nhất bốn lệnh gọi FUTEX_WAIT và FUTEX_WAKE, trong khi sử dụng FUTEX_SWAP sẽ cho phép hoàn thành một thao tác nhanh hơn 5-10 lần.

Google bắt đầu mở triển khai mô hình luồng M:N

Hiện nay, các mô hình dòng chảy 1:1 và N:1 chủ yếu được sử dụng trong thực tế. Mô hình 1:1 được sử dụng trong NPTL (Chủ đề POSIX) và chủ đề Linuxvà ngụ ý ánh xạ trực tiếp luồng không gian người dùng tới luồng (đơn vị lập lịch thực thi) ở cấp hạt nhân. Mô hình N:1 được triển khai trong GNU thứ, đưa lịch trình luồng đến không gian người dùng và cho phép N luồng không gian người dùng liên kết với một luồng duy nhất trong nhân mà không cần nhân biết về luồng người dùng.

Nhược điểm chính của mô hình 1:1 là chi phí lớn cho việc chuyển ngữ cảnh giữa nhân và không gian người dùng. Mô hình N:1 giải quyết vấn đề này, nhưng tạo ra một vấn đề mới - vì một luồng trong nhân là một đơn vị lập lịch thực thi không thể chia cắt, các luồng người dùng được liên kết với một luồng duy nhất trong nhân hệ điều hành không thể mở rộng trên các lõi CPU và bị ràng buộc với một lõi CPU duy nhất.

Mô hình M:N là mô hình kết hợp và giải quyết tất cả các nhược điểm trên bằng cách ánh xạ N luồng không gian người dùng với M luồng nhân, cả hai đều giảm chi phí chuyển ngữ cảnh và thay đổi quy mô trên các lõi CPU. Giá của tùy chọn này là sự phức tạp lớn của việc triển khai bộ lập lịch luồng trong không gian người dùng và nhu cầu về cơ chế phối hợp hành động với bộ lập lịch hạt nhân.

Nguồn: opennet.ru

Thêm một lời nhận xét