検索インデックス構築と、同時実行スレッド数の関係

テスト目的

マルチコアCPU/マルチCPU環境においてFileblogは、同時多重処理によってインデックス構築のスピードを向上させることができます。最適な多重度はハードウェア資源に依存しますが、この効果を検証しました。

テスト環境紹介

< clover >

鉄飛テクノロジーの性能試験環境メインサーバです。

モデル Fanatic Computer BTO SuperMicro Server
OS Windows Server 2008 R2 Standard 64bit
CPU Intel Xeon E5405 2.00GHz x 2
(12M Cache, 1333MHz FSB, HyperThreading無)
メモリ 12.0GB RAM
ストレージ構成 HDD SATA 2TB x 8 (RAIDコントローラ接続)
参考価格 約 \325,000 (2008年4月)

< nomura-dev >

鉄飛テクノロジーの性能試験用サーバです。

モデル Dell PowerEdge SC440
OS Windows Server 2003 Standard SP2
CPU Intel Pentium Dual-Core E2180 2.00GHz x 1
(1M Cache, 800MHz FSB, HyperThreading無)
メモリ 2.0GB RAM
ストレージ構成 HDD SATA 250GB x 1
参考価格 約 \28,000 (2008年8月)

< テスト用データについて >

  • 総ファイル数 : 103,953 ファイル
  • 総容量 : 約56 GB
  • ワード文書(.doc) : 26,444 ファイル, 約 6.8 GB
  • エクセルファイル(.xls) : 17,094 ファイル, 約 2.7 GB
  • パワーポイント(.ppt : 11,457 ファイル, 約 18.2 GB
  • PDFファイル(.pdf) : 48,925 ファイル, 約 28.6 GB

これらのファイルは、Google検索から拡張子で検索して、無作為にダウンロードしたものです。

結果要約

多重度を上げて同時処理数を増やすことでインデックスの構築時間は短縮される事が結果に出ました。

< clover >

シナリオ 多重度 構築時間(分)/1万文書 平均CPU使用率%
A-1 1 73.0 12.0%
A-2 2 37.7 23.1%
A-3 4 19.8 38.5%
A-4 8 10.5 61.9%
A-5 16 8.7 78.4%
A-6 32 7.1 83.5%

< nomura-dev >

シナリオ 多重度 構築時間(分)/1万文書 平均CPU使用率%
B-1 1 90.2 21.0%
B-2 2 48.8 40.4%
B-3 4 32.9 63.2%
B-4 8 28.3 75.9%

※多重度 : CPUが同時並行処理するスレッド数

CPU使用率と構築時間の相関

多重度を上げるほどにインデックス構築スピードが上がります。 ただし、上げすぎて、CPU使用率が100%に近づくと、向上率は頭打ちとなります。

< clover >

この試験機の場合、シナリオA-6(32多重)はCPUボトルネックで頭打ちとなっています。初期導入時に限っては大丈夫でも、通常運用時には オンラインパフォーマンスに悪影響を及ぼすと考えられます。
CPU使用率が90%弱の、シナリオA-5(16多重)または シナリオA-4(8多重)の条件が現実的でしょう。

< nomura-dev >

マシンスペックとインデックス構築性能の関係

予想通り、マルチコア・マルチCPUの優位性がはっきり現れました。

CPUが2コアでも8コアでも適切なチューニングを施すことによってインデックス構築性能が向上します。ただし、限界での性能は、やはりCPU能力に比例します。

大規模環境においては高性能CPUをぜひ採用してください。