Điều gì ngăn cản chủ đề RT của tôi làm việc?


1

Tôi có một số ứng dụng thu thập dữ liệu chạy trên Linux 2.6.37 trên DM8148 với TI Linux. Tôi có hai chủ đề:

  • chuỗi có tên IDE, được lên lịch là SCHED_RR, tiên tri 114 (75), thu thập dữ liệu từ HW FIFO đến 200KiB / s vào bộ đệm vòng 30MiB mỗi 2ms:

    while(1) {
      sleep(ms);
      while(DataInFIFO) {
          CollectToRingBuffer();
          SignalToWriter(); }
    }
    
  • chủ đề WriterIDE, được lên lịch là SCHED_RR, tiên tri 113 (74), ghi bộ đệm vòng này vào ổ đĩa USB.

    while(1) {
      WaitForSignal();
      writeToFileOnDOK();
    }
    

Tôi biết từ các biện pháp của chức năng "write ()" mà đôi khi cách viết USB này có thể "treo" trong khoảng 1,5 và thậm chí 2 giây, cố gắng ghi vào DOK. Nhưng tôi chắc chắn rằng khi tôi giao nhiệm vụ cho người sưu tầm 30MiB, đủ cho 150 giây, mọi thứ sẽ ổn.

Không! Không phải vậy!
Tôi đặt mã đo thời gian. Và những gì tôi thấy là, khi nhà văn bị treo trong một thời gian dài (fe1342ms), thì thời gian nhập chủ đề của bộ sưu tập cũng rất lớn (306ms). Điều này gây ra tràn ngập dữ liệu CTNH và không thống nhất dữ liệu.

Tôi đã kiểm tra mức độ ưu tiên của luồng trong hệ thống (lệnh ps) - không có gì là thời gian thực, ngoại trừ tôi. Tất cả các tác vụ hệ thống được lên lịch là KHÁC (TS trong đầu ra ps), thậm chí cả các luồng USB kernel. Chỉ các nhiệm vụ IRQ là FF, nhưng ngay cả chúng có mức độ ưu tiên thấp hơn.

Tôi không biết phải đi đâu từ đây ... :-(
Làm ơn giúp tôi với!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.