关于udt性能的测试

分布式数据库进行数据备份时,传输数据需要高效,准确和友好,UDT协议克服了UDP协议等不可靠性,页克服了TCP协议在长距离网络上的低性能,引入了拥塞控制和数据可靠性控制机制。正是基于这个背景,我们测试了UDT协议的性能和可靠性测试报告。
展开查看详情

1.诺西实习总结报告 王淼

2.报告提纲 测试的背景 传输协议 udt 整个测试脚本的介绍 实习的感受 Page  2

3.测试的背景  分布式数据库进行数据备份、传输数据的需要 数据库 高效性 backup 准确性 udt 数据库 数据库 友好性 Page  3

4.传输协议 udt  常用传输协议 UDP :无连接的传输协议,不可靠。 在网络质量不好时丢包严重 TCP :面向连接的传输协议,可靠。 在高带宽长距离网络上性能低  udt 传输协议( UDP-based Data Transfer Protocol ) 由于 UDT 完全在 UDP 上实现,并引入新的拥塞控制和数据可靠性控制机制。 UDP UDT Header Header udt 提供了两种传输模式: m2m(memory to memory) d2d(disk to disk) Page  4

5.传输协议 udt  关于 udt 性能的测试 udt 的官方文档说即使有 500ms 的网络延时,在 1G bit/s 的物理网卡上,速率也 能够达到 900Mbit/s 以上,并且没有丢包。  测试过程: udt 参数调优 tc ( traffic control )队列选择、参数调优 测试结果 tc 加延时从 0ms 一直到 500ms , udt 流的速率非常稳定,均可以最高达到 950Mbit/s ,且丢包率稳定后为 0 。这证明了 udt 的高效性和准确性。 udt 正如它 自己声明的那样: 支持高速广域网上的海量数据传输。 Page  5

6.整个测试脚本的介绍 测试架构 内核工具 tc 进行网络延时模拟 启动 tcp 流工具、监视网络状态工具 测试关注的参数 数据结果分析 虚拟网卡 bonding 的影响 Page  6

7.整个测试脚本的介绍 测试架构  脚本的主要架构 Config files TCP flows UDT flows TC (Number, BW limit, mode(M2M)) (Number, modes(D2D/M2M), BW limit) (Add latency) Perf. Collection &Statistic (CPU/memory/transmission status) Analysis (dimensionally) Page  7

8.整个测试脚本的介绍 测试架构  测试环境搭建 server TC manager client  必要配置 打开服务器的路由转发功能 /proc/sys/net/ipv4/ip_forward 配置路由转发,使 server 和 client 之间的数据先经过 tc manager (对数据包进行延时)处理 后再发送 连接测试 Page  8

9. 内核工具 tc 进行网络延时模 整个测试脚本的介绍 拟  tc(Traffic Control) 是 linux 内核中用于流量控制的工具,它主要是通过在网卡的出口 上建立一个队列来实现流量控制的目的。 Upper layers(TCP, UDP, …) Traffic control Input Forwarding Output queuing  tc 的三个组成部分: queuing disciplines :指定数据包排列的队列类型 classes :可以为一些特定的数据包设定一个类别 filters :指定想要进行限制的数据包的过滤器 Page  9

10. 内核工具 tc 进行网络延时模 整个测试脚本的介绍 拟  tc 三个部分的关系图示: Filter class QDisc Filter class QDisc Filter Queuing discipline Page  10

11. 内核工具 tc 进行网络延时模 整个测试脚本的介绍 拟  我们的测试中,主要是利用 tc 进行对 server 与 client 上通过的数据包进行网络延 时,来模拟实际的网域网传输情况,功能如下图所示: server TC 延时manager 100ms client  为了测试的正确性,如果数据包不是从 server 发往 client (或从 client 发往 server ),则不会被 tc 过滤器过滤而进行延时操作。 Page  11

12. 内核工具 tc 进行网络延时模 整个测试脚本的介绍 拟  为了达到这个目的,构建的 tc 结构树如下所示(已经过测试选择队列): root 1:0 qdisc htb filter 1:1 filter client ip address class server ip address 1:11 1:12 class class 11:0 12:0 delay ?ms delay ?ms 111: 122: qdisc sfq qdisc sfq Page  12

13.整个测试脚本的介绍 启动 tcp 流工具、监视网络状态工 具  启动 tcp 流的工具 ---- D-ITG  D-ITG 是一种比较流行的数据流产生工具。通过 ITGSend 发送数据,在目的服务器 上用 ITGRecv 接收数据。  目的:在 server 和 client 之间同时启动 udt 流和 tcp 流,观察 udt 对 tcp 的友好性, 以及两种数据流共同存在时相互的影响。  实验结果: D-ITG 产生的 tcp 数据流在有 udt 流和没有 udt 流两种情况下,速率相差 很小,这也证明了 udt 对于 tcp 的友好性。  使用范例: ./ITGSend -a 10.141.7.166 -rp 9500 -C 1000 -u 1000 2000 -l send_logfile Page  13

14.整个测试脚本的介绍 启动 tcp 流工具、监视网络状态工具  D-ITG 使用中的问题  server 端和 client 端时间同步 与网络提供的时间服务器同步:由于服务器均不能连接外网,失败 两台服务器之间同步: ntp 工具  使用中出现的问题: Udp 流、 tcp 流丢包率不一样 Receive 端 cpu 占用率过高 700%~800% 启动不稳定,在连续 case 测试时有时 ITGSend 不能正常启动 ITGDec 使用方式不是十分了解 Page  14

15.整个测试脚本的介绍 启动 tcp 流工具、监视网络状态工具  监视网络状态工具  iftop  nload  ifstat 功能和需要不太符合  sar  load runner  ntop 都需要图形界面  iptraf  针对测试,需要能够监测网卡经过数据包的源 ip 地址、目的 ip 地址以及流量大 小统计,因此使用 iftop 工具。 Page  15

16. host port total flow of each connection average flow in past 2s, 10s,40s Page  16

17.整个测试脚本的介绍 测试关注的参数  测试中设定的参数  tc 设定延时 latency  udt 传输模式 udt_type  udt 流数量 udt_num  udt 流最大使用带宽 udt_bandwidth  tcp 流数量 tcp_num  tcp 流最大使用带宽 tcp_bandwidth  测试结果关注的参数  udt 、 tcp 流传输速率 throughput  udt 、 tcp 流的 client 端 cpu 占用率、 mem 占用率  udt 、 tcp 流的 server 端 cpu 占用率、 mem 占用率 Page  17

18.整个测试脚本的介绍 数据结果分析  使用 xml 作为数据结果分析的格式  编写 xml 的 schema ,定义 xml 文件的格式规范。  从测试的中间结果数据( client 端、 server 端)中抽取、计算数据。 包括从 client 端的中间结果中提取 throughput ,从 client 端的 top 结果中提取 client 进程占用的 cpu 、 mem ,以及 ssh 远程到 server 端服务器提取 server 进程 占用的 cpu 、 mem 。  将数据整合成 xml 文档。  将 xml 导入 excel 表格, 然后编写程序使 excel 将特定的数据区域自动绘出数据图 线。 Page  18

19.Page  19

20.整个测试脚本的介绍 虚拟网卡 bonding 的影响  发现问题 当将在本地服务器上配置好的脚本放到慕尼黑服务器上之后,数据结果较之前性能 下降很多。 Top 命令发现所有的软件中断全部分配到一个 cpu 上,负载严重不均 衡。  可能原因  虚拟网卡 bonding 慕尼黑的 testbed 上面的网卡是用两块物理网卡 bonding 成一块虚拟网卡来使用 的。也许虚拟网卡会对负载均衡产生影响。  在本地机器上搭建虚拟网卡环境,测试各种 bonding 工作模式,并尝试将不同网卡 中断号上的负载分配到不同的 cpu 上( smp_affnity 配置),但是使用 tcpdump 抓 包分析发现,似乎目前的虚拟网卡工作模式的功能并没有非常完善,或者不能适用 于我们测试的特殊环境。 Page  20

21.实习的感受  做事情头脑要清晰,细心谨慎,考虑全面。编程序时尽量避免等到整个程序跑起来 出问题再回头检查。  对自己的任务应该全力以赴,做事情要负责任,不能推脱。自己要努力成为让人信 任的人。  英语听说能力很重要。  在和别人交流时,要表达清晰,尽量不要胆怯。  善于学习,养成习惯把解决好的问题记在本上,下次再遇到的时候就不必再费力 google 了。  反思:做事情一定要有效率,要善于和别人交流,要对自己有正确积极的自我评 价。 Page  21

22.Thanks !