gpt4 book ai didi

network-programming - Aeron 可以处理的最大消息是什么?

转载 作者:行者123 更新时间:2023-12-04 19:03:09 25 4
gpt4 key购买 nike

最大消息的大小是多少 real-logic's Aeron可以处理吗?

我意识到 Aeron 擅长处理小消息,但是我希望在我们的堆栈中使用单一协议(protocol),并且我们的一些消息很容易达到 100Mb 的大小。

文档不清楚哪些设置会影响此问题的答案。我担心的是默认缓冲区设置不允许这种大小的消息。还是缓冲区设置对最大应用程序消息大小没有影响?

最佳答案

我们在最近与 Aeron 的主要贡献者 Martin Thompson 的一次 session 上讨论了这个问题。

不仅不能超过页面大小,如果你看看Aeron presentation slides 52 到 54,这些是不推送大文件的主要原因:

  • 如果消息大小接近
    页面大小,这将使 Aeron 重复下一个序列
    页,即严重减速
  • 缓存流失
  • 虚拟机压力

  • 长话短说,如果您使用 IPC,请将您的 100M 消息分成更小的 block ,最多为页面大小的 1/4 减去标题;或 MTU 减去 header 的大小(最大传输单元),如果您通过 UDP 进行。它将提高吞吐量,消除管道堵塞并解决其他问题。 MTU 背后的逻辑是,偶尔 UDP 数据包会丢失,Aeron 会从丢失的数据包开始重新发送所有内容。因此,您希望您的 block 适合单个数据包以提高性能。

    为了获得最佳性能,在您的应用程序级协议(protocol)中,我将创建一个具有文件元数据和长度的第一个数据包,然后接收方在给定长度的 HDD 上创建内存映射文件,并用传入的 block 填充它,其中每个 block 都包括偏移量和文件 ID(如果您想同时推送多个文件)。这样您就可以从 Aeron 缓冲区复制到 mmap 并完全避免垃圾收集。我希望这种文件传输的性能比大多数其他选项更快。

    要回答原始问题:
    在默认设置下,最大消息大小为 16MB 减去 32 字节 header 。
    要更改它,您可以在您的媒体驱动程序上尝试更改 aeron.term.buffer.lengthaeron.term.buffer.max.length系统属性(见 Aeron Configuration Options)。在这里,术语缓冲区对应于文档其他部分中的“页面”,实际上在某些方面类似于操作系统内存页面。而 term.buffer.max.length 配置轮换的缓冲区/页面数。

    关于network-programming - Aeron 可以处理的最大消息是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32243664/

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