linux - 低延迟中断处理(从内核返回到用户空间的预期平均时间是?)

标签 linux linux-kernel real-time linux-device-driver interrupt

我有一个光纤链路,带有专有设备驱动程序。
链接进入 PCIe 卡。在 RHEL 5.2 (2.6.18-128~) 上运行
我已经mmap'ed 卡上的接口(interface)用于设置和 FIFO 访问等,这些读/写需要几微秒才能完成,所以一切都很好。

但是当然不能将其用于中断,所以我必须使用提供的内核模块及其用户空间库接口(interface)。

WaitForInterrupt(); // API lib interface to kernel module
// Interrupt occurs and am returned to my code in user space
time = CurrentTime() - LatchedTime(); // time to get to here

从 WaitForInterrupt() 返回大约需要 70µs。 (引发中断的时间被锁定在固件中,我读到这个正如我上面所说的需要 ~2µs,并将其与固件中的当前时间进行比较)

从中断发生到用户空间 API 中断调用等待方法返回之间的预期访问时间是多少?

网络/其他高速接口(interface)占用?

最佳答案

500 毫秒比用户空间/内核之间的简单切换所花费的时间大 许多 个数量级,但正如有人在评论中提到的,linux 不是实时操作系统,因此不能保证 500 毫秒“hickups” "不会偶尔出现。

很难说出罪魁祸首是什么,设备驱动程序可能只是试图捆绑数据以提高效率。

也就是说,我们在使用一些自定义卡以及与 APIC 和 ACPI 交互时遇到了无穷无尽的麻烦,需要在 bios 设置、什么卡插入哪个 PCI 插槽以及特定视频卡是否搞砸了一切之间进行微妙的平衡——可能一个可疑的驱动程序与或多或少有问题的 bios/视频卡交互的原因..

关于linux - 低延迟中断处理(从内核返回到用户空间的预期平均时间是?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3743170/

相关文章:

linux - 如果第一个是 '/opt/lampp/lampp start',rc.local 不运行第二个脚本

ios - 从 Raspberry Pi 到 iPhone 的实时数据

Java-Android-IF语句中的进程时间(实时代码)

linux-kernel - 处理器流水线状态保存

linux cpuset 不工作

linux - 似乎无法在 linux 上安装 id3v2,似乎没有任何错误

linux - 如何使用shell脚本将文件从windows复制到linux?

PHP JSON。令人困惑的问题

c - 了解 file_operations 的 loff_t *offp

memory-management - Linux内核如何找到脏页来刷新?