現在表示中:

この節では、報告されたベンチマークで使用された詳細設定およびテスト方法について詳しく説明します。この詳細情報を参考にすれば、同じベンチマーク手順を使用するか、適宜調整することによって、新しい環境や別の環境でのパフォーマンスを誰もが比較検討できるようになります。

ソフトウェアの詳細設定

この節では、ベンチマークで使用された CQ 5.5 DAM および関連コンポーネントの詳細設定について説明します。

CQ サーバーの設定

TAR PM の最適化の無効化

CRX では、午前 2 ~ 5 時までの間、Tar PM の最適化が自動的に実行されます。TAR PM がバックグラウンドで実行されているときにベンチマークを実行した場合、期待どおりの結果が得られない可能性があります。そのため、ベンチマークの実行時には、TAR PM の定期トリガーをオフにしました。

Tar PM の最適化は次の 2 つの場所で実行されます。

  • ワークスペース
  • バージョンストア

注意:

最適化は tarJournal ディレクトリでも実行されますが、この最適化を無効化することはできません。これは常にログファイルに記録されます。

ただし、tarJournal ディレクトリの最適化は最小限ものであり、パフォーマンスに影響を及ぼすことはありません。

ワークスペースとバージョンストアの両方で Tar PM の最適化を無効化するには、次の手順に従います。

  1. repository/<your_workspace>/workspace.xml を編集します。

    これにより、ワークスペースで Tar PM の最適化が無効化されます。

  2. Persistence Manager を次のように変更します。

    <PersistenceManager class="com.day.crx.persistence.tar.TarPersistenceManager">
      <param name="autoOptimizeAt" value="-0" />
    </PersistenceManager>
    
    
  3. repository/repository.xml に同じ変更を加えます。

    これにより、バージョンストアで Tar PM の最適化が無効化されます。

ワークフロースレッド数の変更

  1. URL http://localhost:4502/system/console/slingevent に移動します。

  2. Job Queue Configuration: CQ Workflows」という名前の設定を対象として「Edit」をクリックします。

  3. Max Parallel Jobs」を目的の値に設定します。

  4. Save」をクリックします。

FFmpeg の設定

FFmpeg に必要なコーデックの変更

使用するサーバープラットフォームおよび FFmpeg ビルドに従って、オーディオコーデックおよびビデオコーデックを変更します。例えば、FFmpeg-0.10.2-54.el5.x86_64.rpm を RHEL 5.5 で動作させるには、オーディオコーデックを alac に変更する必要があります。

前述の変更を加えるには、次の手順に従います。

  1. http://localhost:4502/etc/dam/video/hq.html に移動します。

  2. 編集」をクリックします。

  3. オーディオ」タブを開きます。

  4. コーデック」を「alac」に設定します。

  5. OK」をクリックします。

FFmpeg プロセススレッド

デフォルトでは、各 FFmpeg プロセスで生成される最大スレッド数は、サーバー上で利用可能な CPU コア数と同数になります。各 FFmpeg プロセスによって開始されるスレッド数を制限するには、次の手順に従います。

  1. http://localhost:4502/etc/dam/video/hq.html に移動します。

  2. 編集」をクリックします。

  3. ビデオプロファイルの設定」の「詳細」タブを開きます。

  4. カスタム ffmpeg 引数」テキストボックスに引数 –threads <x> を追加します。<x> は、FFmpeg によって開始されるスレッド数です。

  5. OK」をクリックして保存します。

FFmpeg エンコーディングを 1 パスに設定

FFmpeg では、2 パスエンコーディングがデフォルトで有効化されています。これを 1 パスエンコーディングに変更するには、次の手順に従います。

  1. http://localhost:4502/etc/dam/video/hq.html に移動します。

  2. 編集」をクリックします。

  3. ビデオプロファイルの設定」の「詳細」タブを開きます。

  4. 2 パス」エンコーディングのチェックボックスをオフにします。

  5. OK」をクリックします。

テストの実行手順

注意:

次のリンクをクリックして、DAM-capacity-assets.zip をダウンロードします。

このアーカイブには、次のテストセットを実行するために必要なファイルが含まれています。

ダウンロード

基本負荷の設定

  1. サーバーの設定および FFmpeg の設定の説明に従って、CQ インスタンスを設定します。

  2. UploadLoad.sh スクリプトを実行して、基本負荷のアセット(6K)をサーバーにアップロードします。

    UploadLoad.sh <server IP> <server port> <CQ username> <CQ Password>

  3. UploadViewFolder.sh スクリプトを実行して、アセットを ViewFolder にアップロードします。

    UploadViewFolder.sh <server IP> <server port> <CQ username> <CQ Password>

     

  4. 基本負荷で tar の最適化と索引統合を実行します。

アップロードテストの実行

テストの実行

  1. クライアントマシンに Apache JMeter をインストールします。

  2. DamCapacityUtil.jarapache-JMeter-2.6\lib\ext にコピーします。

  3. CreateTestCollateral.sh スクリプトを使用して、テスト用コラテラルファイルを作成します。これらのファイルは、JMeter スクリプト(UploadAssets.jmx)によって CQ にアップロードされます。これにより、サーバーのアップロードスループットが決まります。テスト用コラテラルの一部として作成されるファイルの合計数は、実行されるトランザクション数に応じて異なることに留意してください。1 スレッドあたりの繰り返し回数が 10 で、スレッド数が 15 の場合、合計トランザクション数は 10*15=150 になります。各トランザクションには、15 個の JPG ファイル、4 個の TIFF ファイル、および 1 個の MP4 ファイルが含まれています。トランザクション数が 150 の場合、テスト用コラテラルとして、2250 個の JPG ファイル、600 個の TIFF ファイル、および 150 個の MP4 ファイルが必要になります。

    ベンチマークテストに使用されたトランザクション数は 150 です。

  4. UploadAssets.jmx スクリプト内のユーザーパラメーターを対象の CQ インスタンスに合わせて適宜変更します。

  5. JMeter スクリプトを実行します。

  6. テストが終了したら、結果の CSV ファイルを開き、すべての呼び出しが成功していることを確認します。

スループットの計算

シナリオ実行スループットの計算

  1. 結果の CSV ファイルの先頭行に指定された開始時刻を調べます。

  2. 結果の CSV ファイルで最後の呼び出しの終了時刻を調べます。

  3. トランザクションの合計数を T とし、次のように計算します。

    T = numOfIterations * numOfThreads

  4. シナリオ実行スループットは次のようになります。

    T/(End Time - Start Time)/1000(1 秒間あたりのトランザクション数)

全体的なスループットの計算

  1. 進行中のワークフローの有無を追跡するには、次の監視を続けます。

    http://localhost:4502/system/console/slingevent

    すべてのワークフローの終了時刻を確認します。この時刻を epoch(ミリ秒)形式に変換します。

  2. 全体的なスループットは次のようになります。

    T/(Workflow End Time - Script Start Time)/1000(1 秒間あたりのトランザクション数)

読み取りのみのシナリオのテストの実行

添付のサンプルスクリプト(ReadOnlyScenario.jmx)には、作成済みの基本負荷で実行された読み取りおよび検索操作の記録が含まれていますので、結果は作成済みの負荷に依存します。同じような操作を新規負荷でテストするには、それらの操作を記録し直し、スクリプト内の該当する場所にある記録を置き換える必要があります。

スクリプトの記録

読み取り操作の記録

  1. ブラウザーのキャッシュをクリアします。

  2. CQ にログインします。

  3. DAM コンソールを開きます。

    http://localost:4502/damadmin

  4. JMeter で記録を開始します。

  5. DAM コンソールで、次のフォルダーを開きます。

    Digital Assets/capacity

  6. DAM コンソールで、次のフォルダーを開きます。

    Digital Assets/capacity/Folder1

  7. DAM コンソールで、次のフォルダーを開きます。

    Digital Assets/capacity/Folder1/ViewFolder

  8. JMeter での記録を停止します。

  9. 次の JMeter 要素の内容を前述の記録の呼び出しで置き換えます。

    RunTests-> Reach-ViewFolder - Complete set of requests

次のフォルダー内に存在する個々のファイルに対して読み取り操作の記録を開始します。

Digital Assets/capacity/Folder1/ViewFolder

  1. JMeter で記録を開始します。

  2. DAM コンソールで、Test1.jpg を開きます(ダブルクリック)。

  3. 右側のペインにある元のアイコンをダブルクリックして、元の画像がダウンロードされるようにします。

  4. JMeter での記録を停止します。

  5. 次の JMeter 要素の内容を前述の記録で置き換えます。

    RunTests->View Jpg->View File1

  6. ブラウザーのキャッシュをクリアします。

ViewFolder 内に存在する 15 個のファイルすべてに対して前述の手順を実行し、スクリプト内の該当する場所にある内容を置き換えます。

検索操作の記録

検索操作の記録を開始する前に、一般的な検索ユースケースを組み合わせた各タイプ(タイプ 1、タイプ 2、タイプ 3)について、それぞれ 5 つの検索を検討してください。

  • タイプ 1:タグのみを制約として検索します。例えば、「ビジネス」というキーワードでタグ付けされたすべてのアセットを検索します(記録時に、「タグ」で「ビジネス」のチェックボックスをオンにします)。
  • タイプ 2:タグ、フルテキスト検索、およびファイル形式を AND 条件で指定して検索します。例えば、フルテキストプロパティとして「pistol」を含み、「ビジネス」というキーワードでタグ付けされた画像を検索します(記録時に、「ファイル形式」で「画像」のチェックボックスをオンにし、「タグ」で「ビジネス」のチェックボックスをオンにし、「フルテキスト」のテキストボックスに「pistol」と入力します)。
  • タイプ 3:タグおよびフルテキスト検索タイプを AND 条件で指定して検索します。例えば、フルテキストプロパティとして「pistol」を含み、「ビジネス」というキーワードでタグ付けされたアセットを検索します(記録時に、「タグ」で「ビジネス」のチェックボックスをオンにし、「フルテキスト」のテキストボックスに「pistol」と入力します)。

スクリプトを記録するには、次の手順に従います。

  1. ブラウザーのキャッシュをクリアします。

  2. CQ インスタンスにログインします。

  3. DAM コンソールを開きます。

    http://localhost:4502/damadmin

  4. JMeter で記録を開始します。

  5. DAM コンソールで、「検索」タブを開きます。

  6. JMeter での記録を停止します。

  7. 次の JMeter 要素の内容を前述の記録の呼び出しで置き換えます。

    RunTests-> Search Tags->ReachSearchUI

検討した 15 個の検索について、検索操作の記録を開始します。次の例では、タイプ 2 の検索の記録を取り上げています。

  1. ブラウザーのキャッシュをクリアします。

  2. JMeter で記録を開始します。

  3. DAM コンソールの「検索」で、「フルテキスト」に検索語を入力します。

  4. ファイル形式」で検索対象のファイル形式のチェックボックスをオンにします。

  5. タグ」で検索対象のタグのチェックボックスをオンにします。

  6. 検索」ボタンをクリックします。

  7. 検索結果が返されるまで待ちます。

  8. JMeter での記録を停止します。

  9. 次の JMeter 要素の内容を前述の記録の呼び出しで置き換えます。

    RunTests-> SearchTagsFTSAndFileType-> Random Controller->Search Query

検討した 15 個の検索操作について前述の手順を実行し、スクリプト内の該当する場所にある記録を置き換えます。

記録されている各検索クエリーを変更する必要があります。目的は、テスト時のデータの追加に伴って結果の数が変わらないようにすることです。そのためには、各検索クエリー操作に特別な AND 句を追加する必要があります。

例えば、「ビジネス」というキーワードでタグ付けされたすべてのアセットの検索について記録するものとします。基本負荷(6K アセット)でこのクエリーを実行した場合、x 件の結果が返されます。混合シナリオのテストを実行していて、検索操作の際にデータが追加されるような場合は、同じクエリーを実行しても、x + y 件の結果が返される可能性があります。したがって、クエリーを変更して、常に同数の結果が返されるようにする必要があります。当社では、6K の負荷全体を一意のタグ(forum:topic/unanswered)でタグ付けし、テスト時にアップロードされたアセットには適用しないようにしました。この一意のタグを利用することで、6K の負荷に属する検索結果のみが返されるようになります。これを実現するには、「ビジネス」および「forum:topic/unanswered」の 2 つのキーワードでタグ付けされたアセットを検索するようにクエリーを変更します。

したがって、すべての検索の記録を対象として、/bin/querybuilder.json に対するすべての HTTP 要求を変更し、要求に次のパラメーターを追加します。

パラメーター
4_group.property
jcr:content/metadata/cq:tags
4_group.p.or false
4_group.property.1_value forum:topic/unanswered

スクリプトに対してこれらの変更をすべて加えたら、テストの実行準備が整います。

テストの実行

  1. ReadOnlyScenario.jmx スクリプト内のユーザーパラメーターを対象の CQ インスタンスに合わせて変更します。

  2. JMeter スクリプトを実行します。

  3. テストが終了したら、結果の CSV ファイルを開き、すべての呼び出しが成功していることを確認します。

スループットの計算

全体的なスループットの計算

  1. 結果の CSV ファイルの先頭行に指定された開始時刻を調べます。

  2. CSV ファイルで最後の呼び出しの終了時刻を調べます。

  3. トランザクションの合計数を T とし、次のように計算します。

    T = numOfIterations * numOfThreads

  4. 全体的なスループットは次のようになります。

    T/(End Time - Start Time)/1000(1 秒間あたりのトランザクション数)

混合シナリオのテストの実行

混合シナリオのテストには、アップロード操作、読み取り操作、および検索操作が伴います。アップロードとタグ付けを単一の POST 呼び出しとして実装する純粋なアップロードテストとは異なり、このテストでの操作は、JMeter を使用して記録され、パラメーター化されます。したがって、アップロード/タグ付け操作を DAM コンソールから実行した場合に実行される GET および POST 呼び出しの完全なセットが含まれています。各トランザクションではアップロードが 1 回実行され、アップロード全体が JPG ファイル 75 %、TIFF ファイル 20 %、MP4 ファイル 5 % の比率で実行されるように、ロジックがスクリプトに保持されています。

読み取り操作および検索操作については、読み取りのみのシナリオで行われた記録が利用されているので、MixedScenario.jmx 内の読み取り操作および検索操作の記録を置き換える必要もあります。

テストの実行

  1. スクリプト内の読み取り操作および検索操作の記録を置き換えます。

  2. MixedScenario.jmx スクリプト内のユーザーパラメーターを対象の CQ インスタンスに合わせて変更します。

  3. JMeter スクリプトを実行します。

  4. テストが終了したら、結果の CSV ファイルを開き、すべての呼び出しが成功していることを確認します。

スループットの計算

シナリオ実行スループットの計算

  1. 結果の CSV ファイルの先頭行に指定された開始時刻を調べます。

  2. CSV ファイルで最後の呼び出しの終了時刻を調べます。

  3. トランザクションの合計数を T とし、次のように計算します。

    T = numOfIterations * numOfThreads

  4. <p">シナリオ実行スループットは次のようになります。</p">

    T/(End Time - Start Time)/1000(1 秒間あたりのトランザクション数)

全体的なスループットの計算

  1. 進行中のワークフローの有無を追跡するには、次の監視を続けます。

    http://localhost:4502/system/console/slingevent

    すべてのワークフローの完了時刻を確認します。この時刻を epoch(ミリ秒)形式に変換します。

  2. 全体的なスループットは次のようになります。

    T/(Workflow End Time - Start Time)/1000*60(1 秒間あたりのトランザクション数)

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー