gpt4 book ai didi

linux - Linux下进程间最低延迟通知方法

转载 作者:IT王子 更新时间:2023-10-29 00:26:39 24 4
gpt4 key购买 nike

我正在寻找最低的延迟 IPC,它允许让一个进程休眠并允许其他进程唤醒它。

我正在寻找延迟时间最低的方法。目前一些可能的方法:

  1. 将一个字节写入管道并从中读取。
  2. 将一个字节写入套接字并从中读取。
  3. 发送一个信号(kill)并等待它(sigwait)
  4. 使用 sem_post/sem_wait

还有其他更好的想法吗?

任何特定于 Linux 的解决方案也都可以。

最佳答案

一般...操作系统方法之间几乎没有区别。

设置:

  1. 两个进程与两个不同的 CPU 有关联。
  2. 一个进程休眠 (nanosleep) N 微秒测量当前时间 然后通知其他进程。
  3. 其他进程唤醒测量当前时间并将其与客户端时间进行比较。
  4. 平均数、标准差、中位数和百分位数 95 是在 100 条通知预热后对 1000 个样本计算得出的。
  5. 操作系统:Linux 2.6.35 x86_64
  6. 中央处理器:英特尔 i5 M460

结果:

信号量(sem_wait/sem_post - 内核 - futex):

sleep us     mean             median      %95
1 4.98 ±18.7 3.78 5.04
10 4.14 ±14.8 3.54 4.00
100 20.60 ±29.4 22.96 26.96
1000 49.42 ±37.6 30.62 78.75
10000 63.20 ±22.0 68.38 84.38

信号(kill/sigwait)

sleep us     mean             median      %95
1 4.69 ±3.8 4.21 5.39
10 5.91 ±14.8 4.19 7.45
100 23.90 ±17.7 23.41 35.90
1000 47.38 ±28.0 35.27 81.16
10000 60.80 ±19.9 68.50 82.36

管道(管道+写/读)

sleep us     mean             median      %95
1 3.75 ±5.9 3.46 4.45
10 4.42 ±3.5 3.84 5.18
100 23.32 ±25.6 24.17 38.05
1000 51.17 ±35.3 46.34 74.75
10000 64.69 ±31.0 67.95 86.80

套接字(套接字对+写/读)

sleep us     mean             median      %95
1 6.07 ±3.2 5.55 6.78
10 7.00 ±7.1 5.51 8.50
100 27.57 ±14.1 28.39 50.86
1000 56.75 ±25.7 50.82 88.74
10000 73.89 ±16.8 77.54 88.46

作为忙等待的引用:

sleep us     mean             median      %95
1 0.17 ±0.5 0.13 0.23
10 0.15 ±0.3 0.13 0.19
100 0.17 ±0.3 0.16 0.21
1000 0.22 ±0.1 0.18 0.35
10000 0.38 ±0.3 0.30 0.78

关于linux - Linux下进程间最低延迟通知方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7979164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com