使用 Netstat 计算开销

应在安静网络上使用 Netstat 计算开销,以避免其他网络流量扭曲数据,例如广播或多播流量。

使用 Netstat 计算应用程序的网络开销

  1. 使用 Netstat 检索当前接口统计信息。
  2. 执行应用程序。
  3. 再次使用 Netstat 获取接口统计信息。
  4. 计算两个 Netstat 度量之间收到的字节数。

示例

以下示例演示了这些步骤,使用 TTCP 发送 10 字节的数据,一次发送一个字节。

首先,计算应用程序的理论开销。 对于此测试,所有数据包都是 60 字节 (以太网最低) 。 此传输需要三个数据包来设置连接,10 个数据包、10 个确认数据包 (延迟的 ACK 几乎每次) 都会触发,并且需要 4 个数据包才能正常关闭连接。

这相当于 27 个数据包,每个数据包 60 个字节,或 1620 字节 (3+4+10) *60=1620) 。 由于仅传输 10 个字节的数据,因此开销为 1610 字节,超过 99% 的协议开销。

命令

netstat -e

Interface Statistics
                     Received     Sent
Bytes                392291400    444684566
Unicast packets      487627       570086
Non-unicast packets  1159163      11300
Discards             0            0
Errors               0            0
Unknown protocols    52812

ttcp -t -h0 -D -l1 -n10 -p9 172.31.71.99

ttcp-t: 10 bytes in 2168 real milliseconds = 0 KB/sec
ttcp-t: 10 I/O calls, msec/call = 216, calls/sec = 4, bytes/call = 1

netstat -e

Interface Statistics
                      Received     Sent
Bytes                 39229207     444685382
Unicast packets       487641       570100
Non-unicast packets   1159164      11301
Discards              0            0
Errors                0            0
Unknown protocols     52812

计算

发送: 816 字节

接收: 674 字节

总字节数: 1490

用户字节数: 10

开销: 1480/1490 = 99.3%

良好输出:=5 字节/秒 (或 40 位/秒)

注意

由于 Netstat 值中未考虑填充字节,因此传输的实际字节数与理论值不匹配。

 

应用程序行为

高性能 Windows 套接字应用程序