网上查了下,windows 和 linux 的硬中断响应时间大概在几十微妙之间,但无法得到准确的答案,目前想记录硬件的数据,响应时间在几百毫秒之内都能接受,有必要上 rtos 吗?有没有搞过这方面的给个意见
1
GeekGao 2023-12-26 18:23:14 +08:00
Linux 的硬中断响应时间并没有一个固定的值,因为这个时间取决于许多因素,包括硬件速度、操作系统设计、以及运行的其他任务
“响应时间在几百毫秒之内都能接受” 那最近 3 年的 Linux 内核支持 threaded irq 了,感觉是可以胜任的 而采用 RTOS 增加复杂性了,需要学习… |
2
GeekGao 2023-12-26 18:30:57 +08:00
补:threaded irq 在 10 多年前 2.6.25 就支持了
|
3
LGA1150 2023-12-26 19:26:02 +08:00
perf bench syscall all
用系统调用的延迟可以近似出硬中断的延迟 |
4
GeruzoniAnsasu 2023-12-26 21:13:46 +08:00
几百毫秒,完全没有必要。用户空间的高精度定时器都能轻松达到 1ms 的精度,用 RDTSC 之类的指令手搓也能完全控制到 10us 级的精度。 不知道你是要怎样记录何种硬件数据,假如 gpio 之类的,像树莓派甚至 sleep 然后 read sysfs 都够了。
|
5
tap91624 2023-12-26 21:16:54 +08:00
考虑打个 real time 的 linux 补丁包?
|
6
kuanat 2023-12-27 00:11:28 +08:00
这个事情优先看 jitter 容忍阈值,其次才是 latency 。如果几百毫秒延迟可以接受的话,我估计 RT-Preempt 内核是可以做到的。RH 系还有 Ubuntu 都有相应的发行版,只是都是收费的。
音频相关对实时性要求比较高,一般现场回放延迟容忍大概在 20ms 以内,如果是舞台耳返的话,大概是 5~10 毫秒左右。目前还是很难用 linux RT 做实时效果合成的。 我印象 x86 RT 大概 99% 的话可以做到 30ms 上下,这个要看具体硬件情况。 |
7
DataSheep 2023-12-27 09:15:30 +08:00
@kuanat 像 4 楼说的,几百毫秒啥系统都没问题,用不着上实时补丁。30ms 都称不上 RT ,单位写错了吧,us 差不多。
|
8
yolee599 2023-12-27 09:44:23 +08:00
低于 1ms 的定时才算实时,高于这个值的随便一个系统都能精确实现
|
9
Befehishaber OP @DataSheep 是的 打错了 需要 1 毫秒以内
|
10
Befehishaber OP @GeekGao 不好意思 打错了 是需要在毫秒以内。是不是必须上 rtos 才能满足呢
|
11
GeekGao 2023-12-27 16:04:17 +08:00
@Befehishaber 那就上 RTOS 吧
|