我正在寻找最低的延迟 IPC,它允许将一个进程休眠,而允许其他进程唤醒它。
我在找最低延迟的方法。迄今为止,一些可能的方法:
(sigwait)
还有其他更好的主意吗?
任何特定于Linux的解决方案都可以。
发布于 2011-11-05 14:28:15
一般来说..。操作系统方法之间几乎没有区别。
设置:
与两个不同CPU密切相关的
Linux2.6.35 x86_64h 111/code>CPU上预热1K样本后,计算
平均值、标准差、中位数和百分位数95 : Intel i5 M 460h 212g 213结果:
信号量(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信号(杀死/等待)
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发布于 2019-11-29 01:57:49
使用@Artyom提供的相同代码,但在更现代的硬件中使用。
CPU:i9-9900k,关闭C/S/P状态,并将缩放策略设置为performance,使核心保持最大频率(~5 5GHz)。
OS:Preempt用内核5.0.21修补Linux,提供了更好的实时性能。
CPU亲和力:两个进程()单独运行在两个独立的核心中,它们远离无关的进程并中断AMSP。
结果:
信号量(sem_wait/sem_post内核- futex):
sleep us mean minimum median %99
1 1.75 ±0.1 1.60 1.74 1.82
10 1.76 ±0.0 1.61 1.75 1.83
100 2.12 ±0.3 1.59 2.24 2.42
1000 2.46 ±0.3 1.75 2.47 2.56
10000 2.45 ±0.1 2.11 2.44 2.54信号(杀死/等待)
sleep us mean minimum median %99
1 2.15 ±0.2 2.00 2.13 2.22
10 2.12 ±0.2 1.93 2.11 2.19
100 2.56 ±0.3 2.00 2.67 2.88
1000 2.90 ±0.3 2.17 2.90 3.01
10000 2.94 ±0.5 2.66 2.89 3.03管道(管道+写/读)
sleep us mean minimum median %99
1 2.05 ±0.2 1.88 2.03 2.15
10 2.06 ±0.3 1.89 2.04 2.17
100 2.54 ±0.4 1.88 2.63 2.87
1000 2.98 ±0.3 2.27 2.98 3.09
10000 2.98 ±0.3 2.69 2.96 3.07套接字(套接字对+写/读)
sleep us mean minimum median %99
1 3.11 ±0.4 2.85 3.09 3.22
10 3.14 ±0.1 2.92 3.14 3.25
100 3.66 ±0.5 2.92 3.74 4.01
1000 4.03 ±0.4 3.28 4.03 4.17
10000 3.99 ±0.4 3.64 3.96 4.10作为参考,忙着等待:
sleep us mean minimum median %99
1 0.07 ±0.1 0.06 0.07 0.07
10 0.07 ±0.1 0.06 0.07 0.07
100 0.07 ±0.0 0.06 0.07 0.08
1000 0.09 ±0.1 0.07 0.08 0.09
10000 0.09 ±0.1 0.07 0.09 0.09https://stackoverflow.com/questions/7979164
复制相似问题