计算机基础-数据处理能力的限制因素及流量测量

来源:互联网 发布:淘宝客怎么打推广 编辑:程序博客网 时间:2024/05/17 22:03

序言

为了辅助确定广播网关的硬件实现方案,即确定FPGA加速和实现的必要性,需要分析系统能够支持的最大数据容量(理论)和台式机能够处理的数据流量上限和最高CPU占用率(实际),这篇文章试图总结实际传输中系统流量的限制因素以及测量方法。


1. 数据接收过程

网卡 ——> 主板 ——> CPU ——> 总线 ——> 内存 ——> 硬盘

2. 数据处理的限制因素

在一个局域网中,我们分两部分来考虑数据处理的限制因素,节点和节点之间。

  • 节点之间:最大的影响因素在于物理线路的传输速率。局域网中常见的网线包括“双绞线 + 同轴电缆 + 光纤+”,速度最快的是光纤。

    • 双绞线:RJ45接口。有屏蔽双绞线和非屏蔽双绞线,屏蔽双绞线价格较高,非屏蔽双绞线便宜但稳定性较差。介绍一下传输速率比较高的几种双绞线
      • 五类线:传输频率为100MHz,用于语音传输和最高传输速率为100Mbps的数据传输,主要用于100BASE-T和10BASE-T网络。是最常用的以太网电缆。
      • 超五类线:超5类具有衰减小,串扰少,并且具有更高的衰减与串扰的比值和信噪比、更小的时延误差,性能得到很大提高。超5类线的最大传输速率为250Mbps
      • 六类线:传输频率1MHz~250MHz。六类布线的传输性能远远高于超五类标准,最适用于传输速率高于1Gbps的应用。六类标准中取消了基本链路模型,布线标准采用星形的拓扑结构,要求的布线距离为:永久链路的长度不能超过90m,信道长度不能超过100m。
      • 超六类线:传输频率200~250MHz。六类线的改进版,非屏蔽双绞线电缆,主要应用于千兆位网络,最大传输速度也可达到1000Mbps,只是在串扰、衰减和信噪比等方面有较大改善。
      • 七类线:传输频率至少可达500MHz。该线是ISO 7类/F级标准中最新的一种双绞线,它主要为了适应万兆位以太网技术的应用和发展。是一种屏蔽双绞线,传输速率可达10Gbps
    • 同轴电缆:BNC接口。同轴电缆具有良好的抗干扰特性,被广泛用于传输较高速率的数据,其传输距离更远,但价格较双绞线贵。由于电缆连接的总线拓扑发生触点故障时,故障的诊断和修复都很麻烦,因此电缆逐步被非屏蔽双绞线或光缆取代。目前同轴电缆的传输速率一般为10Mbps

    • 光纤:家用普通光纤可达到10Gbps以上,实验室光纤传输速率更是能达到几十甚至两百多Tbps,1Gbps以上的以太网都使用光纤。

  • 节点:至于节点内部的数据速率限制因素,需要从以下这些方面进行考虑

    • 网卡速率? Partially。网卡支持的最大速率,百兆网卡、千兆网卡都是指网卡的流量瓶颈,当网络流量超过网卡带宽将会成为限制因素。

    • 硬盘读取速度? Partially。作为永久/大量数据存储的外存,当网络数据流量到达一定大小后,影响网络数据包能否及时处理的因素不再是数据的收发速率,而是硬盘读取速度和数据处理速度。

    • 内存带宽? Mainly。 内存是中转和临时处理设备,内存越大,中转速度就越快。程序运行时使用的临时数据缓存(比如程序开辟的队列堆空间等)基本都由内存承担,但是由于系统的数据容量有限,单位时间内需要存储的实时数据有限,因此内存带宽的限制影响有限。

    • CPU处理速度? Mostly。达到CPU处理速率跟不上的程度,基本上要达到每秒钟数十GB的量级了,如果网关真要处理这么大的数据量,可能需要考虑使用更高性能的CPU了。CPU总是处理自己寄存器中数据,CPU和内存之间有CPU缓存。实验室台式机该缓存大小约为6MB。

    • 程序处理速度? Mainly。程序处理速度其实本质上就是CPU和内存处理速率,对数据处理速度有影响(优化的可能),但不是数据接收能力的主要限制因素。

综上,主要限制还是内存占用和CPU占用的问题,我们所说的网络流量测量实际上就是网络传输能力和台式机的数据处理能力,处理的是经由网卡某个端口或者程序进程的数据。需要考虑的因素包括:数据速率 + 网卡接收速率 + CPU处理能力 + 内存处理速度/大小 + 硬盘读取速度


3. 系统流量的测量工具

  • 第三方工具/软件:

    • nload:实时网络流量和带宽监测工具,可视化展示接收和发送流量,可设置间隔刷新;不能对特定端口进行流量监控。

    • iptraf:也可提供网络流量和带宽监测,不具有可视化展示功能,但是可以设置特定的监听包类型和监听端口。

    • iptables:主要用于网络防火墙设置,实现Linux下访问控制的功能。

    • iftop:优点是能够查看不同IP之间的流量情况,监控TCP/IP连接等,缺点是无报表功能也不能设置特定端口监测,必须以root身份才能运行。iftop监听特定网卡 iftop –i eth1

    • ifstat:能比较简单的查看网络流量概况,不监测回环接口。

    • tcpdump:是一种免费的网络分析工具,可以将网络中传送的数据包的报头完全截获下来提供分析,支持对网络层、协议、主机、网络或端口的过滤。常见抓包命令如tcpdump tcp port 80,tcpdump -i eth1 port 25,tcpdump -i eth1 udp并且支持not and or等表达式。tcpdump -i eth1 -w /tmp/xxx.cap 抓包保存用wireshark分析。可参考:http://blog.csdn.net/baidu_35692628/article/details/76038713

    • TrafficWatcher:基于Winpcap库的软件(https://www.codeproject.com/Articles/2470/TrafficWatcher)本文中不做叙述。

    • Linux编程:基于libpcap:是linux下的包捕获工具,因为我们的程序是运行在linux平台的,所以拟利用该工具进行测量。这个方法相对比较复杂,但是可以直接对捕获的包进行操作,如果进行数据包处理的话需要通过这种方法实现。可参考这篇文章:http://blog.csdn.net/htttw/article/details/7521053还有论坛中的两个讨论:http://bbs.csdn.net/topics/340065806 ; http://bbs.csdn.net/topics/310060693 作者也会在之后的文章中对这种抓包方式进行总结。


3. 最大网络流量下的CPU占用率测量举例

虽然上面提到的几个常用工具有的也能监测CPU占用率,但是最大网络流量下的CPU占用率需要配合抓包进程来测量。

CPU占用率可分为总的CPU占用率进程CPU占用率线程CPU占用率,同时单核CPU多核CPU下的计算也有差别。由于广播网关抓包是通过多线程实现的,当前PC下拟利用单网卡单端口进行单进程满负荷抓包测量最大网络流量下CPU占用率。

本文先给出一定数据流量下单进程的CPU监测结果,可能还是结合着内存使用率来看比较能反映台式机的数据处理性能。最重要的还是搞清楚系统容许的最大数据容量,也就是理论分析。

  • 测量环境
    • Linux系统,系统信息:
      • Ubuntu 16.04.2 LTS, x86_64, 4.4.0-77-generic
    • 软件和工具:
      • VLC_64bit
      • nload,iftop,top命令
    • UDP socket通信

注:图中CPU信息依次为:物理CPU个数,CPU型号,逻辑CPU个数,CPU核心数,每个CPU核心,CPU主频(实时变化,降频节能)

  • 测量方案

    • 单网卡,单端口,单进程,多码率测量
      • 3Mbps
      • 15Mbps
      • 30Mbps
    • 单网卡,多端口,多进程(干扰进程),多码率
      • 3Mbps
      • 15Mbps
      • 30Mbps
  • 测量结果

    • 单网卡,单端口,单进程,多码率测量
      • 3Mbps
        Mem:3.3%; CPU:30.9%(Avg)
      • 15Mbps
        Mem:3.7%; CPU:35.7%(Avg)
      • 30Mbps
        Mem:3.4%; CPU:40%(Avg)

注:计算平均CPU占用率 ps -eo pid,pcpu | sort -n -k 2,然后特定进程求和得到

  • 测量结果分析

    • 内存占用:程序的内存占用,并不直接反映数据量的大小,在多种码率下VLC内存占用都比较相近。内存占用结果符合预期,即单位时间内需要存储的实时数据有限,因此内存带宽的限制影响有限。

    • CPU占用:由于本次测量采用VLC视频解码播放的形式,主要的CPU占用都耗费在视频解码上,而实际的数据流封装过程由于没有太复杂的计算CPU占用也不会很高。然而实际数据处理并不需要对视频数据进行解码,由于只进行数据封装和调度,就数据封装而言,并不会占用太多的CPU资源。

附注

综上,本文所能提供的参考在于:

  • 明确了数据处理(封装)速率的主要限制因素;

  • 总结了常用的流量测量的基本工具;



2017.05.11

0 0
原创粉丝点击