
丰富的开发工具和开源软件组件是Linux环境的主要优点之一,如今,支撑通信网络的设备无论在速度、吞吐量、性能还是其支持的服务方面都变得日益强大。显然对用户来说这是福音——但对生产商来说这却是一项重大挑战。
路由器的设计目标也许是与10000个其它设备流畅交互。那么其生产商就必须维护一个由所有 服务器 、网关、交换机及其他(用来重现设备可能面临的标准状态与压力状态的)装置组成的测试网络吗?
显然,这会导致成本不菲,更别说时间的耗费了,并且如果测试一个普通路由器都如此困难,生产商如何测试最大规模电信网络设备(例如10GB以太网交换机)的功能,又如何度量系统交互与需求情景对于复杂服务(例如整合语音、数据与影像的“三合一”服务)的不同影响?
这就是Spirent Communications公司与其产品Spirent TestCenter要解决的问题。它的设计目标是复杂网络性能分析系统,提供软件与硬件真实模拟任何可能的网络流量情景,以简化并加速测试。通过在同一个应用程序中产生控制与数据层流量并收集测试结果,功能与性能测试集中于一个应用程序中。这样做的效果是,用户可以准确测量几微秒量级的设备延迟时间。
独一无二的基于Linux的高度分布式结构(在一个产品中可能分布有数百个甚至数千个运行在设备边缘的独立嵌入式Linux系统)使Spirent TestCenter能够以线路速率跟上网络数据包流量。操作所处的位置(位于Spirent TestCenter的端口,设备处理大量输入、输出数据包的地方)对于系统性能而言十分关键,因为它可以调节大量位于该处的CPU并确保只有测试结果(而非原始数据)被传送到中央控制应用程序那里。
图为Spirent TestCenter端口处的应用程序及数据库

使用基于SQL的开源关系数据库作为测试结果的后端存储,而且端口处部署有现场可编程门阵列(FPGA),主要来自Xilinx公司,用来处理最为性能密集的任务:产生、捕获与分解数据包。对于大规模测试,用户可以将多种机箱加入到安装中,形成多达720个端口。系统可以捆绑到一起以提供更多端口。这样,一个端口可依次模拟32,000个数据流,使得系统能够“创建”由数以百万计主机与设备组成的网络,以测试交换机、路由器或其他设备。
为进行测试,有端口(通常不少于2个)将被连接到测试设备上的端口。用户通过运行在相连的PC或笔记本电脑上控制应用程序进行控制。输入命令后,FPGA开始大量生成数据包,有效地将交换机或路由器“置于”用户指定的速度与流量级别的网络中。FPGA监控设备返回的流量,测试并分解输入的数据包来度量延迟时间、抖动、丢包率以及数百种其它现象(根据测试需要),将这些数据发送给eXtremeDB内存嵌入式数据库。
几乎所有测试结果都由测试模块的应用程序计算得到,尽管少部分(例如需要利用多种来源数据计算的平均值)在控制PC机中计算。在数据收集点处完成几乎全部数据分析工作,可以充分利用分布于整个系统中的众多CPU(其中一些为多核),从而提升系统性能。
这些测试可以传输的信息种类多的惊人。一些用户仅仅关注第2或第3通讯子层(参考OSI 7层模型),或测量处于更高子层状态流量的特性。对于防火墙与其他与安全相关的设备,设备可以对数据包进行深入分析以探测出带有病毒及其它恶意程序特征的模式(一种更加CPU密集的分析)。系统支持相对简单的工业标准网络设备测试(例如:IETF RFC 2544和2889),但更适合进行关系到多种应用程序和流量的高度复杂分析。今天,人们期待网络能够同时处理IPTV、Web通信以及VoIP数据。与此同时还要应付不断变更的IPTV频道。最困难的挑战之一是运行针对这些情况(尤其是它们同时发生时)的测试。
将定制FPGA功能与软件处理相结合,我们可以在TestCenter中完成这个任务。在软件方面,设备广泛利用了Linux的多线程。测试程序隔离了各种功能(例如IPTV测试、VoIP测试以及多种数据库行为)并将它们分配给不同的线程。相比之下,许多老式测试技术只利用了一个CPU线程,我们产品中最“硬”的实时性能来自FPGA。
与FPGA硬件相比,系统的嵌入式软件并非“硬”实时,它只是非常快而已。我们不需要Linux的响应时间达到微秒量级,MontaVista Linux系统内建的Jiffy时间片管理工具对软件需求已经是绰绰有余。
当我们在几年前试图将产品转变为现在的分布式结构时,寻找一个能在端口处足够快的进行分类、存储以及检索测试数据的数据库是一个挑战。我们需要一个内存式数据库,从而避免文件I/O、缓存管理以及磁盘数据库相关的其他开销。系统性能得益于引导性的数据库应用编程接口(API),即,嵌入代码的API函数通过循环操作方式,一次只针对一条数据库记录工作,应用程序逻辑决定当前记录行是否属于目标集合。
SQL在测试系统中也占有一席之地,控制程序中包含开源的SQLite数据库,从分布式Linux系统中提取的测试结果就保存在该DBMS中。之所以选择SQLite是因为它对于这种非实时存储足够快,并且如果需要的话,可以“插入”一个不同的SQL数据库作为后端。可靠性及速度使Linux成为我们理想的选择。Linux的稳定性很好。如果有一千个端口,每个端口都有自己的Linux系统,并假设每个分布式系统的平均故障时间是1000分钟,那么整个测试平均每分钟都会出故障,这是无法接受的。因此,对如此大规模的分布式智能设备来说,稳定性是绝对的关键。
Linux环境丰富的开发工具和开源软件组件也是主要优点之一。例如:利用Scons构建工具可以将软件分布在Spirent的20或30台专用机器上,并将工作交给那些空闲的计算机。用于该产品的一种Linux工具是MontaVista公司的APPlication Pre-Linking,它扫描系统中的所有二进制文件来发现链接依赖关系。这样就不需要在应用程序运行时动态生成链接信息。
Spirent TestCenter依靠定制编程的FPGA来产生和分析数据包,它同样也可以使用开源的PCAP(Packet Capture,数据包捕获)API来进行数据包的捕获和存储。结果文件可以由基于PCAP的应用程序(如:WireShark)打开并查看,从而协助追踪bug(如:设备抖动的原因)。您说出一种Linux工具我们就可能在使用它,因为Linux基本上是一组构件的集合,TestCenter的设计则是基于这些构件的。系统中的处理器一般是成品的Intel x86和Cavium Network处理器。
我们产品中的另一开源组件是tcl/tk —— 开源的工具命令行语言(Tool Command Language)及GUI工具包。tcl/tk脚本在自动运行一组时分别在10%、20%、30%等线路速率情况下测量第二层性能的测试,之后自动开始其他第二层测试。
用户只需要按下“play”同样可以执行更长时间的测试,因为用户(包括制造商、认证机构以及以电信公司为代表的买方)需要从不同角度、针对多种模拟情况对网络设备进行压力测试,以确保设备能够达到他们声称的能力。
【编辑推荐】
如何使用Linux命令行测试网速
安装speedtest-clispeedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.4版本下均可运行。 它基于的基础架构来测量网络的上/下行速率。 安装speedtest-cli很简单——只需要下载其Python脚本文件。 使用speedtest-cli测试网速使用speedtest-cli命令也很简单,它不需要任何参数即可工作。 $ speedtest-cli 输入这个命令后,它会自动发现离你最近的服务器(地理距离),然后打印出测试的网络上/下行速率。
Linux服务器整体性能监控攻略 Linux服务器如何监控整体性能?
展开全部Linux服务器性能监测是很重要的工作,服务器运行应该提供最有效的系统性能。 当服务器系统性能突然低于平均应有的情况,问题可能来自在执行的进程、内存的使用率、磁盘的性能、网络流量和CPU 的压力。 在预算短缺的今天,理解如何优化系统性能比以往任何时候都重要。 要实现它的前提是,你必须充分了解自己的计算机和网络,从而找到真正的瓶颈所在。 本文提供一些基础的工具来辨别和处理一些性能问题。 使用的Linux 发行版本是Red Hat Enterprise Linux 4,工作过程是:首先查看整个系统的状态,然后是检查特定的子系统。 Linux服务器进行性能监控有几种方法,每种方法都各有其优缺点。 使用SNMP等标准工具标准及非标准工具能执行一个或多个收集、合并及传输阶段,如rstatd或SNMP工具,然而标准的rstat后台程序提供的信息是有限的,速度慢而且效率低。 内核模块几个系统监控工程利用内核模块来存取监控数据。 一般情况下,这是很有效的收集系统数据的方法。 然而这种方法存在的问题是,当主内核源内有其它改变时,必须保持代码一致性。 一个内核模块可能与用户想使用的其它内核模块相冲突。 此外,在使用监控系统之前,用户必须获得或申请模块。 /proc虚拟文件系统/proc虚拟文件系统是一个较快的、高效率执行系统监控的方法。 使用/proc的主要缺点是必须保持代码分析与/proc 文件格式改变的同步。 事实表明,Linux内核的改变比/proc 文件格式的改变要更频繁,所以,用/proc虚拟文件系统比用内核模块存在的问题要少。 本文介绍的方法即基于/proc虚拟文件系统。 一、 /proc文件系统特点Linux 系统向管理员提供了非常好的方法,使他们可以在系统运行时更改内核,而不需要重新引导内核系统。 这是通过 /proc 虚拟文件系统实现的。 /proc 文件虚拟系统是一种内核和内核模块用来向进程 (process) 发送信息的机制 (所以叫做 /proc)。 这个伪文件系统让你可以和内核内部数据结构进行交互,获取 有关进程的有用信息,在运行中 (on the fly) 改变设置 (通过改变内核参数)。 与其他文件系统不同,/proc 存在于内存之中而不是硬盘上。 不用重新启动而去看 CMOS ,就可以知道系统信息。 这就是 /proc 的妙处之一。 小提示: 每个Linux系统根据软硬件不同/proc 虚拟文件系统的内容也有些差异。 /proc 虚拟文件系统有三个很重要的目录:net,scsi和sys。 Sys目录是可写的,可以通过它来访问或修改内核的参数,而net和scsi则依赖于内核配置。
如何搭建性能测试环境
这个问题问的很没针对性。 性能环境搭建的话,这个问题很广的。 简单说几点要素:生产环境配置情况、你们现有测试环境资源情况、被测试场景要求、系统涉及情况(如数据库、内存库、APP等)。 每一项都要按照实际的项目与实际的环境去评估的。
发表评论