Switching Hub - LSW10/100-8HW

索引へ戻る
  1. 100Base-TXでのパケットロス - Packet loss on 100Base-TX
  2. LSW10/100-8HWスイッチングHub - LSW10/100-8HW Switching Hub
  3. Performance test again

1. 100Base-TXでのパケットロス - Packet loss on 100Base-TX

ようやく100Base-TXにしてみたもののnfsで見てみると、 12-13Mbps程度で、10Base-Tの時の2.4倍ぐらいにしかならなかったことは、10Base-Tと100Base-TXの速度比較 - Comparison between 10Base-T & 100Base-TX in speedに書いた通りです。これを解決するためにswitching hubを替えてみました。以下にその経緯を記します。
まず、linuxppc-jpで訊いてみたところ、Netperfを試してみてはどうかと、ネットワークの達人花井さんよりアドバイスを頂きました。さらに、松浦さんが提供して下さったパッチを基に私の環境に合わせて下記のようなパッチを作りました。

netperf.makefile.patch
--- makefile.orig	Tue Jun  5 22:48:56 2001
+++ makefile	Tue Jun  5 22:48:56 2001
@@ -15,8 +15,8 @@
 # for the rest of the world, it is probably better to put the binaries
 # in /usr/local/netperf or /opt/netperf
 #
-#NETPERF_HOME = /usr/local/netperf
-NETPERF_HOME = /opt/netperf
+NETPERF_HOME = /usr/local/netperf
+#NETPERF_HOME = /opt/netperf
 
 # The compiler on your system might be somewhere else, and/or have
 # a different name.
@@ -85,7 +85,8 @@
 #               sending data using sendfile() instead of send().
 
 LOG_FILE=DEBUG_LOG_FILE="\"/tmp/netperf.debug\""
-CFLAGS = -Ae -O -D$(LOG_FILE) -DUSE_PSTAT -DHAVE_SENDFILE
+#CFLAGS = -Ae -O -D$(LOG_FILE) -DUSE_PSTAT -DHAVE_SENDFILE
+CFLAGS = -O -D$(LOG_FILE) -DHAVE_SENDFILE
 
 # Some platforms, and some options, require additional libraries.
 # you can add to the "LIBS =" line to accomplish this. if you find

このパッチを当ててnetperfをコンパイルして試してみました。

Powermac8500/120 (rtl8139c)
   ↓
switching hub (D-PSW08N (Laneed))
   ↓
iMac revB (BMAC+)

$ /usr/local/netperf/netperf -f M -H iMac
TCP STREAM TEST to Foundation
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    MBytes/sec  

 87380  16384  16384    10.01       5.21   

iMac revB (BMAC+)
   ↓
switching hub (D-PSW08N (Laneed))
   ↓
Powermac8500/120 (rtl8139c)

$ /usr/local/netperf/netperf -f M -H PM8500
TCP STREAM TEST to Hyperion
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    MBytes/sec  

 87380  16384  16384    10.07       0.26   

と言う訳で、8500/120 → iMac はそれなりですが、その逆は20倍以上遅いです。netperfをやった後に、iMac revBでifconfigしてみると、

$ /sbin/ifconfig -a
eth0      Link encap:Ethernet  HWaddr 00:05:02:2B:F7:1E  
          inet addr:192.168.10.11  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:133121 errors:2 dropped:0 overruns:0 frame:0
          TX packets:69986 errors:1331 dropped:0 overruns:1330 carrier:0
          collisions:0 

と、かなりパケットがエラーになってます。 8500/120では、

$ /sbin/ifconfig -a
eth1      Link encap:Ethernet  HWaddr 00:90:FE:21:D2:A3  
          inet addr:192.168.10.10  Bcast:192.168.10.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:68794 errors:0 dropped:0 overruns:0 frame:0
          TX packets:133247 errors:0 dropped:0 overruns:6 carrier:0
          collisions:0 

と、いい感じです。ネットを探ってみてもあまり良い情報は見つけられませんでした。linuxppc-jpで花井さんより、switching hubを替えるしかないのでは、との助言を頂き、遂に新規購入を決心しました。

トップへ戻る

2. LSW10/100-8HWスイッチングHub - LSW10/100-8HW Switching Hub

ネットで色々調べた結果、花井さんが指摘してくださったように、手動で10-100M、half-full duplexの設定が可能なメルコのswitching hub (LSW10/100-8HW)に決めました。近所にこの製品を販売している所が無く下記のサイトより購入しました。

10/100MスイッチングHub 8ポートハイエンドモデル メルコ [NTT-X Store]

待つこと10日、ハブが届くなり、荷を解くのももどかしく、即、接続してみました。各種設定を試した後、PM8500-hub, iMac-hubともに、手動で100M、half duplexに設定しておくのが最善と判明しました。以下に、再設定後のnetperfの結果を記しておきます。

$ /usr/local/netperf/netperf -f M -H iMac
TCP STREAM TEST to Foundation
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    MBytes/sec  

 87380  16384  16384    10.00       5.44  


  $ ./netperf -f M -H PM8500
TCP STREAM TEST to Hyperion
Recv   Send    Send                          
Socket Socket  Message  Elapsed              
Size   Size    Size     Time     Throughput  
bytes  bytes   bytes    secs.    MBytes/sec  

 87380  16384  16384    10.00       5.72   

御覧のように、iMac → 8500/120 の方が 8500/120 → iMac より速いぐらいになりました。(^o^) そこで、nfsも速くなってないかなと期待しつつ、、NFSの最適化 - Optimizing NFS performance で書いたのと同じ方法で測定してLaneedのswitching hub (autonegotiation)と比較してみると..........

NFS Performance of different type of switching hub on 100Base-TX
Switching Hubrsize & wsizewrite time (sec)write speedread timeread speed
LD-PSW08N (autonegotiation)16384 bytes2m30.618s1.7MBytes/sec2m36.836s1.63MBytes/sec
LSW10/100-8HW (manual setting: 100M half duplex)16384 bytes2m14.294s1.9MBytes/sec2m35.062s1.65MBytes/sec

なんか、あんまり変わってないですねえ (ToT)。 ま、netperfで見ているのはTCPで、こっちはnfsなわけで、片方の改善がそのまま反映されなくても当然なんでしょうが。hard diskの性能やら、bus speedの問題などいろんな因子があるので簡単に改善はしてくれない様です。一番手っ取り早いのは、最新機種に買い替える事だったりして....(^^;;;;

トップへ戻る

3. Performance test again

上記の件に関して、花井さんより、”netperfはUDPのperformanceも知らべられるんではなかったか”との御指摘を受けました。で、全くその通りです。(^^;;;;;;; ドキュメントを読まずにやった事がまる分かりです。NFSは下位にUDP(user protocol datagram)を使用していますから当然こちらを調べないといけません。そこで、改めて Netperf Training を読みなおしてやってみました。

iMac revB → PM8500/120

$ /usr/local/netperf/netperf -H PM8500 -t UDP_STREAM -- -m 1024 
UDP UNIDIRECTIONAL SEND TEST to PM8500
Socket  Message  Elapsed      Messages                
Size    Size     Time         Okay Errors   Throughput
bytes   bytes    secs            #      #   10^6bits/sec

 65535    1024   9.99        68044      0      55.78
 65535           9.99        24600             20.17

PM8500/120 → iMac revB

$ /usr/local/netperf/netperf -H Foundation -t UDP_STREAM -- -m 1024 
UDP UNIDIRECTIONAL SEND TEST to iMac
Socket  Message  Elapsed      Messages                
Size    Size     Time         Okay Errors   Throughput
bytes   bytes    secs            #      #   10^6bits/sec

 65535    1024   9.99        61336      0      50.29
 65535           9.99        59223             48.56

上段がsend、下段がreceiveの結果ですが、御覧のように PM8500/120 → iMac の場合はsendとreceiveに大差が無いのですが、iMac → PM8500/120 になると2倍以上の開きが出て来ます。そこで、 Netperf Training を良く読んでみるとこうあります。

NOTE: UDP is an unreliable protocol. It is important that you examine the results carefully as the reported send rate can be much higher than the actual receive rate. Great care should be taken when reporting UDP_STREAM test results to make sure they are not misleading. For example, one should always report both send and receive rates together for a UDP_STREAM test. If you are going to report a single number, you should report the receive rate.

と言う事は、iMac revBのUDPのperformanceは20 Mbpsということになります。ってことは、2.5 Mbytes/secということです。さらに、、花井さんより、”ハードディスクのパフォーマンスはどうか”との御指摘も受けました。そこで、Hard Diskのperformanceをチェックしてみると、

PM8500/120

# /sbin/hdparm -tT /dev/sdc

/dev/sdc:
 Timing buffer-cache reads:   128 MB in  4.77 seconds = 26.83 MB/sec
 Timing buffered disk reads:  64 MB in 26.05 seconds =  2.46 MB/sec

iMac revB

# /sbin/hdparm -tT /dev/hda

/dev/hda:
 Timing buffer-cache reads:   64 MB in  1.03 seconds =62.14 MB/sec
 Timing buffered disk reads:  32 MB in  3.31 seconds = 9.67 MB/sec

つまり、あらかじめcacheされてなければ、disk read speedは、PM8500ではほぼ2.5 Mbytes/secとなり、iMac → PM8500/120 のUDPと良く一致します。iMac revBでは、9.67 × 8 = 約77 (Mbps)と、 PM8500/120 → iMac のUDPの値(49Mbps)よりかなり大きめですね。

以上の結果から考えると、結局、ボトルネックはHard Diskのperformanceであり、約2Mbytes/sec足らずというNFSのパフォーマンスは妥当なものに思えて来ました。うーーむ、泰山鳴動して鼠一匹だったな........... (^^;;;;;;;;;


索引へ戻る