Tôi đang thử nghiệm với SCHED_FIFO
và tôi thấy một số hành vi không mong muốn. Máy chủ tôi đang sử dụng có 12 lõi bị tắt siêu phân luồng. Tất cả các ngắt có thể cấu hình đã được cài đặt để chạy trên CPU 0.Sử dụng thực tế các ưu tiên lập lịch trình thời gian thực của Linux (SCHED_FIFO và SCHED_RR)?
Chương trình của tôi bắt đầu tạo một luồng cho các tác vụ ưu tiên thấp hơn bằng thư viện pthreads mà không thay đổi chính sách lập lịch biểu. mối quan hệ với lõi 3 và chính sách lập lịch của chính nó là SCHED_FIFO
sử dụng sched_setscheduler()
với pid 0 và ưu tiên 1 và sau đó bắt đầu chạy một vòng lặp không chặn.
Chương trình tự chạy tốt. Tuy nhiên, nếu tôi cố gắng đăng nhập vào máy chủ lần thứ hai trong khi chương trình đang chạy thiết bị đầu cuối không phản hồi cho đến khi tôi dừng chương trình của mình. Nó giống như bộ lập lịch đang cố gắng chạy các quy trình khác trên cùng một lõi như quá trình thời gian thực.
- Tôi đang thiếu gì?
- Trình lên lịch vẫn cố gắng chạy các quy trình khác trên lõi đang chạy quy trình thời gian thực không? Nếu vậy, có cách nào để ngăn chặn điều này không?
- Cài đặt chính sách lập lịch với
sched_setscheduler()
trong phụ huynh có thay đổi hành vi của đứa trẻ đã được tạo trước đó không?
Xin cảm ơn trước.
Cảm ơn Đáp lại. Bạn nói đúng tài liệu nói rằng sched_setscheduler() thiết lập chính sách lập lịch trình cho quá trình và không phải là chủ đề. Tuy nhiên, tôi đã chạy một số thử nghiệm bằng cách sử dụng ps sau khi đọc trả lời này và các chính sách được thiết lập chính xác cho các chủ đề. Điều này nhắc tôi chạy một số kiểm tra thêm. Một trong những vấn đề đáng chú ý nhất là đăng nhập mất một thời gian dài khi chương trình đang chạy. Nó chắc chắn trông giống như phiên bash cho đăng nhập mới ban đầu được thiết lập để CPU chạy quá trình thời gian thực. – digby280