SSブログ
エステ
他パフォーマンス改善 ブログトップ

e1000eドライバを新しく。 [他パフォーマンス改善]

intelのLinux用で新しいドライバがリリースされています。

更新してみましょう。


$ tar zxvf e1000e-1.1.2.1a.tar.gz

$ cd e1000e-1.1.2.1a/src/

# make install
Makefile:130: *** Compiler not found.  Stop.

ああ、そうでした。
開発環境は何も入れていませんでした(^^;)

というわけで、そっちがさきです。

# apt-get install build-essential

Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-2.6.31-14 linux-headers-2.6.31-14-server
Use 'apt-get autoremove' to remove them.
The following extra packages will be installed:
  binutils dpkg-dev fakeroot g++ g++-4.4 gcc gcc-4.4 libc-dev-bin libc6-dev libgomp1 libstdc++6-4.4-dev
  linux-libc-dev
Suggested packages:
  binutils-doc debian-keyring debian-maintainers g++-multilib g++-4.4-multilib gcc-4.4-doc
  libstdc++6-4.4-dbg gcc-multilib manpages-dev autoconf automake1.9 libtool flex bison gdb gcc-doc
  gcc-4.4-multilib libmudflap0-4.4-dev gcc-4.4-locales libgcc1-dbg libgomp1-dbg libmudflap0-dbg
  libcloog-ppl0 libppl-c2 libppl7 glibc-doc libstdc++6-4.4-doc
The following NEW packages will be installed:
  binutils build-essential dpkg-dev fakeroot g++ g++-4.4 gcc gcc-4.4 libc-dev-bin libc6-dev libgomp1
  libstdc++6-4.4-dev linux-libc-dev
0 upgraded, 13 newly installed, 0 to remove and 5 not upgraded.
Need to get 15.9MB of archives.
After this operation, 57.1MB of additional disk space will be used.
Do you want to continue [Y/n]? y
Get:1 http://jp.archive.ubuntu.com karmic-updates/main binutils 2.20-0ubuntu2 [1,661kB]
Get:2 http://jp.archive.ubuntu.com karmic-updates/main libc-dev-bin 2.10.1-0ubuntu16 [217kB]
Get:3 http://jp.archive.ubuntu.com karmic-updates/main linux-libc-dev 2.6.31-19.56 [743kB]
Get:4 http://jp.archive.ubuntu.com karmic-updates/main libc6-dev 2.10.1-0ubuntu16 [2,648kB]
Get:5 http://jp.archive.ubuntu.com karmic-updates/main libgomp1 4.4.1-4ubuntu9 [25.5kB]
Get:6 http://jp.archive.ubuntu.com karmic-updates/main gcc-4.4 4.4.1-4ubuntu9 [2,866kB]
Get:7 http://jp.archive.ubuntu.com karmic/main gcc 4:4.4.1-1ubuntu2 [5,074B]
Get:8 http://jp.archive.ubuntu.com karmic-updates/main libstdc++6-4.4-dev 4.4.1-4ubuntu9 [1,526kB]
Get:9 http://jp.archive.ubuntu.com karmic-updates/main g++-4.4 4.4.1-4ubuntu9 [5,502kB]
Get:10 http://jp.archive.ubuntu.com karmic/main g++ 4:4.4.1-1ubuntu2 [1,448B]                            
Get:11 http://jp.archive.ubuntu.com karmic/main dpkg-dev 1.15.4ubuntu2 [573kB]                           
Get:12 http://jp.archive.ubuntu.com karmic/main build-essential 11.4 [7,170B]                            
Get:13 http://jp.archive.ubuntu.com karmic/main fakeroot 1.12.4ubuntu1 [126kB]                           
Fetched 15.9MB in 6s (2,276kB/s)                                                                         
Selecting previously deselected package binutils.
(Reading database ... 78351 files and directories currently installed.)
Unpacking binutils (from .../binutils_2.20-0ubuntu2_amd64.deb) ...
Selecting previously deselected package libc-dev-bin.
Unpacking libc-dev-bin (from .../libc-dev-bin_2.10.1-0ubuntu16_amd64.deb) ...
Selecting previously deselected package linux-libc-dev.
Unpacking linux-libc-dev (from .../linux-libc-dev_2.6.31-19.56_amd64.deb) ...
Selecting previously deselected package libc6-dev.
Unpacking libc6-dev (from .../libc6-dev_2.10.1-0ubuntu16_amd64.deb) ...
Selecting previously deselected package libgomp1.
Unpacking libgomp1 (from .../libgomp1_4.4.1-4ubuntu9_amd64.deb) ...
Selecting previously deselected package gcc-4.4.
Unpacking gcc-4.4 (from .../gcc-4.4_4.4.1-4ubuntu9_amd64.deb) ...
Selecting previously deselected package gcc.
Unpacking gcc (from .../gcc_4%3a4.4.1-1ubuntu2_amd64.deb) ...
Selecting previously deselected package libstdc++6-4.4-dev.
Unpacking libstdc++6-4.4-dev (from .../libstdc++6-4.4-dev_4.4.1-4ubuntu9_amd64.deb) ...
Selecting previously deselected package g++-4.4.
Unpacking g++-4.4 (from .../g++-4.4_4.4.1-4ubuntu9_amd64.deb) ...
Selecting previously deselected package g++.
Unpacking g++ (from .../g++_4%3a4.4.1-1ubuntu2_amd64.deb) ...
Selecting previously deselected package dpkg-dev.
Unpacking dpkg-dev (from .../dpkg-dev_1.15.4ubuntu2_all.deb) ...
Selecting previously deselected package build-essential.
Unpacking build-essential (from .../build-essential_11.4_amd64.deb) ...
Selecting previously deselected package fakeroot.
Unpacking fakeroot (from .../fakeroot_1.12.4ubuntu1_amd64.deb) ...
Processing triggers for man-db ...
Setting up binutils (2.20-0ubuntu2) ...

Setting up libc-dev-bin (2.10.1-0ubuntu16) ...
Setting up linux-libc-dev (2.6.31-19.56) ...
Setting up libc6-dev (2.10.1-0ubuntu16) ...
Setting up libgomp1 (4.4.1-4ubuntu9) ...

Setting up gcc-4.4 (4.4.1-4ubuntu9) ...
Setting up gcc (4:4.4.1-1ubuntu2) ...

Setting up dpkg-dev (1.15.4ubuntu2) ...
Setting up fakeroot (1.12.4ubuntu1) ...
update-alternatives: using /usr/bin/fakeroot-sysv to provide /usr/bin/fakeroot (fakeroot) in auto mode.

Setting up libstdc++6-4.4-dev (4.4.1-4ubuntu9) ...
Setting up g++-4.4 (4.4.1-4ubuntu9) ...
Setting up g++ (4:4.4.1-1ubuntu2) ...
update-alternatives: using /usr/bin/g++ to provide /usr/bin/c++ (c++) in auto mode.

Setting up build-essential (11.4) ...
Processing triggers for libc-bin ...
ldconfig deferred processing now taking place

で、再び。

# make install
make -C /lib/modules/2.6.31-19-server/build SUBDIRS=/home/nao/e1000e-1.1.2.1a/src modules
make[1]: Entering directory `/usr/src/linux-headers-2.6.31-19-server'
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/netdev.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/ethtool.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/param.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/e1000_82571.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/e1000_ich8lan.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/e1000_80003es2lan.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/e1000_mac.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/e1000_nvm.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/e1000_phy.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/e1000_manage.o
  CC [M]  /home/nao/e1000e-1.1.2.1a/src/kcompat.o
  LD [M]  /home/nao/e1000e-1.1.2.1a/src/e1000e.o
  Building modules, stage 2.
  MODPOST 1 modules
  CC      /home/nao/e1000e-1.1.2.1a/src/e1000e.mod.o
  LD [M]  /home/nao/e1000e-1.1.2.1a/src/e1000e.ko
make[1]: Leaving directory `/usr/src/linux-headers-2.6.31-19-server'
gzip -c ../e1000e.7 > e1000e.7.gz
# remove all old versions of the driver
find /lib/modules/2.6.31-19-server -name e1000e.ko -exec rm -f {} \; || true
find /lib/modules/2.6.31-19-server -name e1000e.ko.gz -exec rm -f {} \; || true
install -D -m 644 e1000e.ko /lib/modules/2.6.31-19-server/kernel/drivers/net/e1000e/e1000e.ko
/sbin/depmod -a || true
install -D -m 644 e1000e.7.gz /usr/share/man/man7/e1000e.7.gz
man -c -P'cat > /dev/null' e1000e || true
man: 
cannot write to /var/cache/man/cat7/e1000e.7.gz in catman mode
e1000e.


完了〜
あ、古いドライバをバックアップするの忘れてた[たらーっ(汗)]



ちなみに、こういう怒られ方をすることもあります。

# make install
Makefile:70: *** Linux kernel source not found in any of these locations:
Makefile:71:                
Makefile:72: *** Install the appropriate kernel development package, e.g.
Makefile:73: *** kernel-devel, for building kernel modules and try again.  Stop.

その備忘録として。。。

# apt-get install linux-source
# cd /usr/src
# tar xf linux-source-2.6.31.tar.bz2 

そして、
# make install

OK!

ちなみに、intelのNICのドライババージョンはどうやって確認するのでしょうか?
はい。それらを取得するスクリプトがintelから用意されています。

こちら↓


さっそく。

あと、ethtoolも必要なので、

# apt-get install ethtool
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-2.6.31-14 linux-headers-2.6.31-14-server
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
  ethtool
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 72.1kB of archives.
After this operation, 270kB of additional disk space will be used.
Get:1 http://jp.archive.ubuntu.com karmic/main ethtool 6+20090307-1 [72.1kB]
Fetched 72.1kB in 0s (349kB/s)
Selecting previously deselected package ethtool.
(Reading database ... 80676 files and directories currently installed.)
Unpacking ethtool (from .../ethtool_6+20090307-1_amd64.deb) ...
Processing triggers for man-db ...
Setting up ethtool (6+20090307-1) ...



# chmod 755 netdriverinfo.sh

# ./netdriverinfo.sh 
bash: ./netdriverinfo.sh: /bin/bash^M: bad interpreter: No such file or directory

怒られたりします[たらーっ(汗)]
ちゃんとLFで保存しておいてほしいものです。

改行コードを変換するnkfコマンドをインストールします。

# apt-get install nkf
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following packages were automatically installed and are no longer required:
  linux-headers-2.6.31-14 linux-headers-2.6.31-14-server
Use 'apt-get autoremove' to remove them.
The following NEW packages will be installed:
  nkf
0 upgraded, 1 newly installed, 0 to remove and 5 not upgraded.
Need to get 121kB of archives.
After this operation, 311kB of additional disk space will be used.
Get:1 http://jp.archive.ubuntu.com karmic/universe nkf 2.07-1build1 [121kB]
Fetched 121kB in 0s (284kB/s)
Selecting previously deselected package nkf.
(Reading database ... 80688 files and directories currently installed.)
Unpacking nkf (from .../nkf_2.07-1build1_amd64.deb) ...
Processing triggers for man-db ...
Setting up nkf (2.07-1build1) ...


そして、CR+LFからLFへ変換します。

# nkf -Lu ./netdriverinfo.sh >./netdriverinfo2.sh 


実行権限も与えます。

# chmod 755 netdriverinfo2.sh


それで。。

# ./netdriverinfo2.sh 
eth0 : 00:19.0
    Make/Model = Intel Corporation Device 5003
    Ethernet controller = Intel Corporation 82567LF-2 Gigabit Network Connection
    VenID:DevID = 8086:10cd
    Driver name = e1000e
    Driver version = 1.0.2-k2
eth1 : 02:00.0
    Make/Model = Intel Corporation Device a01f
    Ethernet controller = Intel Corporation 82574L Gigabit Network Connection
    VenID:DevID = 8086:10d3
    Driver name = e1000e
    Driver version = 1.0.2-k2

OKです[るんるん]

あらたにコンパイルしたのはバージョンが1.1.2.1aなので、
これはバックアップし忘れた[たらーっ(汗)]古いバージョンの方です。

再起動すると・・・・

# ./netdriverinfo2.sh 
eth0 : 00:19.0
    Make/Model = Intel Corporation Device 5003
    Ethernet controller = Intel Corporation 82567LF-2 Gigabit Network Connection
    VenID:DevID = 8086:10cd
    Driver name = e1000e
    Driver version = 1.0.2-k2
eth1 : 02:00.0
    Make/Model = Intel Corporation Device a01f
    Ethernet controller = Intel Corporation 82574L Gigabit Network Connection
    VenID:DevID = 8086:10d3
    Driver name = e1000e
    Driver version = 1.0.2-k2

あれれ。。変わっていません。。

なんでかなぁ[たらーっ(汗)]

気持ち悪いなぁ。。。

ちなみに、Bonding で mode=4だとどうなるのか? 試してみました。 [他パフォーマンス改善]

Bondingでmode=4を試すためには、、、

前提条件:
1. 各スレーブの速度と全/半二重を回復するためのベースドライバに
おける Ethtool サポート
2. IEEE 802.3ad 動的リンクアグリゲーションをサポートするスイッチ

とあるとおり、ハブがIEEE 802.3adに対応している必要があります。

たとえば、
PLANEX 8ポート ギガビットシンプルレイヤ2スイッチ(ジャンボフレーム) SWP-0208G

PLANEX 8ポート ギガビットシンプルレイヤ2スイッチ(ジャンボフレーム) SWP-0208G

  • 出版社/メーカー: プラネックス
  • メディア: エレクトロニクス




とか、

NETGEAR Inc. GS108T 8ポート ギガビットスマートスイッチ GS108T-100JPS

NETGEAR Inc. GS108T 8ポート ギガビットスマートスイッチ GS108T-100JPS

  • 出版社/メーカー: ネットギア
  • メディア: エレクトロニクス

です。

お値段的には、後者なのですが、前者のMiniGBIC用拡張ポートにも惹かれます(^ ^;)
# もちろん、今のところ拡張ポートを使用する予定などないのですが、、

でもでも、PLANEXはわたくしの中で、買ってはいけないダメベンダーリストに
入っています[あせあせ(飛び散る汗)]

ので、念入りに、下調べを。。。と思った矢先、マニュアルが公開されていません。
旧型番SW-0208Gは公開されているのですが。。。
一応、SW-0208Gをチェックです。最低限のマニュアルの作りにはなっています。
が、SWP-0208Gとは仕様がかなり変わっているので、当てにはできません。

なんとか、SWP-0208Gのマニュアルを手に入れたのですが、それはそれは、
お粗末なマニュアルです。総ページ数34ページで、ブラウザでの設定画面の
説明がただ繰り返されているだけで、マニュアルと呼べるような代物ではありません。
SW-0208Gのマニュアルが112ページで日本語化されているのに比べてもお粗末
極まりありません。

ちなみに、SWP-0208Gでのポートトランキングの設定画面はこんな感じ
スクリーンショット(2010-02-23 13.39.23).png

同じく、LACPの設定画面はこんな感じ
スクリーンショット(2010-02-23 13.39.47).png


一方、GS108Tは140ページのマニュアルも公開され、ファームの
バージョンアップもしばしば行われているようです。

ということで、GS108Tを調達し、mode=4を試してみました。

独特のユーザーインターフェースなので一瞬戸惑いますが、、
慣れれば特に問題ありません。

まず、LAG ConfigurationからLAG IDのチェックボックスを選択し、

スクリーンショット(2010-02-25 8.06.33).png
Admin Mode = Enable
LACP = Enable
と設定し、最後に右下の【APPLY】ボタンを押します。

次に、LAG Membershipを定義します。
スクリーンショット(2010-02-25 8.06.56).png
リンクアグリゲーションしたいポートNoを選択し(選択するとxとなります)
最後に、右下の【APPLY】ボタンを押します。

以上で完了です。

Linux側も設定を変えましょう。

# vi /etc/modprobe.d/bonding

の mode=0 を mode=4 と書き換えます。

そして、再起動♪

正しくリンク出来た場合は、

# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.5.0 (November 4, 2008)

Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Transmit Hash Policy: layer2 (0)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

802.3ad info
LACP rate: slow
Aggregator selection policy (ad_select): stable
Active Aggregator Info:
Aggregator ID: 5
Number of ports: 2
Actor Key: 17
Partner Key: 3587
Partner Mac Address: 00:22:3f:f8:2f:64

Slave Interface: eth0
MII Status: up
Link Failure Count: 1
Permanent HW addr: 00:1c:c0:9c:27:32
Aggregator ID: 5

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1b:21:53:7f:ac
Aggregator ID: 5

などと表示されます。

ちなみに、ベンチマークを取ってみますと、Bondingしない時相当のリード・ライト性能が
出ています。
ところが、念のため、ifconfigすると、、、、

# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:1c:c0:9c:27:32  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:c0ff:fe9c:2732/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:2753612 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2496043 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3672414868 (3.6 GB)  TX bytes:1913575166 (1.9 GB)

eth0      Link encap:Ethernet  HWaddr 00:1c:c0:9c:27:32  
          UP BROADCAST SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2753237 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2495783 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3672348130 (3.6 GB)  TX bytes:1913531504 (1.9 GB)
          Memory:ff600000-ff620000 

eth1      Link encap:Ethernet  HWaddr 00:1c:c0:9c:27:32  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:375 errors:0 dropped:0 overruns:0 frame:0
          TX packets:260 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:66738 (66.7 KB)  TX bytes:43662 (43.6 KB)
          Memory:ff5c0000-ff5e0000 

と、いうぐあいに、片方のNICしか使われていないようです。

ここで、eth0のケーブルを引っこ抜くと、、今度はeth1を使ってしっかり
通信でき、Bondingしない時相当のリード・ライト速度が出ています。
もう一度、ifconfigすると、

# ifconfig
bond0     Link encap:Ethernet  HWaddr 00:1c:c0:9c:27:32  
          inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::21c:c0ff:fe9c:2732/64 Scope:Link
          UP BROADCAST RUNNING MASTER MULTICAST  MTU:1500  Metric:1
          RX packets:2964904 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2687976 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:3954425499 (3.9 GB)  TX bytes:2060353570 (2.0 GB)

eth0      Link encap:Ethernet  HWaddr 00:1c:c0:9c:27:32  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:2753246 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2495787 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3672349142 (3.6 GB)  TX bytes:1913531964 (1.9 GB)
          Memory:ff600000-ff620000 

eth1      Link encap:Ethernet  HWaddr 00:1c:c0:9c:27:32  
          UP BROADCAST RUNNING SLAVE MULTICAST  MTU:1500  Metric:1
          RX packets:211658 errors:0 dropped:0 overruns:0 frame:0
          TX packets:192189 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:282076357 (282.0 MB)  TX bytes:146821606 (146.8 MB)
          Memory:ff5c0000-ff5e0000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:3724 errors:0 dropped:0 overruns:0 frame:0
          TX packets:3724 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:376808 (376.8 KB)  TX bytes:376808 (376.8 KB)

今度は、ベンチマークしたぶんだけ、eth1のRX,TXが増えています。

というわけでして、mode=4としてもリード・ライト性能の向上はありませんでした〜(>_<)
おしまい。

NETGEAR GS108T
IMG_1061.JPG
作りとしては、高級感はなく、電源もACアダプタ取りです。
機能としてはいろいろありそうなので、しばらく遊べそうです[るんるん]

結局のところBondingで高速化はできなかった訳で。。 [他パフォーマンス改善]

結論から申し上げますと、ファイルサーバのさらなる高速化はできなかった訳です。

【iMac】-【Hub】=【ファイルサーバ】

と、まぁ、iMac-Hub間のリンクアグリゲーションが作成できなかったのが一因です。


APPLE iMac 27インチ 3.06GHz 1.0TB MB952J/A

APPLE iMac 27インチ 3.06GHz 1.0TB MB952J/A

  • 出版社/メーカー: アップル
  • メディア: エレクトロニクス






iMac ↑ ですので、イーサネットの口は一つなのですが、AirMac(WLAN)があるので、
有線LANと無線LANを束ねてリンクアグリゲーションしようと思ったのですが。。

ちなみに、Mac OSXでのリンクアグリゲーションの作り方は、こんな感じです。
おそらく。。

環境設定→ネットワーク
スクリーンショット(2010-02-25 7.23.16).png
「仮想インターフェイスを管理」をぽちっ。


スクリーンショット(2010-02-25 7.22.51).png
「新規リンクアグリゲート」をぽちっ。


スクリーンショット(2010-02-25 7.23.58).png
イーサネットアダプタが二つ以上あればそれらを選択し、「作成」ボタンをぽちっ。

そう、AirMacはアグリゲートの対象インターフェイスとして認められず、
選択肢に挙がらないのです。。。

う〜ん、残念。

こんなこともあって、高速化は断念。

ちなみに、Bonding mode=0で試してみると、如実に低速化しました。
Bondingは高速化というよりは、負荷分散や冗長化が目的なので、致し方なしですね。

ベンチマーク結果はXbenchで、

Disk Test 38.03
Sequential 24.36
Uncached Write 20.51 12.59 MB/sec [4K blocks]
Uncached Write 73.93 41.83 MB/sec [256K blocks]
Uncached Read 44.01 12.88 MB/sec [4K blocks]
Uncached Read 12.63 6.35 MB/sec [256K blocks]
Random 86.66
Uncached Write 117.43 12.43 MB/sec [4K blocks]
Uncached Write 152.52 48.83 MB/sec [256K blocks]
Uncached Read 1722.80 12.21 MB/sec [4K blocks]
Uncached Read 32.78 6.08 MB/sec [256K blocks]

という具合に、Readの性能が著しく低下しました。
他のベンチマークでも同様の傾向でした(^^;)


いろいろ言い方ありますが。。。ちょっと整理。 [他パフォーマンス改善]

ネットワークインターフェースを束ねる技術にもいろいろあるようで、
ちょっと調べただけでも。。

ボンディング Bonding
チーミング Teaming
リンクアグリゲーション Link Aggregation
ポートトランキング Port Tranking
EtherChannel

などなどの言い方があるようです。

何がどう違うのでしょうか??

* ボンディング=Bonding
これはどうやら、Linux地方の方言のようです。
bondには元来「まとめる」という意味がありますが、LinuxのBondingモジュールを
用いることで、一台のコンピュータに取り付けられた複数のNICを利用し、負荷分散と
冗長化に備える仕組みです。
設定ファイルのmodeにより、動きを定義できます。詳細は後述。

*チーミング=Teaming
NICアダプタの機能名称としてよく見受けられます。
Intel,3Com,Realtekなどの各ベンダーは専用のツールなどを提供しており、
それらを適用することで、一台のコンピュータに取り付けられた複数のNICを
仮想化した一つのNICとして通信することができる仕組みです。
各ベンダーにより機能はさまざま。

*リンクアグリゲーション=Link Aggregation
*ポートトランキング=Port Tranking
*EtherChannel
どれもネットワーク機器の機能名称としてよく見受けられます。
ハブの複数のポートを仮想化した一つのポートとして見立て、主にハブ同士の
通信速度の向上と冗長化に備える仕組みです。
ポートトランキングと言わず、単に「トランキング」ということも。
アライドテレシスではポートトランキング、CISCOではEtherChannelと
言われるようです。
IEEEではIEEE802.3adとしてLACP(=Link Aggregation Control Protocol)が
標準化されています。ポートトランキングに対応していても、LACP




LinuxのBondingモジュールの設定項目modeについての覚え書き

balance-rr または 0
ラウンドロビンポリシー:利用可能なスレーブ群の最初から最後までの
一連の順番でパケットを送出します。このモードは負荷分散と耐障害性
を提供します。

active-backup または 1
アクティブバックアップポリシー:bond 中の1スレーブのみアクティ
ブです。別のスレーブはアクティブなスレーブが障害になった場合のみ
アクティブになります。ネットワークスイッチの混乱を避ける為、bond 
の MAC アドレスは外部からは単一のポート(ネットワークアダプタ)に
見えます。
このモードは耐障害性を提供します。primary オプションはこの
モードの挙動に影響します。

balance-xor または 2
XOR(排他論理和)ポリシー:選択された転送ハッシュポリシーに基づい
て転送します。デフォルトのポリシーは単純です [(送信元の MAC アド
レスと送信先の MAC アドレスの排他論理和)をスレーブカウントで割っ
た余り]。別の転送ポリシーは xmit_hash_policy オプション(後述)経
由で選択できます。
このモードは負荷分散と耐障害性を提供します。

broadcast または 3
ブロードキャストポリシー:全スレーブインターフェースから全てのパ
ケットを送出します。このモードは耐障害性を提供します。

802.3ad または 4
EEE 802.3ad 動的リンク集合です。同速度および同じ二重設定を共有
する集合グループを作成します。802.3ad 仕様に従い、アクティブな集
合の全スレーブを利用します。
外への通信のスレーブ選択が送信ハッシュポリシーにしたがって行われ
ます。このポリシーはデフォルトの単純 XOR ポリシーから後述の 
xmit_hash_policy オプションによって変更できます。全ての送信ポリ
シーが 802.3ad 準拠(特に 802.3ad 標準のセクション 43.2.4 で要求
されたパケットの順番ミスに関して)である訳ではない事に注意して下
さい。異なるピア実装は非準拠の変容許容性があります。

前提条件:
1. 各スレーブの速度と全/半二重を回復するためのベースドライバに
おける Ethtool サポート
2. IEEE 802.3ad 動的リンクアグリゲーションをサポートするスイッチ

ほとんどのスイッチは 802.3ad モードを有効にする為の何らかの設定
が必要になります。

balance-tlb または 5
適応転送負荷分散: 特別なスイッチサポートを必要としないチャネル結
合です。送信は各スレーブの現在の負荷(速度に関連して計算されます) 
に従って分散されます。受信は現在のスレーブによって行われます。受
信しているスレーブが障害を起こした場合、別のスレーブが障害した受
信スレーブの MAC アドレスを引き継ぎます。

前提条件:
各スレーブの通信速度を得る為のベースドライバの ethtool サポート

balance-alb または 6
適応負荷分散: IPV4 通信の為の balance-tlb と受信負荷分散 (rlb) 
を含み、特別なスイッチのサポートを要求しません。受信負荷分散は 
ARP ネゴシエーションにより実現されます。bonding ドライバはローカ
ルシステムによって送信された ARP 応答の送信を出口で遮り、bond 内
のスレーブの1つの単独のハードウェアアドレスで (ARP 応答の)送信
元ハードウェアアドレスを上書きします。これにより、このサーバへの
異なる通信相手が異なるハードウェアアドレスを使うようになります。


まだファイルサーバのパフォーマンス向上の余地あり?? [他パフォーマンス改善]

各種ベンチマークを取ってきましたが、
ローカルのディスクアクセスが

Sequential Write: 210 MB/sec くらい
Sequential Read: 240 MB/sec くらい

という結果に対して、

ネットワーク越しのディスクアクセスが

Sequential Write: 70~90 MB/sec くらい
Sequential Read: 85~110 MB/sec くらい

ですので、もうちょっとパフォーマンス向上の余地はあるのでは?
と思う次第なのです。

ネットワークが1000Mbbsですので、125MB/secです。
これで頭打ちになっている感があります。

そこで。

Boding

NICを複数束ねて、冗長化と負荷分散に備える方法です。

しかーし、これには、スイッチングハブがポートトランキングに
対応している必要があります。

ですが、ものは試しです(^ ^;)

早速ですが、コマンドが足りないので、追加します。
ifenslaveなるbondデバイスにNICを登録するコマンドが入っていません。

# apt-get install ifenslave

次に設定。

# vi /etc/modprobe.d/bonding
と新たに、ファイルを作り、下記の設定を書き込みます。

options bonding mode=0 miimon=100

さらに、

#vi /etc/modules

で、

loop
lp

となっているところに、

bonding

を追記します。

あとはbondインターフェースの定義を行うだけです。

# vi /etc/network/interfaces

--
auto eth1
iface eth1 inet static

address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
--

などとなっている箇所を

--
auto bond0
iface bond0 inet static

address 192.168.1.10
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
dns-nameservers 192.168.1.1
slaves eth1 eth2
--

こんな感じに書き換えます。

# ifconfig -a

で、eth2が認識されていることを確認します。

そして、再起動します。

これでOKです♪

ifconfigすると、bondインターフェースに続き、eth1,eth2インターフェースが
表示されます。



ところで、モジュールだけ再読み込みするってできないのかしら??
少し調べてみましたが、わかりませんでした。。


そういえば、この、eth1とかeth2とかってなんか気持ち悪いですね。
数字が1から始まっているあたり。。
・・しらべてみると、このファイルで定義されているようです。

/etc/udev/rules.d/70-persistent-net.rule

ここのNAME="eth1"を書き換えるといいみたいです。
早速書き換えます。二度手間ですが、/etc/network/interfacesも再度書き換え。

そして、再起動。

よかった(*^_^*)ちゃんと書き換わっていました[揺れるハート]

さて、これでベンチマークしてみます。

結果はまた次回。

Linux箱 HDDチューニング [他パフォーマンス改善]

Linux箱のHDDベンチマークは

まじめにベンチマーク Mac ⇔ Linux箱=RAID箱 Sambaでね☆

にてお伝えしたとおりですが、実はHDDアクセスについて
チューニング済みだったりします。

チューニングには、hdparmを用います。

詳しくはこちら

RAID箱で文字通り、RAID化されているため、ほとんどのチューニング
パラメータの設定ができませんが、
「ファイルシステムの先読みセクタ数を取得・設定する」-a オプションは
設定可能でした。

ベンチマークは
hdparm -a2048 /dev/sda
としており、標準では256です。

標準の256の場合のベンチマーク結果は

◆Write性能

No 10MB転送 100MB転送
1 128.3 84.4
2 128.3 96.3
3 130.0 103.6
4 130.0 100.1
5 130.0 79.7
6 128.3 120.9
7 130.0 104.9
8 128.3 90.4
9 108.8 110.9
10 130.0 92.5
平均 127.2 98.4

◆Read性能

No 10MB転送 100MB転送
1 47.7 58.9
2 49.3 61.9
3 45.5 57.9
4 44.7 59.5
5 51.1 58.9
6 48.4 55.7
7 50.6 58.2
8 43.1 50.8
9 48.8 49.2
10 44.5 50.2
平均 47.4 56.1

となり、-a2048とした場合の結果

◆Write性能

No 10MB転送 100MB転送
1 108.8 112.3
2 93.6 102.6
3 111.2 106.7
4 88.6 69.6
5 111.2 105.3
6 88.6 113.2
7 110.0 101.9
8 110.0 105.9
9 115.1 88.0
10 112.5 91.9
平均 104.9 99.8


◆Read性能

No 10MB転送 100MB転送
1 63.4 78.9
2 74.1 83.6
3 74.1 81.2
4 71.5 74.0
5 71.0 66.5
6 71.0 77.4
7 74.1 72.7
8 74.7 80.9
9 72.5 68.0
10 70.5 72.5
平均 71.7 75.6

と比較しますと、Wite性能がやや低下して、Read性能が大幅に
向上しています

じゃ、中間?の-a1024では?
はい、まだベンチマークしていません(^^;)




他パフォーマンス改善 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。