iwarpベースのlustreパフォーマンステスト


 , 、 、 。 , Chelsio 。

テスト内容
  • NIC帯域幅
  • NIC遅延(TCP/iwarp)
  • lustre on iwarpネットワークカードの帯域幅と遅延ここではあまり紹介しません.このテストは簡単で、iperfとibを直接走ります.writeテストツールでいいです.ここでは主にlustreでiwarpを有効にする方法を記録します.

    テスト環境

    直接上図:
  • ストレージハードウェアデバイスは、lustreのバックエンドディスクアレイとしてDDN/SFA 7700 xを使用し、7.2 KNL-SASハードディスク60個を使用します.ストレージとIOノードの間にIBインターコネクトを使用し、IOノードはChelsio T 580-LP-CR 40 Gbネットワークカードを対外的に使用し、クライアントは2つあり、1つは40 Gbネットワークカード、1つは10 Gbネットワークカードである.

    環境の導入


    OFEDのインストール


    MellonaxとChelsioのNICドライバパッケージにはofedドライバが含まれていますが、2枚のNICを1台のマシンに置いてiwarp機能を使用してロードすると、ofedドライバは互換性がありません.ここでmellonaxメーカーはドライバパッケージのofedを修正し、iwarpのサポートを去勢した可能性があります.最初のステップはオープンソースofedをインストールすることです
    [root@hpc-242-243 ~]# cd OFED-3.18-1
    [root@hpc-242-243 OFED-3.18-1]# ls
    BUILD_ID  docs  install.pl  LICENSE  ofed.conf.save  README.txt  RPMS  SOURCES  SPECS  SRPMS  uninstall.sh
    [root@hpc-242-243 OFED-3.18-1]# ./install.pl 

    実行するplスクリプトは、ヒントに従ってインストールすればいいです.インストール中にエラーが発生する可能性があります.一部の依存ソフトウェアは手動でインストールする必要があります.
    [root@hpc-242-243 ~]#yum install openldap-devel apr-util-devel mod_ssl byacc.x86_64 libtool kernel-devel redhat-rpm-config rpm-build

    私の環境に欠けているのはこれらのコンポーネントです.

    Chelsio NICドライバのインストール

    [root@hpc-242-244 ~]# cd ChelsioUwire-2.12.0.2
    [root@hpc-242-244 ChelsioUwire-2.12.0.2]# ls
    build     dialog.py   docs  install.log  libs    Makefile  rpmbuild     sample_machinefile specs support Uboot debrules dialog.pyc EULA install.py lustre OFED RPM-Manager scripts src tools uninstall.log [root@hpc-242-244 ChelsioUwire-2.12.0.2]# ./install.py -c nic ------------------------------- Chelsio Unified Installer v2.0 ------------------------------- Error : The kernel version 2.6.32-504.3.3.el6_lustre.es131.x86_64 is not supported. Refer to README for supported kernel versions. To compile drivers for an updated kernel, press (Y). To exit, press (N).
    Input(Y/N):y ----------------------------------------------------------------------------
    | Choice   |  Kernel Version |  Distro                                     |
    | Press 1  | 2.6.32-279.el6  | Red Hat Enterprise Linux Server release 6.3 |
    | Press 2  | 2.6.32-358.el6  | Red Hat Enterprise Linux Server release 6.4 |
    | Press 3  | 2.6.32-431.el6  | Red Hat Enterprise Linux Server release 6.5 |
    | Press 4  | 2.6.32-504.el6  | Red Hat Enterprise Linux Server release 6.6 |
    | Press 5  | 3.10.0-123.el7  | Red Hat Enterprise Linux Server release 7   |
    | Press 6  | 3.10.0-229.el7  | Red Hat Enterprise Linux Server release 7.1 |
    | Press 7  | 3.10.0-327.el7  | Red Hat Enterprise Linux Server release 7.2 |
    | Press 8  | 2.6.32.12-0.7   | SUSE Linux Enterprise Server 11 SP1         |
    | Press 9  | 3.0.13-0.27     | SUSE Linux Enterprise Server 11 SP2         |
    | Press 10 | 3.0.76-0.11     | SUSE Linux Enterprise Server 11 SP3         |
    | Press 11 | 3.0.101-63      | SUSE Linux Enterprise Server 11 SP4         |
    | Press 12 | 3.12.28-4       | SUSE Linux Enterprise Server 12             |
    | Press 13 | 3.12.49-11      | SUSE Linux Enterprise Server 12 SP1         |
    | Press 14 | 3.13.0-32       | Ubuntu 14.04.1 LTS                          |
    | Press 15 | 3.16.0-30       | Ubuntu 14.04.2 LTS                          |
    | Press 16 | 3.19.0-25       | Ubuntu 14.04.3 LTS                          |
    | Press 17 | 3.4             | Linux kernel Release                        |
    | Press 18 | 3.6             | Linux kernel Release                        |
    | Press 19 | 3.7             | Linux kernel Release                        |
    | Press 20 | 3.8             | Linux kernel Release                        |
    | Press 21 | 3.9             | Linux kernel Release                        |
    | Press 22 | 3.10            | Linux kernel Release                        |
    | Press 23 | 3.11            | Linux kernel Release                        |
    | Press 24 | 3.12            | Linux kernel Release                        |
    | Press 25 | 3.13            | Linux kernel Release                        |
    | Press 26 | 3.14            | Linux kernel Release                        |
    | Press 27 | 3.15            | Linux kernel Release                        |
    | Press 28 | 3.16            | Linux kernel Release                        |
    | Press 29 | 3.17            | Linux kernel Release                        |
    | Press 30 | 3.18            | Linux kernel Release                        |
    | Press 31 | 4.1             | Linux kernel Release                        |
    | Press 32 | exit | | ----------------------------------------------------------------------------
    
    Input:4 -------------------------------
    Chelsio Unified Installer v2.0 -------------------------------
    
    -------------------------------------------------------------------------------------------- | Choice | T4/T5 Configuration | Supported Protocols/Drivers | --------------------------------------------------------------------------------------------
    | Press 1 | Unified Wire | all the Chelsio drivers | --------------------------------------------------------------------------------------------
    | Press 2 | Low Latency Networks | NIC;TOE;RDMA;WD | --------------------------------------------------------------------------------------------
    | Press 3 | High Capacity RDMA | NIC;TOE;RDMA | --------------------------------------------------------------------------------------------
    | Press 4 | RDMA Performance | NIC;TOE;RDMA | --------------------------------------------------------------------------------------------
    | Press 5 | High Capacity TOE | NIC;TOE | --------------------------------------------------------------------------------------------
    | Press 6 | iSCSI Performance | NIC;TOE;iSCSI | --------------------------------------------------------------------------------------------
    | Press 7 | UDP Segmentation Offload & Pacing | UDP segmenation offload capable NIC;TOE | --------------------------------------------------------------------------------------------
    | Press 8 | T5 Wire Direct Latency | NIC;TOE;RDMA;WD | --------------------------------------------------------------------------------------------
    | Press 9 | T5 High Capacity WD | NIC;RDMA;WD | --------------------------------------------------------------------------------------------
    | Press 10 | T5 Hash Filter Configuration | NIC | --------------------------------------------------------------------------------------------
    | Press 11 | EXIT | | --------------------------------------------------------------------------------------------
    
    Input:1
    
    ------------------------------- Chelsio Unified Installer v2.0 -------------------------------
    
    ---------------------------------------------------------------------- | Choice | OFED Configuration | Details | ----------------------------------------------------------------------
    | Press 1 | Install OFED | Compiles and Installs OFED 3.18-1 | ----------------------------------------------------------------------
    | Press 2 | Skip OFED | Skips Ofed install | ----------------------------------------------------------------------
    | Press 3 | EXIT | | ----------------------------------------------------------------------
    
    Input:2 -------------------------------
    Chelsio Unified Installer v2.0 -------------------------------
    *****************
    Installer Summary
    *****************
    Targets provided        : nic tools
    Checking Build          : Done
    Checking Targets        : Done
    Checking Tunnables      : Done
    Checking Dependencies   : Done
    Building and Installing : 

    普通なら、これで終わりです.しかし、インストール中にエラーが発生する可能性がありますが、ログには記録があります.ログに基づいて1つずつ解決すればいいです.さっきはNICのドライバをインストールしただけで、iwarp関連パッケージはまだインストールされていません.もう一度実行する必要があります./install.py -c iwarp.インストール方法は上と同じです.インストールが完了したら、システムを再起動し、関連モジュールをロードします.
    [root@hpc-242-243 ~]# modprobe cxgb4
    [root@hpc-242-243 ~]# modprobe iw_cxgb4
    [root@hpc-242-243 ~]# ibv_devices 
        device                 node GUID
        ------              ----------------
        cxgb4_0             0007432dd4700000
        mlx4_0              14dda9d424c80000
    [root@hpc-242-243 ~]# ibv_devinfo 
    hca_id: cxgb4_0
        transport:          iWARP (1)
        fw_ver:             0.271.7168
        node_guid:          0007:432d:d470:0000
        sys_image_guid:         0007:432d:d470:0000
        vendor_id:          0x1425
        vendor_part_id:         21520
        hw_ver:             0x0
        board_id:           1425.5410
        phys_port_cnt:          2
            port:   1
                state:          PORT_DOWN (1)
                max_mtu:        4096 (5)
                active_mtu:     1024 (3)
                sm_lid:         0
                port_lid:       0
                port_lmc:       0x00
                link_layer:     Ethernet
    
            port:   2
                state:          PORT_ACTIVE (4)
                max_mtu:        4096 (5)
                active_mtu:     1024 (3)
                sm_lid:         0
                port_lid:       0
                port_lmc:       0x00
                link_layer:     Ethernet
    
    hca_id: mlx4_0
        transport:          InfiniBand (0)
        fw_ver:             2.32.5100
        node_guid:          14dd:a9d4:24c8:0000
        sys_image_guid:         14dd:a9d4:24c8:0003
        vendor_id:          0x02c9
        vendor_part_id:         4099
        hw_ver:             0x0
        board_id:           AS_CX3_FDR
        phys_port_cnt:          1
            port:   1
                state:          PORT_ACTIVE (4)
                max_mtu:        4096 (5)
                active_mtu:     4096 (5)
                sm_lid:         1
                port_lid:       1
                port_lmc:       0x00
                link_layer:     InfiniBand

    cxgb 4はイーサネットモジュール、iw_cxgb 4はiwarpを有効にし、iw_のみcxgb 4モジュールのロードに成功したiwarp機能は正常で、iwarpがibv_を通過できるかどうかを判断します.デバイスまたはibv_devinfoコマンドは、ibデバイスがリストされていることを確認します.ここにはシングルポートのMellonax FDRとデュアルポートChelsioネットワークカードがあります.

    Lustreインストール


    上記の構成が完了してから、lustreインストールの基本環境が備えられます.ここではlustreソースパッケージインストールを使用しており、rpmパッケージをコンパイルしてからインストールできます.
    lustreにパッチを適用ここでchelsioはlustreを提供します.kernel.patch.公式文書では、このパッチを適用してから正常に動作すると記載されています.lustre_kernel.pathはlustre-2.5.41-ddn 3-23 bc 966/lustre/kernel_にコピーpatches/patchesディレクトリの下で、lustre-2.5.41-ddn 3-23 bc 966/lustre/kernel_patches/seriesディレクトリの下でプロファイルを変更する
    [root@hpc-242-243 series]# vim 2.6-rhel6.6.series 
    
    lustre_version.patch
    mpt-fusion-max-sge-rhel6.patch
    raid5-mmp-unplug-dev-rhel6.patch
    dev_read_only-2.6.32-rhel6.patch
    blkdev_tunables-2.6-rhel6.patch
    export-2.6.32-vanilla.patch
    jbd2-jcberr-2.6-rhel6.patch
    bh_lru_size_increase.patch
    quota-replace-dqptr-sem.patch
    quota-avoid-dqget-calls.patch
    jbd2-log_wait_for_space-2.6-rhel6.patch
    module-load-deadlock-rhel6.patch
    dss-2.6.32-lustre-rhel6.6.patch
    lustre_kernel.patch

    最後に1行lustre_を追加kernel.patch.
    コンパイル
    [root@hpc-242-243 lustre-2.5.41-ddn3-23bc966]#./configure --with-linux=/usr/src/kernels/2.6.32-504.el6.x86_64 --with-o2ib=/usr/src/compat-rdma
    [root@hpc-242-243 lustre-2.5.41-ddn3-23bc966]# make -j20
    [root@hpc-242-243 lustre-2.5.41-ddn3-23bc966]# make rpms

    完了すると/rootディレクトリの下で関連rpmインストールパッケージが生成されます.
    [root@hpc-242-243 x86_64]# ls
    lustre-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    lustre-debuginfo-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    lustre-iokit-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    lustre-modules-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    lustre-osd-ldiskfs-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    lustre-osd-ldiskfs-mount-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    lustre-source-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    lustre-tests-2.5.41-ddn3_2.6.32_504.3.3.el6_lustre.es131.x86_64_g23bc966.x86_64.rpm
    [root@hpc-242-243 x86_64]# pwd
    /root/rpmbuild/RPMS/x86_64

    これらのrpmを2つのserverノードにすべてインストールします.修正confファイルは、tcpを使うかiwarpネットワークを使うか、ここでの書き方が重要です.ここではiwarpを使う方法です.
    [root@hpc-242-243 x86_64]# cat /etc/modprobe.d/lustre.conf 
    options lnet networks=o2ib0(eth3),tcp0(eth3)

    tcpの場合、比較的簡単です.
    [root@hpc-242-243 x86_64]# cat /etc/modprobe.d/lustre.conf 
    options lnet networks=tcp(eth3)

    プロファイルを別のIOノードに同期し、lnetとlustreモジュールをロードします.
    [root@hpc-242-243 x86_64]# modprobe lnet
    [root@hpc-242-243 x86_64]# modprobe lustre

    ロードに成功したら、ディスクのフォーマットを開始し、lustreファイルシステムを作成します.
    mkfs.lustre --mgs --mdt --fsname=lustre --mkfsoptions="-m 1 -J size=4096" --reformat --verbose /dev/mapper/360001ff0a003f000000000308a35000f  ## mdt

    ostのフォーマット
    mkfs.lustre --ost --index=0 --fsname=lustre --mgsnode=192.168.1.243@o2ib0 --mkfsoptions="-m 1 -i 131072" --reformat --writeconf --verbose /dev/mapper/360001ff0a003f000000000278a2c0006
    mkfs.lustre --ost --index=1 --fsname=lustre --mgsnode=192.168.1.243@o2ib0 --mkfsoptions="-m 1 -i 131072" --reformat --writeconf --verbose /dev/mapper/360001ff0a003f000000000298a2e0008
    mkfs.lustre --ost --index=2 --fsname=lustre --mgsnode=192.168.1.243@o2ib0 --mkfsoptions="-m 1 -i 131072" --reformat --writeconf --verbose /dev/mapper/360001ff0a003f000000000288a2d0007
    
    mkfs.lustre --ost --index=3 --fsname=lustre --mgsnode=192.168.1.243@o2ib0 --mkfsoptions="-m 1 -i 131072" --reformat --writeconf --verbose /dev/mapper/360001ff0a003f0000000002a8a2f0009
    mkfs.lustre --ost --index=4 --fsname=lustre --mgsnode=192.168.1.243@o2ib0 --mkfsoptions="-m 1 -i 131072" --reformat --writeconf --verbose /dev/mapper/360001ff0a003f0000000002b8a30000a
    mkfs.lustre --ost --index=5 --fsname=lustre --mgsnode=192.168.1.243@o2ib0 --mkfsoptions="-m 1 -i 131072" --reformat --writeconf --verbose /dev/mapper/360001ff0a003f000000000318a360010

    フォーマット後にマウント
    mount -t lustre /dev/mapper/360001ff0a003f000000000308a35000f /lustre/mdt
    mount -t lustre /dev/mapper/360001ff0a003f000000000278a2c0006 /lustre/ost00
    mount -t lustre /dev/mapper/360001ff0a003f000000000298a2e0008 /lustre/ost01
    mount -t lustre /dev/mapper/360001ff0a003f000000000288a2d0007 /lustre/ost02
    mount -t lustre /dev/mapper/360001ff0a003f000000000318a360010 /lustre/ost03
    mount -t lustre /dev/mapper/360001ff0a003f0000000002a8a2f0009 /lustre/ost04
    mount -t lustre /dev/mapper/360001ff0a003f0000000002b8a30000a /lustre/ost05

    クライアントのインストール


    クライアントのインストールは基本的にserverと同じで、ofed、NICドライバをインストールし、cxgb 4とiw_をロードする必要があります.cxgb 4は、これらが正しく完了してからlustreインストールを行うことができます.まずlustreクライアントインストールパッケージをコンパイルしてkernelパッチパッケージを前述のように追加した後にコンパイルしてrpmファイルを生成する
    [root@hpc-242-243 lustre-2.5.41-ddn3-23bc966]#./configure --with-linux=/usr/src/kernels/2.6.32-504.el6.x86_64 --with-o2ib=/usr/src/compat-rdma --disable-server
    [root@hpc-242-243 lustre-2.5.41-ddn3-23bc966]# make -j20
    [root@hpc-242-243 lustre-2.5.41-ddn3-23bc966]# make rpms

    完了したら/rootディレクトリで関連rpmインストールパッケージが生成されます
    [root@hpc-242-242 x86_64]# ls
    lustre-client-2.5.41-ddn3_2.6.32_504.el6.x86_64_g23bc966.x86_64.rpm
    lustre-client-modules-2.5.41-ddn3_2.6.32_504.el6.x86_64_g23bc966.x86_64.rpm
    lustre-client-source-2.5.41-ddn3_2.6.32_504.el6.x86_64_g23bc966.x86_64.rpm
    lustre-client-tests-2.5.41-ddn3_2.6.32_504.el6.x86_64_g23bc966.x86_64.rpm
    lustre-iokit-2.5.41-ddn3_2.6.32_504.el6.x86_64_g23bc966.x86_64.rpm

    これらのインストールパッケージをすべてインストールし、lustreも変更する必要があります.confファイル、構成はserver上の構成と同じです.
    すべてのインストールが完了したら、対応するモジュールをロードします.ここでまとめると、ロードするモジュールは4つあります.
    [root@hpc-242-242]#modprobe cxgb4    ##Chelsio 
    [root@hpc-242-242]#modprobe iw_cxgb4 ## iwarp
    [root@hpc-242-242]#modprobe lnet     ## lustre 
    [root@hpc-242-242]#modprobe lustre   ## lustre 

    この4つのモジュールは正常にロードに成功し、iwarpは正常に動作し、彼らの間には一定の依存があり、これらの依存関係を解決してこそ、順調にロードに成功することができる.
    マウント
     mount -t lustre -o localflock 192.168.1.243@o2ib:/lustre /lustre

    テスト


    マウントに成功すると、パフォーマンステストが開始されます.ここではiozoneツールを使用しています.私はそれぞれ異なるデータブロックサイズでの順番読み書きパフォーマンスをテストしました.ここではテストスクリプトを直接貼り付けます.具体的な手順は詳しく説明しません.
    [root@hpc-242-242 lustre]# cat run.sh 
    #!/bin/bash
    for i in {4,8,16,64,1024}
    do
    /lustre/iozone/bin/iozone -i 0 -i 1 -r $i\k -s 20g -t 16 -+n -+m list
    done

    以上はiwarpをロードするテストプロセスで、tcpの下で比較的に簡単で、正常な流れをインストールしてchelsioネットワークカードを駆動してインストールした後にcxgb 4モジュールをロードした後にlustreをインストールすればいいです.ここでは詳しく説明しません.最終テスト結果を以下に示します.