Điểm đến cuối cùng của hỗ trợ preemption thời gian thực trên Linux
- Công việc bổ sung hỗ trợ thời gian thực cho Linux đã bắt đầu từ năm 2004 và hiện đã bước vào giai đoạn hoàn thiện.
- Mục tiêu của preemption thời gian thực là để tiến trình có mức ưu tiên cao nhất có thể chạy với độ trễ tối thiểu; để làm được điều đó, kernel được biến thành có thể bị preempt trong nhiều tình huống nhất có thể.
- Công việc này đã dẫn tới việc viết lại các phần cốt lõi của kernel, đồng thời mang lại lợi ích vượt ra ngoài các trường hợp sử dụng thời gian thực.
Giải quyết vấn đề của printk()
- Hàm
printk() dùng trong kernel để gửi thông điệp tới console hệ thống và log hoạt động theo kiểu đồng bộ, nên sẽ không trả về cho đến khi thông điệp được gửi tới mọi đích đã cấu hình.
- Các nhà phát triển thời gian thực đã chuyển đầu ra của
printk() sang một luồng riêng để biến nó thành bất đồng bộ, nhưng đây chỉ là giải pháp tạm thời.
- Vấn đề
printk() đã được xử lý nghiêm túc từ năm 2018 đang dần được giải quyết thông qua khoảng 300 bản vá, dù vẫn còn một vài vấn đề phức tạp cần xử lý.
Triển vọng tích hợp mã preemption thời gian thực vào mainline
- Bài viết bày tỏ hy vọng rằng phần còn lại của mã preemption thời gian thực sẽ được tích hợp vào mainline trước khi tròn 20 năm vào cuối năm 2024.
- Dù gần đây không có thay đổi nào với mã
printk(), mã handover đã được chỉnh sửa để có thể cập nhật từng console driver một.
- Mã cũng đã được thay đổi để các thông điệp quan trọng được sao chép hoàn toàn vào bộ đệm thông điệp trước khi dòng đầu tiên được in ra, đồng thời ghi thông điệp vào console an toàn trước để tránh hệ thống bị sập do console driver lỗi.
Ý kiến của GN⁺
- Công việc bổ sung hỗ trợ preemption thời gian thực vào kernel Linux gần như đã hoàn tất, và điều này sẽ mang lại lợi ích lớn cho các hệ thống cần xử lý tác vụ thời gian thực.
- Việc biến hàm
printk() thành bất đồng bộ sẽ cải thiện khả năng đáp ứng của hệ thống và đóng vai trò quan trọng trong việc đạt được mục tiêu của preemption thời gian thực.
- Bài viết này cho thấy một bước tiến quan trọng trong phát triển kernel Linux và mang đến nội dung thú vị cho những ai quan tâm tới phát triển kernel.
1 bình luận
Ý kiến trên Hacker News
Ưu điểm của vi nhân QNX
Vấn đề xử lý thời gian thực của Linux
Chức năng ghi log của nhân và các trường hợp sử dụng thực tế
Khả năng thay thế của các tổ hợp phần cứng/phần mềm thời gian thực
Phân biệt ứng dụng thời gian thực "cứng" và "mềm"
Xử lý thời gian thực của nhân Linux và giới hạn của phần cứng
Vấn đề của ghi log đồng bộ
Cách bảo đảm khả năng phản hồi của một tiến trình cụ thể
Tính năng chiếm quyền thời gian thực của Linux và kinh nghiệm trong quá khứ
Ảnh hưởng tới người dùng phổ thông