Я тестирую производительность TCP, используя IPerf3. Но возникли проблемы с пониманием формата отчета.
Я запускаю tcp-поток с моего клиента (IP: 2001: 1: 1: 1: :) на сервер (IP: 2001: 1: 1: 1: 0: 0001: 0001: 0001). команда, которую я использовал на стороне клиента:
iperf3 --client 2001: 1: 1: 1: 0: 0001: 0001: 0001 --port 22001 --cport 32001 --connect-timeout 9999 --set-mss 1400 -w 32M -k 4 -b 4M -l 256K - json --logfile client_file.txt
Итак, в основном я пытаюсь отправить 4 блока данных каждый размером 256 КБ, что составляет всего 1 МБ = 1048576 байт данных от клиента к серверу.
Теперь после завершения теста я получаю отчеты.
На стороне сервера я вижу следующий вывод:
{
"start": {
"connected": [{
"socket": 6,
"local_host": "2001:1:1:1:0:1:1:1",
"local_port": 22001,
"remote_host": "2001:1:1:1::",
"remote_port": 32001
}],
"version": "iperf 3.6",
"system_info": "Linux deba 5.3.0-51-generic #44-Ubuntu SMP Wed Apr 22 21:09:44 UTC 2020 x86_64",
"sock_bufsize": 33554432,
"sndbuf_actual": 33554432,
"rcvbuf_actual": 33554432,
"timestamp": {
"time": "Fri, 01 May 2020 18:13:38 GMT",
"timesecs": 1588356818
},
"accepted_connection": {
"host": "2001:1:1:1::",
"port": 57974
},
"cookie": "vqbvzrztcokczyyg45sue2a3mjndzxr3thvd",
"tcp_mss": 1400,
"test_start": {
"protocol": "TCP",
"num_streams": 1,
"blksize": 262144,
"omit": 0,
"duration": 0,
"bytes": 0,
"blocks": 4,
"reverse": 0,
"tos": 0
}
},
"intervals": [{
"streams": [{
"socket": 6,
"start": 0,
"end": 1.0002388954162598,
"seconds": 1.0002388954162598,
"bytes": 6940,
"bits_per_second": 55506.7396943155,
"omitted": false
}],
"sum": {
"start": 0,
"end": 1.0002388954162598,
"seconds": 1.0002388954162598,
"bytes": 6940,
"bits_per_second": 55506.7396943155,
"omitted": false
}
}, {
"streams": [{
"socket": 6,
"start": 1.0002388954162598,
"end": 2.0000648498535156,
"seconds": 0.99982595443725586,
"bytes": 13880,
"bits_per_second": 111059.32938348054,
"omitted": false
}],
"sum": {
"start": 1.0002388954162598,
"end": 2.0000648498535156,
"seconds": 0.99982595443725586,
"bytes": 13880,
"bits_per_second": 111059.32938348054,
"omitted": false
}
}, {
"streams": [{
"socket": 6,
"start": 2.0000648498535156,
"end": 3.0002357959747314,
"seconds": 1.0001709461212158,
"bytes": 8328,
"bits_per_second": 66612.612832212282,
"omitted": false
}],
"sum": {
"start": 2.0000648498535156,
"end": 3.0002357959747314,
"seconds": 1.0001709461212158,
"bytes": 8328,
"bits_per_second": 66612.612832212282,
"omitted": false
}
}],
"end": {
"streams": [{
"sender": {
"socket": 6,
"start": 0,
"end": 3.099092960357666,
"seconds": 3.099092960357666,
"bytes": 0,
"bits_per_second": 0
},
"receiver": {
"socket": 6,
"start": 0,
"end": 3.099092960357666,
"seconds": 3.099092960357666,
"bytes": 29148,
"bits_per_second": 75242.660669684541
}
}],
"sum_sent": {
"start": 0,
"end": 3.099092960357666,
"seconds": 3.099092960357666,
"bytes": 0,
"bits_per_second": 0
},
"sum_received": {
"start": 0,
"end": 3.099092960357666,
"seconds": 3.099092960357666,
"bytes": 29148,
"bits_per_second": 75242.660669684541
},
"cpu_utilization_percent": {
"host_total": 0.0042643816737899364,
"host_user": 0.004261896602884464,
"host_system": 0,
"remote_total": 0,
"remote_user": 0,
"remote_system": 0
},
"receiver_tcp_congestion": "cubic"
}
}
Вы можете увидеть нижнюю часть отчета. Здесь я вижу, что sum_sent имеет 0 байтов, а sum_received имеет 29148 байтов данных.
когда я открывал отчет на стороне клиента, я вижу следующее:
{
"start": {
"connected": [{
"socket": 6,
"local_host": "2001:1:1:1::",
"local_port": 32001,
"remote_host": "2001:1:1:1:0:1:1:1",
"remote_port": 22001
}],
"version": "iperf 3.6",
"system_info": "Linux deba 5.3.0-51-generic #44-Ubuntu SMP Wed Apr 22 21:09:44 UTC 2020 x86_64",
"timestamp": {
"time": "Fri, 01 May 2020 18:13:38 GMT",
"timesecs": 1588356818
},
"connecting_to": {
"host": "2001:1:1:1:0:0001:0001:0001",
"port": 22001
},
"cookie": "vqbvzrztcokczyyg45sue2a3mjndzxr3thvd",
"tcp_mss": 1400,
"sock_bufsize": 33554432,
"sndbuf_actual": 33554432,
"rcvbuf_actual": 33554432,
"test_start": {
"protocol": "TCP",
"num_streams": 1,
"blksize": 262144,
"omit": 0,
"duration": 0,
"bytes": 0,
"blocks": 4,
"reverse": 0,
"tos": 0
}
},
"intervals": [{
"streams": [{
"socket": 6,
"start": 0,
"end": 1.0000619888305664,
"seconds": 1.0000619888305664,
"bytes": 524288,
"bits_per_second": 4194044.0161160971,
"retransmits": 2,
"snd_cwnd": 19432,
"rtt": 471866,
"rttvar": 246835,
"pmtu": 1500,
"omitted": false
}],
"sum": {
"start": 0,
"end": 1.0000619888305664,
"seconds": 1.0000619888305664,
"bytes": 524288,
"bits_per_second": 4194044.0161160971,
"retransmits": 2,
"omitted": false
}
}, {
"streams": [{
"socket": 6,
"start": 1.0000619888305664,
"end": 1.5732829570770264,
"seconds": 0.57322096824646,
"bytes": 524288,
"bits_per_second": 7317080.5541723184,
"retransmits": 2,
"snd_cwnd": 13880,
"rtt": 800058,
"rttvar": 490532,
"pmtu": 1500,
"omitted": false
}],
"sum": {
"start": 1.0000619888305664,
"end": 1.5732829570770264,
"seconds": 0.57322096824646,
"bytes": 524288,
"bits_per_second": 7317080.5541723184,
"retransmits": 2,
"omitted": false
}
}],
"end": {
"streams": [{
"sender": {
"socket": 6,
"start": 0,
"end": 1.5732829570770264,
"seconds": 1.5732829570770264,
"bytes": 1048576,
"bits_per_second": 5331913.0943775307,
"retransmits": 4,
"max_snd_cwnd": 19432,
"max_rtt": 800058,
"min_rtt": 471866,
"mean_rtt": 635962
},
"receiver": {
"socket": 6,
"start": 0,
"end": 3.099092960357666,
"seconds": 1.5732829570770264,
"bytes": 29148,
"bits_per_second": 75242.660669684541
}
}],
"sum_sent": {
"start": 0,
"end": 1.5732829570770264,
"seconds": 1.5732829570770264,
"bytes": 1048576,
"bits_per_second": 5331913.0943775307,
"retransmits": 4
},
"sum_received": {
"start": 0,
"end": 3.099092960357666,
"seconds": 3.099092960357666,
"bytes": 29148,
"bits_per_second": 75242.660669684541
},
"cpu_utilization_percent": {
"host_total": 15.396905666723878,
"host_user": 5.0539797696817077,
"host_system": 10.343012292320152,
"remote_total": 0.0042643816737899364,
"remote_user": 0.004261896602884464,
"remote_system": 0
},
"sender_tcp_congestion": "cubic",
"receiver_tcp_congestion": "cubic"
}
}
Здесь, на стороне клиента, я вижу sum_sent bytes = 1048576 bytes = 1 MB и sum_recevied = 29148 байт данных.
Итак, ясно, что 1 МБ данных отправляется на сервер от клиента. но в отчете на стороне сервера я не вижу, сколько данных было получено. Как указано в отчете на стороне сервера, sub_recceive было равно 0.
С другой стороны, в отчете на стороне сервера говорится, что данные в 0 байт были отправлены клиенту, а в отчете клиента указано, что было получено 29148 байт.
Я в полном беспорядке, чтобы понять формат отчета. Означает ли это, что сервер не получает полные данные от клиента?