在zeromq中,“ inproc + PAIR”比“ inproc”快吗?

问题描述 投票:0回答:1

在zeromq指南中,存在以下内容:If you use inproc and socket pairs, you are building a tightly-bound application, i.e., one where your threads are structurally interdependent. Do this when low latency is really vital.我非常关心应用程序的延迟。

问题:是否只有“惯性”才使它的延迟时间很短?还是“ inproc + Pair”比“ inproc + Whatever”更快?

zeromq
1个回答
0
投票

毫无诚意将是其中的重要部分。我推测对于inproc传输,与操作系统的交互几乎是最少的。因此,在操作系统开销最小的情况下(消息传输可能仅比memcpy少,并且可能只有一两个信号灯,或类似的信号量),它的速度要尽可能快。

与其他传输方式(ipc,tcp等相比;它们都深入到需要大量工作的操作系统中。例如,ipc(管道)涉及从源缓冲区复制到OS缓冲区,然后从该缓冲区复制回目的地缓冲区,以及从用户到OS执行上下文的所有转换,如果消息是> 4kB长(或任何系统页面大小)。使用inproc传输时,转换就不存在了(信号量可能是一两个),也可能少了一个转换。同样,深入研究tcp堆栈也需要很多可变性。

PAIR对分发模式也具有最小的复杂性和开销。严格来说是一对一,仅此而已。因此,其开销也很低。这就是我对this section in The Guide的阅读,您已经遇到过。 PUB / SUB等的所有操作都在进行中,比一二一通讯所需的更多。

最小的操作系统交互和复杂性相结合,以最小化延迟。在某些平台上,操作系统交互的最少程度也将有助于使延迟保持相当一致。

我对ZeroMQ的内部知识并不了解,但是很有可能在实时操作系统之上的inproc + PAIR在延迟方面具有非常好的一致性。通常,延迟的一致性与延迟的短短一样重要。

© www.soinside.com 2019 - 2024. All rights reserved.