Network Trunkingは複数のEthernet NIC(特に100BaseT Ethernet)を束ねて通信バンド幅性能を向上させる技術です。 Network Trunkingを用いた通信を実現するためには、1台のPCに複数のEthernet NICと 複数のEthernet NICを接続するEthernetスイッチ、それぞれのEthernet NIC用の PM/Ethernetの設定ファイルを準備する必要があります。
PM/Ethernetは複数のEthernet NICをpm-ethernet.confとetherpmctlで指定されるunit番号 により管理しています。そして、ノード上の同じunit番号を持つNICだけがお互 いに通信を行なうことができます。更に、PM/Ethernetでは直接EthernetのMACアドレス が使われますので、同じUNIT番号を持つEthernet NICは同じEtherneネットワークに 接続されなければ行けません。しかしながら、"Beowulf Channel Bonding"機構のようにすべてのEthernet NICを同じEthernetネットワークに接続する 必要はありません。つまり、異なるUNIT番号をもつEthernetネットワークは、 例えば、Ethernetスイッチを独立に設けてEthernetネットワークを分けても構いません。
ネットワークインターフェイスカード(NIC):
もし、システムが1台のPCに2枚のNICを搭載する場合は、例えばtulipと eepro100といったNICの組合せは可能である。しかし、2枚を越えるNICを搭載す る場合は同じNICハードウェアを推奨します。下に示すリストはNetwork Trunkingで 動作確認したNICのリストです。
NICの数 | 動作確認済みNIC |
2 NICs | DEC Tulip, Intel EEPRO100, 3Com 3C905B, VIA chipset NICs |
3 NICs | DEC Tulip, Intel EEPRO100, 3Com 3C905B |
4 NICs | DEC Tulip, Intel EEPRO100 |
Ethernetスイッチ:
もし、8ノードのクラスタで3枚のNICを使いたい場合は、3台の8ポートスイッチ (あるいは、1台の16ポートスイッチと1台の8ポートスイッチ)が必要です。そ れぞれのEthernetスイッチ間は接続する必要はありません。もし、クラスタ以外 に他のネットワークに接続する場合は8ポートより多いポート数が必要です。
もし、Network Trunkingを用いて新しいクラスタを構築する場合は同じマザーボー ドを推奨します。なぜなら、eth0, eth1といったEthernetのデバイス番号の割り 当て同じ位置のスロットに搭載してもマザーボードにより異なるからです。もし、 異なるマザーボードを利用する場合はEthernetのデバイス番号の割り当てに注意 して下さい。
Network Trunkingに必要なファイルはそれぞれのEthernet ネットワーク毎の pm-ethernet.conf です。 このドキュメントでは4枚のEthernet NICを搭載した4ノードクラスタ上での設定 手順を示します。
Compute hosts
comp0.pccluster.org comp1.pccluster.org comp2.pccluster.org comp3.pccluster.org
|
# Configuration file for PM/UDP(Agent)0 comp0.pccluster.org 1 comp1.pccluster.org 2 comp2.pccluster.org 3 comp3.pccluster.org
|
pm-ethernet.conf
設定ファイルの作成
# mkpmethernetconf -unit 0 -speed 100 -device eth0 pm-udp.conf pm-ethernet-0.conf # cat pm-ethernet-0.conf unit 0 maxnsend 8 0 00:90:CC:0F:B9:A0 comp0.pccluster.org 1 00:90:CC:0F:B9:A3 comp1.pccluster.org 2 00:20:18:58:AC:DA comp2.pccluster.org 3 00:20:18:58:BC:00 comp3.pccluster.org
|
# mkpmethernetconf -unit 1 -speed 100 -device eth1 pm-udp.conf pm-ethernet-1.conf # cat pm-ethernet-1.conf unit 1 maxnsend 8 0 00:90:CC:0F:B8:03 comp0.pccluster.org 1 00:90:CC:0F:B9:A9 comp1.pccluster.org 2 00:20:18:58:AC:EE comp2.pccluster.org 3 00:20:18:58:AE:61 comp3.pccluster.org
|
# mkpmethernetconf -unit 2 -speed 100 -device eth2 pm-udp.conf pm-ethernet-2.conf # cat pm-ethernet-2.conf unit 2 maxnsend 8 0 00:90:CC:0F:B8:25 comp0.pccluster.org 1 00:90:CC:0F:B9:C1 comp1.pccluster.org 2 00:20:18:58:AC:3E comp2.pccluster.org 3 00:20:18:58:AC:8B comp3.pccluster.org
|
# mkpmethernetconf -unit 3 -speed 100 -device eth3 pm-udp.conf pm-ethernet-3.conf # cat pm-ethernet-3.conf unit 3 maxnsend 8 0 00:90:CC:0F:B8:06 comp0.pccluster.org 1 00:90:CC:0F:B9:AD comp1.pccluster.org 2 00:20:18:58:AC:3C comp2.pccluster.org 3 00:20:18:58:AC:EC comp3.pccluster.org
|
# cp pm-ethernet-[0123] /opt/score/etc |
scorehosts.db
ファイルの変更
ethernet-0 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-0.conf ethernet-1 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-1.conf ethernet-2 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-2.conf ethernet-3 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-3.conf ethernet-x2 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-1.conf \ -trunk0:file=/opt/score/etc/pm-ethernet-2.conf ethernet-x3 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-2.conf \ -trunk0:file=/opt/score/etc/pm-ethernet-1.conf \ -trunk1:file=/opt/score/etc/pm-ethernet-0.conf ethernet-x4 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-3.conf \ -trunk0:file=/opt/score/etc/pm-ethernet-0.conf \ -trunk1:file=/opt/score/etc/pm-ethernet-1.conf \ -trunk2:file=/opt/score/etc/pm-ethernet-2.conf |
# cat /opt/score/etc/scorehosts.db /* PM/Ethernet */ ethernet type=ethernet \ -config:file=/opt/score/etc/pm-ethernet.conf ethernet-0 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-0.conf ethernet-1 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-1.conf ethernet-2 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-2.conf ethernet-3 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-3.conf ethernet-x2 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-1.conf \ -trunk0:file=/opt/score/etc/pm-ethernet-2.conf ethernet-x3 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-2.conf \ -trunk0:file=/opt/score/etc/pm-ethernet-1.conf \ -trunk1:file=/opt/score/etc/pm-ethernet-0.conf ethernet-x4 type=ethernet \ -config:file=/opt/score/etc/pm-ethernet-3.conf \ -trunk0:file=/opt/score/etc/pm-ethernet-0.conf \ -trunk1:file=/opt/score/etc/pm-ethernet-1.conf \ -trunk2:file=/opt/score/etc/pm-ethernet-2.conf #include "/opt/score/etc/ndconf/0" #include "/opt/score/etc/ndconf/1" #include "/opt/score/etc/ndconf/2" #include "/opt/score/etc/ndconf/3" #define MSGBSERV msgbserv=(server.pccluster.org:8764) comp0.pccluster.org NODE_0 \ network=ethernet,ethernet-0,ethernet-1,ethernet-2,ethernet-3,ethernet-x2,ethernet-x3,ethernet-x4 group=_scoreall_,pccall smp=1 MSGBSERV comp1.pccluster.org NODE_1 \ network=ethernet,ethernet-0,ethernet-1,ethernet-2,ethernet-3,ethernet-x2,ethernet-x3,ethernet-x4 group=_scoreall_,pccall smp=1 MSGBSERV comp2.pccluster.org NODE_2 \ network=ethernet,ethernet-0,ethernet-1,ethernet-2,ethernet-3,ethernet-x2,ethernet-x3,ethernet-x4 group=_scoreall_,pccall smp=1 MSGBSERV comp3.pccluster.org NODE_3 \ network=ethernet,ethernet-0,ethernet-1,ethernet-2,ethernet-3,ethernet-x2,ethernet-x3,ethernet-x4 group=_scoreall_,pccall smp=1 MSGBSERV |
このファイル中 ethernet-0, ethernet-1, ethernet-2 および ethernet-3のネッ トワークは試験用のみでの利用で、試験の終了後、利用しないネットワークは削 除する必要があります。同じunit番号を含むネットワークが複数指定されている とSCore-Dマルチユーザ環境にて問題が発生します。 |
/etc/rc.d/init.d/pm_ethernet
ファイルの更新
/etc/rc.d/init.d/pm_ethernetのサンプルを以下に示します。
# # pm_ethernet: Starts the PM Ethernet driver # # Version: @(#) /etc/rc.d/init.d/pm_ethernet 1.00 # # Author: Shinji Sumimoto (Real World Computing Partnership) # chkconfig: 345 90 18 # description: PM Ethernet driver # probe: true IF=eth0 UNIT=0 INTERRUPT_REAPING=on # Source function library. . /etc/rc.d/init.d/functions # check module module=`modprobe -l pm_ethernet_dev.o` # See how we were called. case "$1" in start) echo if [ x$module != x ]; then modprobe pm_ethernet_dev fi ifconfig eth1 up # this depends on your environment ifconfig eth2 up # this depends on your environment ifconfig eth3 up # this depends on your environment /sbin/etherpmctl $IF -pm on -ir $INTERRUPT_REAPING -unit $UNIT /sbin/etherpmctl eth1 -pm on -ir $INTERRUPT_REAPING -unit 1 /sbin/etherpmctl eth2 -pm on -ir $INTERRUPT_REAPING -unit 2 /sbin/etherpmctl eth3 -pm on -ir $INTERRUPT_REAPING -unit 3 touch /var/lock/subsys/pm_ethernet ;; stop) echo -n "Stopping PM/Ethernet: " if [ x$module != x ]; then rmmod pm_ethernet_dev fi /sbin/etherpmctl $IF -pm off /sbin/etherpmctl eth1 -pm off /sbin/etherpmctl eth2 -pm off /sbin/etherpmctl eth3 -pm off ifconfig eth1 down # this depends on your environment ifconfig eth2 down # this depends on your environment ifconfig eth3 down # this depends on your environment echo rm -f /var/lock/subsys/pm_ethernet ;; status) if [ x$module != x ]; then /sbin/lsmod fi ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|status|restart}" exit 1 esac |
scoreboardとPM/Ethernetを再起動するために以下のコマンドを実行します。
#/etc/rc.d/init.d/scoreboard restart #/etc/rc.d/init.d/pm_ethernet restart |
PM/Ethernet試験手順
にあるethernetネットワークの記述をそれぞれethernet-1、 ethernet-2、ethernet-3に変更して行ないます。
# /opt/score/sbin/rcstest comp0.pccluster.org ethernet-0 -v starting master 0 : pe=4 starting slave: 2 3 1. testing*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* .*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*. *.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.* .*.*.*.*.*.*.*.*.*.*.*comp3( 3) Signal: Interrupted system call(4) comp0( 0) Signal: Interrupted system call(4) comp1( 1) Signal: Interrupted system call(4) comp2( 2) Signal: Interrupted system call(4) |
# /opt/score/sbin/rcstest comp0.pccluster.org ethernet-1 -v |
# /opt/score/sbin/rcstest comp0.pccluster.org ethernet-2 -v |
# /opt/score/sbin/rcstest comp0.pccluster.org ethernet-3 -v |
# /opt/score/sbin/rcstest comp0.pccluster.org ethernet-x2 -v starting master 0 : pe=4 starting slave: 2 3 1. testing*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* .*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* .*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*. *.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.* *.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.*.**.*.*.*.*.*.*.*.*.*.*.*.*.* .*.*.*.*.*.*.*.*.*.*.*comp3( 3) Signal: Interrupted system call(4) comp0( 0) Signal: Interrupted system call(4) comp1( 1) Signal: Interrupted system call(4) comp2( 2) Signal: Interrupted system call(4) |
# /opt/score/sbin/rcstest comp0.pccluster.org ethernet-x3 -v |
# /opt/score/sbin/rcstest comp0.pccluster.org ethernet-x4 -v |
![]() |
PCクラスタコンソーシアム |