ベンチマーク


OpenSSL Benchmarks

測定方法

0.まずルーターにDD-WRTまたはOpenWrtをインストールし、作業用PCでルーターにsshで接続します。
1.ルーターにopenssl-utilsをインストールします。(必要な空き容量は790KiB程度)
opkg install openssl-util
2.もしも空き容量が足らない場合はメモリ上に展開します。当然ですが、この場合はルーターを再起動するとメモリ上のopenssl-utilが消えます。
opkg install openssl-util -d ram
export PATH=$PATH:/tmp/usr/bin/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/tmp/usr/lib/
3.sshで繋がったPC上で以下のコマンドを実行します。コピペで問題ありません。むしろコピペでお願いします。
openssl speed md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048 | tee /tmp/sslspeed
echo "|" `awk 'match($0,/r[0-9]+/) {print substr($0,RSTART,RLENGTH)}' /etc/banner` `awk -v FS=": " -v ORS="" '/(Processor|Hardware|machine|cpu model|system type)/ { print "| " $2 " " } /(BogoMIPS)/ { print "| Clock | Core | Thread | " $2 " " }' /proc/cpuinfo` `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " | ";b=""}' /tmp/sslspeed | sed 's/\.\(..\)k/\10/g'`
4.コマンドを実行して帰ってきた結果がwiki編集用のソースになっていますので、そのままwiki編集ページに貼り付けてください。
ただし、Openssl Versionより左は行が2行分追加の必要があったり、内容が正しくないことがあるので、手で修正する必要があります
→一部修正しました。依然としてClock・コア数・スレッド数は手入力が必要です。(コア数は grep -ce '^processor\s\+:' /proc/cpuinfoで取得できますが、他の2つは単純なコマンドでは難しそうなので、型番でネット検索したほうが早いかもしれません)
5.openssl-utilが不要な場合はアンインストールします。必要ならば依存パッケージ( libopenssl と zlib )も削除して構いません。
opkg remove openssl-util libopenssl zlib
+3.の改良前スクリプト(参考)
echo "|" `awk 'match($0,/r[0-9]+/) {print substr($0,RSTART,RLENGTH)}' /etc/banner` `awk -v FS=": " -v ORS="" '/(Processor|BogoMIPS|Hardware|machine|cpu model|system type)/ { print "| " $2 " " } END { print "" }' /proc/cpuinfo` `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ {print b " " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed | sed 's/\.\(..\)k/\10/g'`

-試験運用中
2021/01/31追記
シングルコア機(WHR-300HP2)では以下のコードで正確に出力されました。本家wikiに載っているコードとコメント欄のコードのハイブリッドです。
2コア以上で動いたらコメント欄に報告ください。本文を書き換えます。(ただしDD-WRTでは動きません)
1行目はopensslを実行して結果を/tmp/sslspeedというファイルに出力するコードなので2回以上実行する必要はありません。
openssl speed md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048 | tee /tmp/sslspeed
. /etc/openwrt_release; echo \
$(awk -v "FS=: " -v "ORS=" -v "rev=${DISTRIB_REVISION%%-*}" ' BEGIN {print "|" rev} \
/(Processor|Hardware|machine|cpu model|system type)/ {print "| " $2 " "} ' /proc/cpuinfo) \
"| "$(dmesg | awk -v FS=": " '/(CPU Clock|CPU clock)/ {print $2 }' | head -1) \
"| "$(grep core /proc/cpuinfo | uniq | wc -l) \
"| "$(grep processor /proc/cpuinfo | wc -l) \
"| "$(grep BogoMIPS /proc/cpuinfo | cut -d":" -f2) \
$(awk -v "ORS=" -e '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ \
{print " " $5 " |"} $1 ~ /(des|aes)/ {b = b " " $6 " |"} $1 ~ /(rsa|dsa)/ \
{print b " " $6 " | " $7 " | ";b=""}' /tmp/sslspeed \
| sed -e 's/\.\(..\)k/\10/g')
■出力例(WHR-300HP2)■
|r11278| MediaTek MT7620A ver:2 eco:3 | Buffalo WHR-300HP2 | MIPS 24KEc V5.0 | 580MHz | 1 | 1 |  385.84 | 1.1.1i | 49670510 | 31582890 | 13879980 | 4344980 | 4499440 | 1585830 | 8080040 | 6972760 | 6132050 | 6.5 | 247.3 | 18.5 | 19.2 |

ベンチマークの見方

  • MD5以降の13項目がルーターの様々な演算速度をスコア化したもので、一般に数値が大きい方が処理速度が早いと言えます。
  • 表の通りスコアはクロック数に依存する部分が大きいので、機種間で比較は同一クロック数の機種同士でないとほとんど参考になりません。
  • ルーターに限らずコンピューターには色々な用途があり、処理ごとに求められる性能も異なり、さらに特定の処理だけ、高速処理するハードウエアモジュールが組み込まれている場合もあり、このベンチマークの単純な数値比較だけで優劣は決まりません。


OS SoC Device CPU Clock Core Thread BogoMIPS OpenSSL Version MD5 SHA-1 SHA-256 SHA-512 DES 3DES AES-128 AES-192 AES-256 RSA Sign RSA Verify DSA Sign DSA Verify
LEDE r3560 (17.01.4) Atheros AR7242 rev 1 Buffalo WZR-HP-G302N MIPS 24Kc V7.4 400MHz 1 1 265.42 1.0.2m 21535960 18603240 9696490 2984330 3178170 1134930 5429600 4701840 4147030 4.5 170.2 15 13.6
LEDE r3560 (17.01.4) Atheros AR7161 rev 2 Buffalo WZR-HP-AG300H MIPS 24Kc V7.4 680MHz 1 1 452.19 1.0.2m 36472960 31762900 16491880 5065730 5407680 1932630 9235860 7981060 7055330 7.6 290.4 25.6 22.9
LEDE r3560 (17.01.4) MediaTek MT7620A ver:2 eco:6 Buffalo WHR-1166DHP2 MIPS 24KEc V5.0 580MHz 1 1 385.84 1.0.2m 42023170 29289820 13845160 4317530 4675240 1657170 7856470 6804480 6001320 6.5 248.3 21.8 19.7
LEDE r3560 (17.01.4) MediaTek MT7621 ver:1 eco:3 Buffalo WSR-1166DHP MIPS 1004Kc V2.15 880MHz 2 2 584.9 1.0.2m 61915260 43607430 20984520 6569300 7080910 2516990 11872960 10285250 9106770 9.8 374.4 32.8 29.3
LEDE r3560 (17.01.4) Broadcom BCM4708A0 Netgear R6300 V2 ARMv7 Processor rev 0 (v7l) 800MHz 2 1 1594.16 1.0.2m 89318310 51329280 33426970 14754820 9872240 3534330 23390070 20470130 18075470 21.7 836.7 74.6 69.4
DD-WRT v3.0-r43306 Broadcom BCM4708A0 Buffalo WZR-1750DHP2 ARMv7 Processor rev 0 (v7l) 0.8 GHz 2 1 1594.16 1.1.1g 98025660 54619400 35593900 14639460 9720150 3535370 26211990 22703590 18920190 21.5 832.7 62.8 68.7
DD-WRT v3.0-r39296 Broadcom BCM4709A0 Buffalo WXR-1900DHP ARMv7 Processor rev 0 (v7l) 1 GHz 2 1 1993.93 1.1.1b 121496750 68163930 44643000 18453850 12166210 4266780 32805670 28369560 24634170 26.7 1041.5 78.6 84.7
Attitude Adjustment r36088 (12.09) Qualcomm Atheros IPQ8064 Sitecom Greyhound AC2600 ARMv7 Processor rev 0 (v7l) 1.4 GHz 4 1 12.56 1.0.2a 97386220 38651060 31463530 12692390 14909440 5584660 28132830 24241260 21118510 21.2 755.7 73.8 60.2
Attitude Adjustment r36088 (12.09) Broadcom BCM2835 (BCM2708) Raspberry Pi Model B ARM1176JZF-S 700 MHz 1 1 697.95 1.0.1e 13225220 4608750 2451050 1546240 2159960 790190 2747390 2405380 2143570 1.7 58.2 5.8 4.7
r44379 Broadcom BCM2836 (BCM2709) Raspberry PI 2 Model B ARMv7 Processor rev 5 (v7l) 900 MHz 4 1 38.4 1.0.2 39024980 11390630 8862380 3876520 5043200 1778690 7845210 6810970 6017370 10.2 371.2 36.2 29.8
r10121 Broadcom BCM2837B0 (BCM2710) Raspberry Pi 3 B+ 1.4GHz 64-bit 4 core ARM Cortex A53 1.4 GHz 4 1 38.40 1.1.1c 145304580 157944490 84888230 122887510 18443260 6412160 36699140 31600980 28309160 127.3 4667.8 345.2 386.8
r11063 MediaTek MT7620A ver:2 eco:3 Buffalo WHR-300HP2 MIPS 24KEc V5.0 580MHz 1 1 385.84 1.1.1g 48408180 31015450 13766570 4334360 4498040 1582590 7960680 6926400 6089640 6.5 242.0 18.3 19.0
r11257 Qualcomm Atheros QCA9558 ver 1 rev 0 Buffalo BHR-4GRV2 MIPS 74Kc V5.0 720MHz 1 1 358.80 1.1.1i 63650130 42940070 19438880 6060370 6441640 2294440 12502730 10804220 9587240 8.4 449.8 34.4 36.4
r11257 MediaTek MT7621 ver:1 eco:3 ELECOM WRC-2533GST MIPS 1004Kc V2.15 Clock Core Thread 584.90 1.1.1i 75013270 47862640 21029760 6569930 6817590 2414050 12123680 10472360 9223820 9.8 373.5 28.0 29.0
r0+15411
(fork自ビルド)
Qualcomm Atheros QCA956X ver 1 rev 0 ELECOM WRC-300GHBK2-I MIPS 74Kc V5.0 Clock 1 1 385.02 1.1.1i 68991230 46542180 20937340 6519130 6956690 2479180 13585640 11752450 10411240 12.1 496.4 37.1 39.0
r11257 Atheros AR7242 rev 1 Buffalo BHR-4GRV MIPS 24Kc V7.4 400MHz 1 1 265.42 1.1.1i 32623270 22580570 9682940 3023870 3067220 1096950 5568850 4805290 4224000 4.5 170.3 12.8 13.2
r7976 Atheros AR7242 rev 1 Buffalo WZR-HP-G450H MIPS 24Kc V7.4 400MHz 1 1 265.42 1.0.2u 23364330 18401140 9617240 3059560 3215080 1135800 5602690 4808240 4199790 4.5 168.8 12.8 13.4
r7989 Atheros AR9344 rev 2 NETGEAR WNDR4300 MIPS 74Kc V4.12 560MHz 1 1 278.93 1.0.2u 37079770 29768040 15013160 4696990 5042390 1777740 9600910 8332850 7301720 9.0 353.3 26.6 28.2
r11306 MediaTek MT7620A ver:2 eco:6 Buffalo WHR-1166DHP MIPS 24KEc V5.0 580MHz 1 1 385.84 1.1.1k 49615770 31043110 13869820 4345530 4485470 1581900 8098490 6692380 6184610 6.4 228.3 17.2 18.3
r17637 MediaTek MT7622BV Linksys E8450 (UBI) ARMv8 Processor rev 4 1350MHz 2 1 25.00 1.1.1l 140873390 513329490 493516460 119374430 16394620 5668180 38510930 34313560 30514520 123.3 4516.0 335.4 359.3
r16279 MediaTek MT7621 ver:1 eco:3 Buffalo WSR-2533DHPL MIPS 1004Kc V2.15 880MHz 2 1 581.63 1.1.1l 74593470 47748780 20920560 6554970 6786300 2409130 12041560 10370980 9140480 9.7 371.7 27.9 28.9



Open vSwitch Latency Benchmarks

  • openvswitch-benchmarkに含まれるovs-benchmark latencyによる測定
OS SoC Device CPU Clock Core Thread Ethernet Min Max Avg Option 対向Device 対向OS
LEDE r3560 (17.01.4) Atheros AR7242 rev 1 Buffalo WZR-HP-G302N MIPS 24Kc V7.4 400MHz 1 1 1G 62 ms 99 ms 81 ms -r $IP Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) Atheros AR7161 rev 2 Buffalo WZR-HP-AG300H MIPS 24Kc V7.4 680MHz 1 1 1G 39 ms 68 ms 54 ms -r $IP Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) MediaTek MT7620A ver:2 eco:6 Buffalo WHR-1166DHP2 MIPS 24KEc V5.0 580MHz 1 1 100M 52 ms 82 ms 67 ms -r $IP Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) MediaTek MT7621 ver:1 eco:3 Buffalo WSR-1166DHP MIPS 1004Kc V2.15 880MHz 2 2 1G 16 ms 28 ms 22 ms -r $IP Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) Broadcom BCM4708A0 Netgear R6300 V2 ARMv7 Processor rev 0 (v7l) 800MHz 2 1 1G 20 ms 38 ms 29 ms -r $IP Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL

Open vSwitch Rate Benchmarks

  • openvswitch-benchmarkに含まれるovs-benchmark rateによる測定
OS SoC Device CPU Clock Core Thread Ethernet 1s Avg 2s Avg 3s Avg 4s Avg 5s Avg Option 対向Device 対向OS
LEDE r3560 (17.01.4) Atheros AR7242 rev 1 Buffalo WZR-HP-G302N MIPS 24Kc V7.4 400MHz 1 1 1G 1100.0/s 1092.4/s 1081.6/s 1084.8/s 1086.5/s -r $IP -T 5 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) Atheros AR7161 rev 2 Buffalo WZR-HP-AG300H MIPS 24Kc V7.4 680MHz 1 1 1G 1673.9/s 1603.6/s 1609.0/s 1614.2/s 1615.6/s -r $IP -T 5 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) MediaTek MT7620A ver:2 eco:6 Buffalo WHR-1166DHP2 MIPS 24KEc V5.0 580MHz 1 1 100M 1316.3/s 1302.0/s 1317.2/s 1321.8/s 1324.3/s -r $IP -T 5 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) MediaTek MT7621 ver:1 eco:3 Buffalo WSR-1166DHP MIPS 1004Kc V2.15 880MHz 2 2 1G 3729.1/s 3851.0/s 3825.5/s 3558.0/s 3409.1/s -r $IP -T 5 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) Broadcom BCM4708A0 Netgear R6300 V2 ARMv7 Processor rev 0 (v7l) 800MHz 2 1 1G 2888.5/s 3220.5/s 3416.2/s 3449.3/s 3398.4/s -r $IP -T 5 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL

IPerf3 Benchmarks

  • iperf3による測定
OS SoC Device CPU Clock Core Thread Ethernet Sender Receiver Option 対向Device 対向OS
LEDE r3560 (17.01.4) Atheros AR7242 rev 1 Buffalo WZR-HP-G302N MIPS 24Kc V7.4 400MHz 1 1 1G 103 Mbits/sec 103 Mbits/sec -c $IP -P 4 -i 1 -w 5M -f m -O 1 -t 10 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) Atheros AR7161 rev 2 Buffalo WZR-HP-AG300H MIPS 24Kc V7.4 680MHz 1 1 1G 156 Mbits/sec 159 Mbits/sec -c $IP -P 4 -i 1 -w 5M -f m -O 1 -t 10 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) MediaTek MT7620A ver:2 eco:6 Buffalo WHR-1166DHP2 MIPS 24KEc V5.0 580MHz 1 1 100M 95.2 Mbits/sec 95.4 Mbits/sec -c $IP -P 4 -i 1 -w 5M -f m -O 1 -t 10 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) MediaTek MT7621 ver:1 eco:3 Buffalo WSR-1166DHP MIPS 1004Kc V2.15 880MHz 2 2 1G 763 Mbits/sec 765 Mbits/sec -c $IP -P 4 -i 1 -w 5M -f m -O 1 -t 10 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL
LEDE r3560 (17.01.4) Broadcom BCM4708A0 Netgear R6300 V2 ARMv7 Processor rev 0 (v7l) 800MHz 2 1 1G 367 Mbits/sec 370 Mbits/sec -c $IP -P 4 -i 1 -w 5M -f m -O 1 -t 10 Intel 82579V Ubuntu 16.04 LTS(xenial) on WSL

参考スクリプト

  • 機器(無線LANは止めておく方が望ましい)のLAN側とPCを有線LAN接続し、対向PCでovs-benchmark listenとiperf3 -sを起動しておく(必要に応じてファイアウォール無効化)。対象機器の再起動後sshでログインして下記をbench.shとして保存、./bench.sh&exitして放置(約3分半)。
#!/bin/sh
MACHINE=`uname -n`
IP=`cat /proc/net/arp | grep br-lan | sed 's/ .*//'`
echo "*** dmesg ***" > /tmp/$MACHINE.txt
dmesg >> /tmp/$MACHINE.txt
echo >> /tmp/$MACHINE.txt
echo "*** cpuinfo ***" >> /tmp/$MACHINE.txt
cat /proc/cpuinfo >> /tmp/$MACHINE.txt
echo >> /tmp/$MACHINE.txt
echo "*** openssl speed ***" >> /tmp/$MACHINE.txt
openssl speed md5 sha1 sha256 sha512 des des-ede3 aes-128-cbc aes-192-cbc aes-256-cbc rsa2048 dsa2048 | tee /tmp/sslspeed
echo "|" `awk 'match($0,/r[0-9]+/) {print substr($0,RSTART,RLENGTH)}' /etc/banner` `awk -v FS=": " -v ORS="" '/(Processor|BogoMIPS|Hardware|machine|cpu model|system type)/ { print "| " $2 " " } END { print "" }' /proc/cpuinfo` `awk -v ORS="" '$1 ~ /OpenSSL/ {print "| " $2 " |"} $1 ~ /(md5|sha)/ {print "  " $5 " |"} $1 ~ /(des|aes)/ {b = b "  " $6 " |"} $1 ~ /(rsa|dsa)/ {print b "  " $6 " | " $7 " ";b=""} END { print "|" }' /tmp/sslspeed | sed 's/\.\(..\)k/\10/g'` >> /tmp/$MACHINE.txt
echo >> /tmp/$MACHINE.txt
echo "*** ovs-benchmark latency ***" >> /tmp/$MACHINE.txt
ovs-benchmark -r $IP latency >> /tmp/$MACHINE.txt
echo >> /tmp/$MACHINE.txt
echo "*** ovs-benchmark rate ***" >> /tmp/$MACHINE.txt
ovs-benchmark -r $IP -T 5 rate >> /tmp/$MACHINE.txt
echo >> /tmp/$MACHINE.txt
echo "*** iperf3 ***" >> /tmp/$MACHINE.txt
iperf3 -c $IP -P 4 -i 1 -w 5M -f m -O 1 -t 10 >> /tmp/$MACHINE.txt

コメント

  • 「OpenSSL Benchmarks」は参考ページを元に翻訳して表の整理しました。
    「Open vSwitch Latency Benchmarks」「Open vSwitch Rate Benchmarks」「IPerf3 Benchmarks」「参考スクリプト」
    の項目は説明が見当たらなかったので表の整理だけしました。 -- 名無しさん (2020-06-21 14:33:14)
  • ssl測定後のソース編集スクリプトを修正。まだ修正の余地はあるので、OpenWrt上でClock/コア数/スレッド数を取得できるコマンドを知っている人がいたら教えてください。 -- 名無しさん (2020-06-30 **:**:**)
  • シングルコア機の結果なので怪しいですがこんな感じで値は取れそうです。
    Clock dmesg | grep "CPU clock" | sed 's/^.* \([0-9]*\)\.0*/\1/g'
    コア数 grep core /proc/cpuinfo | uniq | wc -l
    スレッド数 grep processor /proc/cpuinfo | wc -l
    コアかスレッドのどちらか dmesg | grep CPUs= | sed 's/^.*CPUs=\([0-9]*\).*/\1/g' -- 名無しさん (2021-01-05 23:42:26)
名前:
コメント:
最終更新:2021年10月01日 23:47