GPDB-内核特性-UDP流量控制

news/2024/5/18 14:26:19 标签: udp, 网络, tcp/ip, 网络协议, java

GPDB-内核特性-UDP流量控制

GPDB是在开源PostgreSQL基础上,采用MPP架构的关系型分布式数据库,具有强大的大规模数据分析任务处理能力。采用Shared-Nothing架构,整个集群由多个数据节点(segment)和控制节点(master)组成。数据节点之间会出现数据洗牌,并且数据节点会将数据发送到控制节点进行汇总输出。数据节点之间的数据洗牌和数据节点向控制节点发送数据通过Interconnect实现。

1、Interconnect概要介绍

Interconnect是GPDB数据库中负责不同节点进行内部数据传输的组件。GPDB中由特定的执行算子Motion用来负责查询处理执行器节点之间交互数据,底层网络通信协议通过Interconnect实现。

由控制参数gp_interconnect_type来指定使用哪种协议。该参数取值范围:UDPIFC:基于UDP的可靠协议,实现了重传、乱序处理、不匹配处理、流量控制等功能;TCP:TCP协议;proxy:基于TCP改造而来,主要用来应对在大规模集群里面网络连接数巨大的情况。

本文关注UDPIFC协议。该协议下由gp_interconnect_fc_method参数控制使用哪种流量控制方式:capacity根据接收方窗口来控制发送;loss(默认)根据丢包情况控制发送速度。

gp_interconnect_snd_queue_depth:设置发送方发送窗口大小,增加该值会占用更多内存,默认2。仅在UDPIFC协议下才生效。

gp_interconnect_queue_depth:设置接收端UDP接收窗口大小。当数据达到接收方,但是接收窗口每位置的时候,就会丢弃这个数据,需要重新传输。因此,增加该值需要更多内存,但能够改善性能。默认为4,设置1-10较为合理。

2、UDPIFC如何控制流量

通过拥塞控制来控制发送速度。和TCP的拥塞控制类似。先介绍几个概念相关变量。

  • static SendControlInfo snd_control_info::拥塞控制相关信息

struct SendControlInfo
{
  /* The buffer used for accepting acks */
  icpkthdr   *ackBuffer;
  float    cwnd;//拥塞窗口
  float    minCwnd;//最小拥塞窗口
  float    ssthresh;//慢启动门限
};
  • 网络拥塞:ack超过超时传送时还没收到。

流量控制机制

流量控制流程如下图所示。

1)SendControlInfo初始化:初始化在进程初始化的时候操作,也就是InitMotionLayerIPC函数完成。仅将拥塞窗口初始化为0。

2)在执行器执行的时候,primary上设置拥塞窗口和慢启动门限值。可以看到拥塞窗口cwnd被设置成了1,而慢启动门限被设置成了2,即门限值由gp_interconnect_snd_queue_depth控制。

3)SendChunkUDPIFC函数完成发送数据的功能:sendBuffers发送后进入pollAcks等待ack事件发生。有ack事件到来后,由函数handleAcks处理接收到的ack。可以看到若拥塞窗口小于慢启动门限值,则拥塞窗口+1,否则+1/cwnd。但这里有个阈值,cwn最大不能超过gp_interconnect_snd_queue_depth(默认2)的值。

4)当接收端发生丢包发来对应ack:会将慢启动门限值调整到一半,拥塞窗口更新为ssthresh值。此时认为拥塞不严重,还可以慢慢增加发包数;当超时重传时,认为拥塞比较严重了,此时将ssthresh门限值调整为一半,拥塞窗口重回1值,从发送一个包重新开始。

5)sendBuffers函数中根据拥塞值控制是否发送:当numSharedOutStanding值>=拥塞窗口cwnd时,表示已经有这么多的发送未接收到ack了,发生丢包严重了。就不再让发送数据了。

5cbaacc57d1540ff004f0b8f7b337285.png

3、总结

f500fc2d19adf87581be8fe8478174d7.png


http://www.niftyadmin.cn/n/462577.html

相关文章

JavaScript设计模式发布订阅模式

目录 前言发布订阅设计模式 前言 发布订阅设计模式是和观察者设计模式基本上相同,但是他们两个设计模式不同的是发布订阅者拥有一个事件处理中心而观察者并没有 比如,我们利用订阅者设计模式去监听一个对象的改变,可以给对象改变的方法添加…

SEO一般多久时间才会有效果?

💂 个人网站:【海拥】【游戏大全】【神级源码资源网】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 寻找学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】 目录 前言什么是SEOSEO的时间…

走向计算机视觉的通用人工智能:从GPT和大型语言模型中汲取的经验教训 (上)...

点击蓝字 关注我们 关注并星标 从此不迷路 计算机视觉研究院 公众号ID|计算机视觉研究院 学习群|扫码在主页获取加入方式 论文地址:https://arxiv.org/pdf/2306.08641.pdf 计算机视觉研究院专栏 Column of Computer Vision Institute 人工智能…

区块链技术的应用与前景展望

第一章:引言 在当今数字化时代,区块链技术作为一项前沿技术正迅速崭露头角,并在各个行业展现出巨大的潜力。区块链技术不仅仅是比特币和其他数字货币的基石,更是一种分布式、去中心化的记账和验证技术。本文将探讨区块链技术的应…

chatgpt赋能python:Python列表转字符串——从新手到大师

Python列表转字符串——从新手到大师 在Python编程中,列表和字符串是非常常用的数据类型。有时候,我们需要将一个列表转换为一个字符串,以方便进行各种操作。幸运的是,Python内置了一些函数和方法,可以轻松地将列表转…

RT-Thread-05-空闲线程和两个常用的钩子函数

空闲线程和两个钩子函数 空闲线程是一个比较特殊的系统线程,它具备最低优先级,当系统中无其他就绪线程可运行时,调度器将调度到空闲线程;空闲线程还负责一些系统资源回收以及将一些处于关闭状态的线程从线程调度列表中移除&#x…

【计算机网络】第二章 物理层(下)

文章目录 2.5 信道的极限容量2.5.1 奈氏准则2.5.2 香农公式2.5.3 练习题 2.6 章节小结2.7 章节习题 2.5 信道的极限容量 2.5.1 奈氏准则 理想低通信道的最高码元传输速率 2W Baud 2W 码元 / 秒 理想带通信道的最高码元传输速率 W Baud W 码元 / 秒 W : 信道带宽&#xff08…

MacOS Sonoma 14.0 (23A5276g) Beta2 带 OC 引导双分区黑苹果镜像

苹果今日向 Mac 电脑用户推送了 macOS 14 开发者预览版 Beta2 更新(内部版本号:23A5276g),本次更新距离上次发布隔了 15 天。 镜像下载: 微信公众号: macOS Sonoma 14.0 (23A5276g) Beta2 带 OC 引导双分…