netperf测试性能
###################################################
# 文件:NetperfDemo+tcpdump.sh
# 作者:xxxxx
# 日期:2022.04.19
# 版本:V1.1
# 功能:网卡性能测试TCP、UDP的吞吐+时延
###################################################
#!/bin/sh
echo "--***当前脚本执行路径作为测试结果输出路径***--"
echo "--***请保证输入输出路径在当前用户下可以读写***--"
echo "-----请保证当前环境支持python3以及库xlsxwriter-----"
sleep 1
path="$(eval pwd)"/
dumpint=p1p1
while true
do
read -p "请输入 netserverIP:" ip
result=`echo $ip | grep '^[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}$'`
echo $result
if [[ "$result" == "" ]]
then
echo "ip输入格式有误,请重新输入ip"
else
break
fi
done
read -p "请输入 执行次数:" times
echo "-**- netserverIP = $ip;执行次数:$times;执行路径:$path -**-"
while true
do
read -p "是否设置环境变量LD_PRELOAD=libyusur_socket.so?(yes/no):" LD_P
if [ "${LD_P}" == "yes" ] || [ "${LD_P}" == "y" ]
then
setenv="LD_PRELOAD=libyusur_socket.so "
break
elif [ "${LD_P}" == "no" ] || [ "${LD_P}" == "n" ]
then
setenv=" "
break
else
echo "请输入 yes/no 或者 y/n !"
fi
done
# #提取关键字段
# s0="15."
# s1="10."
#初始化结果记录文件名称
#rfileTCP[0]="TCP时延.txt"
rfileTCP[0]="TCP吞吐.txt"
#rfileUDP[0]="UDP时延.txt"
rfileUDP[0]="UDP吞吐.txt"
#命令数组 对应循环参数 i
#netperfTCP[0]="taskset -c 1,2,3 netperf -t TCP_RR -H $ip -l 30 -- -r"
netperfTCP[0]="taskset -c 1,2,3 netperf -t TCP_STREAM -H $ip -l 30 -- -m"
#netperfUDP[0]="taskset -c 1,2,3 netperf -t UDP_RR -H $ip -l 30 -- -r"
netperfUDP[0]="taskset -c 1,2,3 netperf -t UDP_STREAM -H $ip -l 30 -- -m"
#testnameTCP[0]="TCP时延"
testnameTCP[0]="TCP吞吐"
#testnameUDP[0]="UDP时延"
testnameUDP[0]="UDP吞吐"
#字节数组 对应循环参数 j
bytesTCP=(16 32 64 128 256 512 1024 1460)
bytesUDP=(16 32 64 128 256 512 1024 1472)
# bytesTCP=(16 32 64 128 256 512 1024 1460 2048 4096 16384 65536)
# bytesUDP=(16 32 64 128 256 512 1024 1472 2048 4096 16384)
echo "Test Begin $data"
rm -f *.txt
rm -f *.xlsx
for ((i=0;i<${#netperfTCP[@]};i++));do #i对应测试命令/结果记录文件,当前设置了2条命令
#记录文件检索是否存在,不存在则创建
if [ -f "$path${rfileTCP[$i]}" ];then
echo "$path${rfileTCP[$i]}文件已存在"
else
echo "$path${rfileTCP[$i]}文件不存在,已新建"
touch $path${rfileTCP[$i]}
fi
eval "date >> $path${rfileTCP[$i]}"
eval "echo >> $path${rfileTCP[$i]}"
eval "echo "----------${testnameTCP[$i]}----------" >> $path${rfileTCP[$i]}"
for ((j=0;j<${#bytesTCP[*]};j++));do #j对应数组bytes
eval "echo "------bytesTCP=${bytesTCP[$j]}------" >> $path${rfileTCP[$i]}"
for ((k=0;k<$times;k++));do #每项测试执行N次取平均值
t=`expr $k + 1`
eval "echo "----Times=$t----" >> $path${rfileTCP[$i]}"
#dumpfile="TCPlatency_"${bytesTCP[$j]}"_"$k".pcap"
eval "${setenv} ${netperfTCP[$i]} ${bytesTCP[$j]} >> $path${rfileTCP[$i]}"
# for ((r=0;r<2;r++));do
# {
# if [ $r -eq 0 ] && [ $i -eq 0 ];then
# #eval "tcpdump -i $dumpint -c 3000 -w $dumpfile"
# echo $dumpfile
# elif [ $r -eq 1 ];then
# eval "${setenv} ${netperfTCP[$i]} ${bytesTCP[$j]} >> $path${rfileTCP[$i]}"
# else
# continue
# fi
# }&
# done
wait
sleep 1
eval "echo >> $path${rfileTCP[$i]}"
done
eval "echo "----------END----------">> $path${rfileTCP[$i]}"
eval "echo >> $path${rfileTCP[$i]}"
done
OutputFile=$path${testnameTCP[$i]}"extract.txt"
#cat $path${rfileTCP[$i]}| grep "^ *[[:digit:]]"|grep $s1|awk '{if(NF>4) print $NF}' >> $OutputFile
cat $path${rfileTCP[$i]}| grep "^ *[[:digit:]]"|awk '{if(NF>4) print $NF}' >> $OutputFile
done
for ((i=0;i<${#netperfUDP[@]};i++));do #i对应测试命令/结果记录文件,当前设置了2条命令
#记录文件检索是否存在,不存在则创建
if [ -f "$path${rfileUDP[$i]}" ];then
echo "$path${rfileUDP[$i]}文件已存在"
else
echo "$path${rfileUDP[$i]}文件不存在,已新建"
touch $path${rfileUDP[$i]}
fi
eval "date >> $path${rfileUDP[$i]}"
eval "echo >> $path${rfileUDP[$i]}"
eval "echo "----------${testnameUDP[$i]}----------" >> $path${rfileUDP[$i]}"
for ((j=0;j<${#bytesUDP[*]};j++));do #j对应数组bytes
eval "echo "------bytesUDP=${bytesUDP[$j]}------" >> $path${rfileUDP[$i]}"
for ((k=0;k<$times;k++));do #每项测试执行N次取平均值
t=`expr $k + 1`
eval "echo "----Times=$t----" >> $path${rfileUDP[$i]}"
#eval "${netperfUDP[$i]} ${bytes[$j]} >> $path${rfileUDP[$i]}"
# dumpfile="UDPlatency_"${bytesUDP[$j]}"_"$k".pcap"
# echo $dumpfile
# for ((r=0;r<2;r++));do
# {
# if [ $r -eq 0 ] && [ $i -eq 0 ];then
# eval "tcpdump -i $dumpint -c 3000 -w $dumpfile"
# elif [ $r -eq 1 ];then
eval "${setenv} ${netperfUDP[$i]} ${bytesUDP[$j]} >> $path${rfileUDP[$i]}"
# else
# continue
# fi
# }&
# done
wait
sleep 1
eval "echo >> $path${rfileUDP[$i]}"
done
eval "echo "----------END----------">> $path${rfileUDP[$i]}"
eval "echo >> $path${rfileUDP[$i]}"
done
#提取结果:
#if [ $i -eq 3 ];then
#cat $path${rfileUDP[$i]}| grep $s1 | awk '{print $2 "\t" $NF}' >> $path${rfileUDP[$i]}
#else
OutputFile=$path${testnameUDP[$i]}"extract.txt"
#cat $path${rfileUDP[$i]}| grep $s1 | awk '{print $NF}' >> $OutputFile
#cat $path${rfileUDP[$i]}| grep "^ *[[:digit:]]"|grep $s1| awk '{if(NF>4) print $NF}' >> $OutputFile
cat $path${rfileUDP[$i]}| grep "^ *[[:digit:]]"| awk '{if(NF>=4) print $NF}' >> $OutputFile
#fi
done
# sleep 2
##bytesTCP=$(echo ${bytesTCP[@]})#将数组转换为字符串传递给python脚本
##bytesUDP=$(echo ${bytesUDP[@]})
eval "python3.6 makeExcel.py $times $path "
#$bytesTCP $bytesUDP"
echo "Test End"
使用netperf工具测试DPU网卡极致性能
于 2022-10-13 14:19:47 首次发布
本文介绍了一个使用NetPerf工具进行网络性能测试的脚本。该脚本能够测试TCP及UDP的吞吐量,并通过多次执行获取平均值以提高准确性。此外,脚本还支持设置环境变量来调整测试行为。
782

被折叠的 条评论
为什么被折叠?



