ZBLOG

15.1.2. Large Data with configuration options As it has been observed in Large Data Mode, LARGE_DATA builtin transports option offers an easy and efficient way to improve performance when working with large data. Nonetheless, custom configuration...

15.1.2. Large Data with Configuration Options

在大数据模式下,LARGE_DATA 内置传输选项提供了一种简单而有效的方式来提高处理大数据时的性能。然而,自定义配置可以进一步增强性能。

Fast DDS 提供了调整内置传输行为的配置选项。当使用 LARGE_DATA 模式时,这些选项尤其重要,因为它允许将最大消息大小增加到超过 65500 KB,并防止碎片化,从而利用 TCP 和 SHM 传输。

所有内置传输都可以通过调整以下参数进行配置:

  • max_msg_size: 可以通过该传输发送的最大消息大小。发送超过此大小的消息将导致碎片化。其最大值为 TCP 和 SHM 的 (2^32)-1 B,而 UDP 为 65500 KB。

  • sockets_size: 发送和接收套接字缓冲区的大小。此值必须大于或等于 max_msg_size,以获得有效配置。它还定义了共享内存段的大小,该大小计算为设置值的两倍。其最大值为 (2^32)-1 B。

  • non_blocking: 如果设置为 true,传输将使用非阻塞套接字。这对于避免当套接字缓冲区已满时阻塞应用程序非常有用。然而,一些消息可能会丢失。默认值为 false。

  • tcp_negotiation_timeout: 指定逻辑端口协商的超时时间长度。该参数用于确保在数据传输之前逻辑端口可用,从而防止在协商过程中丢失消息。相反,它可能会延迟发现过程。默认值为 0,意味着尽快进行发现,但如果可靠性设置为 BEST_EFFORT_RELIABILITY_QOS,则初始消息可能会丢失。该参数仅在 LARGE_DATA 模式下有效。

调整最大消息大小和套接字缓冲区大小到足够大的值以容纳要发送的数据,可以帮助提高大消息的性能,同时将传输设置为非阻塞模式。

通过这种方式,可以利用 TCP 传输来避免碎片化,并使用非阻塞模式以避免当套接字缓冲区满时阻塞应用程序。例如,在流媒体视频时,这将显著提高流畅性。

请注意,即使在同一台机器上使用 LARGE_DATA 模式,配置选项也可以证明对改善性能是有用的,因为它们会影响 SHM 传输。因此,强烈建议设置一个足够大的共享内存段,以容纳要发送的数据。为了实现这一点,sockets_size 参数必须至少设置为消息大小的一半。

以下代码片段展示了如何配置 LARGE_DATA 模式:

环境变量示例

  1. export FASTDDS_BUILTIN_TRANSPORTS=LARGE_DATA?max_msg_size=1MB&sockets_size=1MB&non_blocking=true&tcp_negotiation_timeout=50

注意事项

要了解如何检查和修改默认系统中套接字缓冲区大小的最大值,请参考查找系统最大值。

警告

将 max_msg_size 值设定高于 65500 KB 且使用 DEFAULT 或 UDP 模式,将导致错误并使参与者创建失败。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=21817

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?