linux网络编程——ttcp

ttcp:测试网络吞吐量的性能测试工具

关心的性能指标:

1. 带宽,MB/S

Netcat测试时是一个上限,因此Netcat发的是什么而外的开销都没有,是纯的payload;其他的工具,因为消息要分包等等,会有一些overhead,测出来会小于Netcat测出来的带宽,如果测试出来比Netcat的要大,有一种情况是数据压缩了。

出现这些情况需要与基本的117数据来做对比:
如果测出来的数据小太多,而cpu使用率又很低的话,则程序是既没有利用好网络带宽,也没有利用好cpu;如果测出来比117小很多,而cpu使用时100%,则说明计算开销比较大。
如果瓶颈在cpu,要么优化程序,要么并行处理。

2. 吞吐量

在应用层面表示一秒钟可以处理多少消息,处理多少查询(QPS),或者完成多少次事物(TPS/S)。

3. 延迟

除了关心平均延迟,还会关心百分数延迟,95%的延迟是多少毫秒(问:这里的95%延迟是什么)

4. 使用率

Utlization,percent,payload vs. carrier,googput vs.theory BW

5. 额外开销

最开始为什么选TTCP来讲解呢

1. 它使用了最基本的Socket APIs:socket,listen,bind,accept,connect,read/recv, write/send、close等

2. 协议是二进制的,不是字节流,因此要比经典的echo例子要好

3. 它是用TCP实现的协议,因此具有一些典型的行为,发一个数据,等着收一个响应,这样测出来的结果比较有意义

4. 协议简单,可以用多种语言实现它,还反映了编程语言本身的性能

5. 就是一个client和server,没有并行

TTCP协议简单图

linux网络编程——ttcp_第1张图片

代码

linux网络编程——ttcp_第2张图片

boost的参数解析

你可能感兴趣的:(Linux)