インテル® Xeon Phi™ コプロセッサー上での Lustre のコンパイル、設定および実行

同カテゴリーの次の記事

インテル® Xeon Phi™ プログラム内でインテル® VTune™ Amplifier XE 2015 の Pause/Resume API を使用する

この記事は、インテル® デベロッパー・ゾーンに公開されている「Compiling, Configuring and running Lustre on Intel® Xeon Phi™ Coprocessor」の日本語参考訳です。


この記事では、インテル® Xeon Phi™ コプロセッサー上で Lustre を有効にする推奨手順を紹介します。ここで紹介する手順は、インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテル® MPSS) のバージョン 3.3.x と 3.4.x そして Lustre のバージョン 2.5.x と 2.6.0 に適用できます。


MPSS 3.3.x と 3.4.x 向けに Lustre をコンパイルする方法

  1. インテル® Xeon Phi™ コプロセッサー MPSS ダウンロードページから、インテル® メニーコア・プラットフォーム・ソフトウェア・スタック (インテル® MPSS) のパッケージをダウンロードします。

    任意のディレクトリーで、ダウンロードしたパッケージを解凍します。ここでは、MPSS 3.3.2 パッケージを使用して説明を行います。すでに MPSS がインストールされている場合、手順 3 をスキップできます。

    MVER=3.3.2# MPSS version
    mkdir -p /tmp/mpss
    cd /tmp/mpss
    tar xf  mpss-src-$MVER.tar
    tar xf  mpss-$MVER-linux.tar
    tar xf  mpss-$MVER-k1om.tar
    
  2. インテル® Xeon Phi™ コプロセッサー向け MPSS をインストールします。ここで紹介する手順を続けるには、MPSS が正しくインストールされ、起動していることを想定しています。MPSS のインストール手順は、インテル® MPSS ダウンロードページの利用する MPSS バージョンのユーザーガイドと readme ファイルに記載されています。

  3. クロスコンパイル SDK をインストールします。

    MVER=3.3.2 # MPSS version
    cd /tmp/mpss
    sudo rpm -ivh ./mpss-$MVER/mpss-sdk-k1om-$MVER-1.x86_64.rpm
    
  4. 外部モジュールをコンパイルするためインテル® Xeon Phi™ コプロセッサーのカーネルソースを準備します。インテル® Xeon Phi™ コプロセッサー上の現在の Linux* カーネルのバージョンは、2.6.38.8+mpss$MVER です。カーネルのソースファイルが解凍され、そして cpio アーカイブファイルが作成され、RPM パッケージから抽出されます。

    MVER=3.3.2 # MPSS version
    cd /tmp/mpss
    tar xjf ./mpss-$MVER/src/linux-2.6.38+mpss$MVER.tar.bz2
    rpm2cpio ./mpss-$MVER/k1om/kernel-dev-2.6.38+mpss$MVER-0.1.build0.knightscorner.rpm | cpio -idm
    cp ./boot/config-2.6.38.8+mpss$MVER ./linux-2.6.38+mpss$MVER/.config
    cp ./boot/Module.symvers-2.6.38.8+mpss$MVER ./linux-2.6.38+mpss$MVER/Module.symvers
    cd ./linux-2.6.38+mpss$MVER
    eval $(grep " PATH=" /opt/mpss/$MVER/environment-setup-k1om-mpss-linux)
    make ARCH=k1om silentoldconfig modules_prepare
    
  5. Lustre をコンパイルするため、インテル® Xeon Phi™ コプロセッサーの OFED ドライバーを抽出します。Lustre を TCP を介してのみの設定でテストする場合、この手順をスキップしてください。

    MVER=3.3.2 # MPSS version
    rpm2cpio ./mpss-$MVER/ofed/modules/ofed-driver-devel-$(uname -r)-$MVER-1.x86_64.rpm | cpio -idm

    OFED rpm が、利用中のカーネルのバージョンと一致しない場合、カーネルに合わせて OFED モジュールを再コンパイルする必要があります。OFED モジュールをコンパイルする手順は、インテル® MPSS ダウンロードページの利用する MPSS バージョンのユーザーガイドに記載されています。

    これでインテル® Xeon Phi™ コプロセッサーのカーネルと OFED を、Lustre のコンパイルに使用できます。

  6. パブリック GIT レポジトリーから Lustre のソースをダウンロードします。利用中の Lustre のバージョンに応じて、b2_5 もしくは b2_6 ブランチをチェックアウトできます。クローニング後、Lustre-release ディレクトリーが作成されます。

    cd /tmp
    git clone git://git.whamcloud.com/fs/lustre-release.git
    cd /tmp/lustre-release
    git checkout b2_5
    
  7. インテル® Xeon Phi™ コプロセッサー・カーネルと OFED を使用して Lustre をコンパイルします。

    MVER=3.3.2 # MPSS version
    cd /tmp/lustre-release
    source /opt/mpss/$MVER/environment-setup-k1om-mpss-linux
    export LD=k1om-mpss-linux-ld
    sh autogen.sh
    ./configure --with-linux=/tmp/mpss/linux-2.6.38+mpss$MVER \
                --with-o2ib=/tmp/mpss/usr/src/ofed-driver \
                --disable-server --disable-tests --disable-doc \
                --host=k1om-mpss-linux --build=x86_64-pc-linux
    make rpms

    Lustre を TCP を介して構成する場合、次の手順を次のように変更します。

    ./configure --with-linux=/tmp/mpss/linux-2.6.38+mpss$MVER \
                --without-o2ib \
                --disable-server --disable-tests --disable-doc \
                --host=k1om-mpss-linux --build=x86_64-pc-linux
    make rpms
    
  8. ~/rpmbuild/RPMS/x86_64 にいくつかの Lustre client RPM が生成されます。コプロセッサーを搭載するホストにインストールするには、Lustre-mic-client モジュールが必要です。

    lustre-client-mic-<lustre-version>.x86_64.rpm 
    lustre-client-mic-modules-<lustre-version>.x86_64.rpm
    

トップに戻る


インテル® Xeon Phi™ コプロセッサー上で Lustre クライアントを設定する

  1. Lustre client RPM は、インテル® Xeon Phi™ コプロセッサーを搭載するホストにインストールされる必要があります。これらのモジュールは、MPSS サービスが再起動したときに一度だけコプロセッサーに展開されます。

    sudo rpm --nodeps -ivh lustre-client-mic-<lustre-version>.x86_64.rpm lustre-client-mic-modules-<lustre-version>.x86_64.rpm
    
  2. Lustre を設定してインテル® Xeon Phi™ コプロセッサー上で使用するためサービスを再起動します

    sudo service mpss stop
    sudo service mpss start
    
  3. これでコプロセッサー上の Lustre の設定が完了しました。このステップは、IPoIB がコプロセッサー上で正しく設定されていることを前提としています。IPoIB の設定手順は、インテル® MPSS ダウンロード・ページにある、利用する MPSS バージョンのユーザーガイドに記載されています。Lustre MGS サーバーがコプロセッサーからアクセスできることが重要です。

    この例では、カードの IPoIB インターフェイスは ‘ib0’ そして tcp インターフェイスは ‘mic0’ としています。

    ssh mic0 "echo 'options lnet networks=\"o2ib0(ib0),tcp0(mic0)\"' > /etc/modprobe.d/lustre.conf"
    ssh mic0 "modprobe lustre"

    この設定をコプロセッサーがリブートするたびに行うには、次の操作を行います。

    mkdir -p /var/mpss/mic0/etc/modprobe.d
    echo 'options lnet networks=\"o2ib0(ib0),tcp0(mic0)\"' > /var/mpss/mic0/etc/modprobe.d/lustre.conf
    echo 'file /etc/modprobe.d/lustre.conf etc/modprobe.d/lustre.conf 0644 0 0' >> /var/mpss/mic0.filelist
    

トップに戻る


インテル® Xeon Phi™ コプロセッサー上で Lustre クライアントをマウントする

  1. 適切に設定を行った後、ネットワークから Lustre ファイル共有をマウントできます:

    ssh mic0 "mkdir -p /mnt/lustre"
    ssh mic0 "/sbin/mount.lustre <MGS IP>@o2ib0:/lustre /mnt/lustre"

    ここで MGS とは、Lustre 管理サーバーを指します。Lustre を TCP を介してマウントするには、次の手順を使用します:

    ssh mic0 "mkdir -p /mnt/lustre"
    ssh mic0 "/sbin/mount.lustre <MGS IP>@tcp0:/lustre /mnt/lustre"

    このマウント・ポイントをコプロセッサーがリブートするたびに継続的に使用するには、次の操作を行います:

    mkdir -p /var/mpss/mic0/mnt/lustre
    echo 'dir /mnt/lustre 0755 0 0' >> /var/mpss/mic0.filelist
    

    そして、自動マウントのため /etc/fstab にこのマウント・ポイントを追加できます。

  2. インテル® Xeon Phi™ コプロセッサー上の Lustre が正しく設定されているかどうかを確認するには、コプロセッサーから Lustre ファイル共有できるかどうか確かめます:

    ssh mic0
    lfs check servers       //Should list down active lustre servers if the mount is successful
    lfs df -h               //Should list down Lustre file system volume usage for Metadata and Object targets
    
    

トップに戻る


トラブルシューティング

以下に Lustre の設定やコプロセッサーでの実行時に発生する可能性がある問題と解決策をリストします。

  1. インテル® Xeon Phi™ カードを搭載するホスト上で、Lustre-Client-Mic* RPM のインストール中に依存関係のエラーが発生した。

    rpm -ivh lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm   lustre-client-mic-modules-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm
    error: Failed dependencies:
     libc.so.6(GLIBC_2.14)(64bit) is needed by lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64
     libdl.so.2(GLIBC_2.14)(64bit) is needed by lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64
     kernel = 2.6.38.8+mpss3.3.2 is needed by lustre-client-mic-modules-2.6.0-2.6.38.8+mpss3.3.2.x86_64

    解決方法:
    モジュールは、ホスト上ではなくコプロセッサー上にロードされるため、依存性チェックは無視できます

    rpm --nodeps -ivh lustre-client-mic-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm   lustre-client-mic-modules-2.6.0-2.6.38.8+mpss3.3.2.x86_64.rpm
    
  2. インテル® Xeon Phi™ カード上の mount.lustre が失敗し、“Is MGS server running” のようなメッセージが表示された

    解決方法:

    • MGS サーバーが起動しているかチェックしてください。以下のコマンドを MGS サーバー上で実行する必要があります。
      cat /proc/fs/lustre/mgs/MGS/live/*   //Should list down active targets
      
    • コプロセッサーから Lustre management server (MGS) を ping して確認できます。ping が失敗した場合、ネットワークの設定を確認してください。Lustre MGS サーバーのネットワーク上の配置場所に応じて、内部もしくは外部ブリッジの設定が必要になることがあります。ネットワークを設定する手順の詳細は、インテル® MPSS ダウンロードページの利用する MPSS バージョンのユーザーガイドに記載されています。

  3. 次のように、インテル® Xeon Phi™ コプロセッサーを搭載するホストでのカウントが失敗した:

    mount -t lustre <MGS IP>@tcp0:/lustre /lustre 
    mount: unknown filesystem type 'lustre'
    

    解決方法:
    おそらく、(コプロセッサーではなく) ホスト上で Lustre ファイル共有をマウントしようとしています。ホスト向けの Lustre をコンパイルする手順が異なります。例えば、カーネルバージョン 2.6.32-431.el6.x86_64 と Lustre 2.6 で、Lustre を TCP を介してマウントする手順は次のようになります。

    git clone http://git.whamcloud.com/fs/lustre-release.git
    cd lustre-release/
    git checkout b2_6
    sh autogen.sh
    ./configure --with-linux=/usr/src/kernels/2.6.32-431.el6.x86_64 --without-o2ib --disable-server --disable-tests --disable-doc
    cd ~/rpmbuild/RPMS/x86_64/
    rpm -ihv lustre-client-2.6.0-2.6.32_431.el6.x86_64.x86_64.rpm lustre-client-modules-2.6.0-2.6.32_431.el6.x86_64.x86_64.rpm
    echo "options lnet networks=tcp0(eth0)" > /etc/modprobe.d/lustre.conf
    modprobe lustre
    mount -t lustre <MGS IP>@tcp0:/lustre /lustre
    

トップに戻る

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください

関連記事