Tôi có kernel 2.6,35 PREEMPT chạy trên bộ xử lý ARMv7 tốc độ trung bình. Cứ sau khoảng 100 - 125 giây, một cái gì đó khiến kernel không thể xử lý một số trình điều khiển liên quan đến âm thanh đủ nhanh để tránh bị lép. Việc giữ máy thường trong khoảng 15-30ms, nhưng có thể lâu hơn rất nhiều. Không rõ liệu việc giữ lại hoàn toàn trong kernel hay có thể liên quan đến việc lập lịch trình cho quá trình người dùng đang chạy với mức độ ưu tiên theo thời gian thực (SCHED_RR, 2).
Tôi đoán là có một (ít nhất một) tài xế không chơi đẹp với sự ưu tiên.
Một số đầu ra bước từ quá trình người dùng minh họa một số khía cạnh của cả hành vi bình thường và bất thường, mặc dù tôi không chắc chắn làm thế nào để giải thích các báo cáo thời gian khác nhau?
Trường hợp bình thường:
Thăm dò 0,000518 ([{fd = 10, sự kiện = POLLIN | POLLERR | POLLNVAL, revents = POLLIN}], 1, 3415) = 1 Thăm dò ý kiến 0,010202 ([{fd = 10, event = POLLIN | POLLERR | POLLNVAL}, {fd = 6, event = POLLOUT | POLLERR | POLLNVAL, revents = POLLOUT}], 2, 3404) = 1 Thăm dò 0,000585 ([{fd = 10, event = POLLIN | POLLERR | POLLNVAL}, {fd = 6, event = POLLOUT | POLLERR | POLLNVAL, revents = POLLOUT}], 2, 3404) = 1 Thăm dò ý kiến 0.000302 ([{fd = 10, sự kiện = POLLIN | POLLERR | POLLNVAL, revents = POLLIN}], 1, 3404) = 1 Thăm dò ý kiến 0,010706 ([{fd = 10, event = POLLIN | POLLERR | POLLNVAL}, {fd = 6, event = POLLOUT | POLLERR | POLLNVAL, revents = POLLOUT}], 2, 3393) = 1 Thăm dò 0,000480 ([{fd = 10, event = POLLIN | POLLERR | POLLNVAL}, {fd = 6, event = POLLOUT | POLLERR | POLLNVAL, revents = POLLOUT}], 2, 3392) = 1
Không có chặn xảy ra trong cuộc thăm dò cho đầu ra trên fd6 và khi chỉ có fd10 được thăm dò cho đầu vào, một khối khoảng 10ms xảy ra. Điều này được phản ánh cả trong báo cáo về thời lượng của cuộc gọi hệ thống và khoảng thời gian giữa các cuộc gọi hệ thống (chúng là nhất quán).
Trường hợp thất bại (ví dụ cực đoan):
Thăm dò ý kiến 0,000305 ([{fd = 10, sự kiện = POLLIN | POLLERR | POLLNVAL, revents = POLLIN}], 1, 3543) = 1 Cuộc thăm dò 0,010730 ([{fd = 10, event = POLLIN | POLLERR | POLLNVAL}, {fd = 6, event = POLLOUT | POLLERR | POLLNVAL, revents = POLLOUT}], 2, 3533) = 1 Thăm dò ý kiến 0,000485 ([{fd = 10, event = POLLIN | POLLERR | POLLNVAL}, {fd = 6, event = POLLOUT | POLLERR | POLLNVAL, revents = POLLOUT}], 2, 3532) = 1 Thăm dò ý kiến 0,000329 ([{fd = 10, sự kiện = POLLIN | POLLERR | POLLNVAL, revents = POLLIN}], 1, 3532) = 1 Cuộc thăm dò 0,953349 ([{fd = 10, sự kiện = POLLIN | POLLERR | POLLNVAL}, {fd = 6, sự kiện = POLLOUT | POLLERR | POLLNVAL, revents = POLLOUT | POLLERR}], 2, 2578)
Lưu ý trong trường hợp này, mặc dù cuộc gọi cuối cùng thứ hai được ghi là mất 10ms (bình thường), nhưng đó là 953ms trước cuộc gọi cuối cùng.
Tôi có thể sử dụng công cụ nào để truy tìm thủ phạm?