Câu hỏi Làm thế nào để có một quy trình thời gian thực mềm trong quá trình thay đổi tải trọng nền IO một cách mạnh mẽ?


schedtool: PID 32301: PRIO   4, POLICY R: SCHED_RR      , NICE -20, AFFINITY 0xf
ionice: realtime: prio 4

Nhưng âm nhạc đang vấp ngã.

Tải nền là thấp prio (SCHED_IDLEPRIO, nhàn rỗi ionice), nhưng sử dụng rất nhiều bộ nhớ (nhiều hơn là thể chất có sẵn) và làm rất nhiều IO và tính toán.

Latencytop hiển thị khoảng 1500ms cho:

Following symlink
Writing buffer to disk (sync) 
Page fault
Writing a page to disk

cả cho tải trọng bg và cho các quy trình không liên quan. Tải trung bình là 10 và đếm.

Tại sao nó không thể phân bổ, ví dụ, 200MHZ của một trong các lõi và 32M bộ nhớ và không ít hơn một lần mỗi giây cơ hội cho IO cho mplayer để làm cho nó hạnh phúc trong khi tiếp tục tính toán trên nền?

Hoặc: tại sao nó không thể rời khỏi công việc nền và trao đổi yêu nhau nhưng giữ phần còn lại của hệ thống như thể không có tải nền?

Làm thế nào để có quá trình RT và tải Bg nặng đồng thời (không có máy ảo)?


2
2018-03-13 11:21


gốc


bạn đã cố gắng để tăng lớp lập kế hoạch của quá trình nặng io với ionice? Điều gì làm bạn có ý nghĩa bởi "quá trình nền là thấp đẹp"? Giá trị thấp đẹp có mức ưu tiên cao hơn, vì vậy đây có thể không phải là thứ bạn muốn. - matthias krull
Có nghĩa là "cao đẹp" (intuitively mong "cao" là "tốt" và "quan trọng"). Vấn đề chính dường như làm chậm toàn bộ hệ thống từ một quá trình lowprio (mong đợi mức độ ưu tiên thấp => không thể làm chậm ngay cả khi muốn). - Vi.


Các câu trả lời: