首页 > 解决方案 > 为什么 Linux“系统”线程阻止我的 RT 线程工作?

问题描述

我有一些数据采集应用程序在带有 TI Linux 的 DM8148 上的 Linux 2.6.37 下运行。我有两个线程:

我从write()功能测量中知道,有时这种 USB 写入可能会“挂起”大约 1.5 甚至 2 秒,试图写入 DOK。但我确信,当我给收集器任务 30MiB,足够 150 秒时,一切都会好起来的。

不!它不是!
我把时间测量代码。我看到的是,当 writer 长时间挂起(fe1342ms)时,进入收集器线程的时间也非常大(306ms)。这会导致硬件 FIFO 溢出和数据不一致。

我检查了系统中线程优先级的分布(ps 命令)——没有什么是实时的,除了我。所有系统任务都安排为 OTHER(ps 输出中的 TS),甚至内核 USB 线程。只有 IRQ 任务是 FF,但即使它们的优先级也较低。

我不知道从这里去哪里...... :-(

标签: multithreadingiolinux-kernelreal-timethread-priority

解决方案


推荐阅读