220 likes | 406 Views
诺西实习总结报告. 王淼. 报告提纲. 测试的背景. 分布式数据库进行数据备份、传输数据的需要. 高效性. backup. udt. 准确性. 友好性. 传输协议 udt. 常用传输协议 UDP :无连接的传输协议,不可靠。 在网络质量不好时丢包严重 TCP :面向连接的传输协议,可靠。 在 高带宽长距离网络上性能 低 udt 传输协议( UDP-based Data Transfer Protocol ) 由于 UDT 完全在 UDP 上实现,并引入新的拥塞控制和数据可靠性控制机制。
E N D
诺西实习总结报告 王淼
测试的背景 • 分布式数据库进行数据备份、传输数据的需要 高效性 backup udt 准确性 友好性
传输协议udt • 常用传输协议 UDP:无连接的传输协议,不可靠。 在网络质量不好时丢包严重 TCP:面向连接的传输协议,可靠。 在高带宽长距离网络上性能低 • udt传输协议(UDP-based Data Transfer Protocol) 由于UDT完全在UDP上实现,并引入新的拥塞控制和数据可靠性控制机制。 udt提供了两种传输模式:m2m(memory to memory) d2d(disk to disk) UDP Header UDT Header
传输协议udt • 关于udt性能的测试 udt的官方文档说即使有500ms的网络延时,在1G bit/s的物理网卡上,速率也能够达到900Mbit/s以上,并且没有丢包。 • 测试过程: • udt参数调优 • tc(traffic control)队列选择、参数调优 • 测试结果 tc加延时从0ms一直到500ms,udt流的速率非常稳定,均可以最高达到950Mbit/s,且丢包率稳定后为0。这证明了udt的高效性和准确性。udt正如它自己声明的那样: 支持高速广域网上的海量数据传输。
测试架构 • 脚本的主要架构 整个测试脚本的介绍 Config files TC (Add latency) TCP flows (Number, BW limit, mode(M2M)) UDT flows (Number, modes(D2D/M2M), BW limit) Perf. Collection &Statistic (CPU/memory/transmission status) Analysis (dimensionally)
client TC manager server 测试架构 • 测试环境搭建 • 必要配置 • 打开服务器的路由转发功能 /proc/sys/net/ipv4/ip_forward • 配置路由转发,使server和client之间的数据先经过tc manager(对数据包进行延时)处理后再发送 • 连接测试 整个测试脚本的介绍
内核工具tc进行网络延时模拟 • tc(Traffic Control)是linux内核中用于流量控制的工具,它主要是通过在网卡的出口上建立一个队列来实现流量控制的目的。 • tc的三个组成部分: • queuing disciplines:指定数据包排列的队列类型 • classes:可以为一些特定的数据包设定一个类别 • filters:指定想要进行限制的数据包的过滤器 整个测试脚本的介绍 Traffic control Upper layers(TCP, UDP, …) Input Forwarding Output queuing
内核工具tc进行网络延时模拟 • tc三个部分的关系图示: 整个测试脚本的介绍 Filter QDisc class Filter QDisc class Filter Queuing discipline
内核工具tc进行网络延时模拟 • 我们的测试中,主要是利用tc进行对server与client上通过的数据包进行网络延时,来模拟实际的网域网传输情况,功能如下图所示: • 为了测试的正确性,如果数据包不是从server发往client(或从client发往server),则不会被tc过滤器过滤而进行延时操作。 整个测试脚本的介绍 server TC manager 延时100ms client
root 1:0 qdisc htb filter client ip address 1:1 class filter server ip address 1:11 class 1:12 class 11:0 delay ?ms 12:0 delay ?ms 111: qdisc sfq 122: qdisc sfq 内核工具tc进行网络延时模拟 • 为了达到这个目的,构建的tc结构树如下所示(已经过测试选择队列): 整个测试脚本的介绍
启动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 启动tcp流工具、监视网络状态工具 整个测试脚本的介绍
D-ITG使用中的问题 • server端和client端时间同步 • 与网络提供的时间服务器同步:由于服务器均不能连接外网,失败 • 两台服务器之间同步:ntp工具 • 使用中出现的问题: • Udp流、tcp流丢包率不一样 • Receive端cpu占用率过高700%~800% • 启动不稳定,在连续case测试时有时ITGSend不能正常启动 • ITGDec使用方式不是十分了解 • 启动tcp流工具、监视网络状态工具 整个测试脚本的介绍
监视网络状态工具 • iftop • nload • ifstat功能和需要不太符合 • sar • load runner • ntop都需要图形界面 • iptraf • 针对测试,需要能够监测网卡经过数据包的源ip地址、目的ip地址以及流量大小统计,因此使用iftop工具。 • 启动tcp流工具、监视网络状态工具 整个测试脚本的介绍
host port total flow of each connection average flow in past 2s, 10s,40s
测试中设定的参数 • 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占用率 整个测试脚本的介绍 • 测试关注的参数
使用xml作为数据结果分析的格式 • 编写xml的schema,定义xml文件的格式规范。 • 从测试的中间结果数据(client端、server端)中抽取、计算数据。 包括从client端的中间结果中提取throughput,从client端的top结果中提取client进程占用的cpu、mem,以及ssh远程到server端服务器提取server进程占用的cpu、mem。 • 将数据整合成xml文档。 • 将xml导入excel表格,然后编写程序使excel将特定的数据区域自动绘出数据图线。 整个测试脚本的介绍 • 数据结果分析
发现问题 当将在本地服务器上配置好的脚本放到慕尼黑服务器上之后,数据结果较之前性能下降很多。Top命令发现所有的软件中断全部分配到一个cpu上,负载严重不均衡。 • 可能原因 • 虚拟网卡bonding 慕尼黑的testbed上面的网卡是用两块物理网卡bonding成一块虚拟网卡来使用的。也许虚拟网卡会对负载均衡产生影响。 在本地机器上搭建虚拟网卡环境,测试各种bonding工作模式,并尝试将不同网卡中断号上的负载分配到不同的cpu上(smp_affnity配置),但是使用tcpdump抓包分析发现,似乎目前的虚拟网卡工作模式的功能并没有非常完善,或者不能适用于我们测试的特殊环境。 整个测试脚本的介绍 • 虚拟网卡bonding的影响
做事情头脑要清晰,细心谨慎,考虑全面。编程序时尽量避免等到整个程序跑起来出问题再回头检查。做事情头脑要清晰,细心谨慎,考虑全面。编程序时尽量避免等到整个程序跑起来出问题再回头检查。 • 对自己的任务应该全力以赴,做事情要负责任,不能推脱。自己要努力成为让人信任的人。 • 英语听说能力很重要。 • 在和别人交流时,要表达清晰,尽量不要胆怯。 • 善于学习,养成习惯把解决好的问题记在本上,下次再遇到的时候就不必再费力google了。 • 反思:做事情一定要有效率,要善于和别人交流,要对自己有正确积极的自我评价。 • 实习的感受