SplitNumberOfQueriesパラメーターを変更して検索速度を上げる
Mascot Serverにはデータベースの検索時間に影響を与える設定がいくつかあります。そのうちの1つがSplitNumberOfQueriesで、一度に検索するクエリー(MS/MSスペクトル)の数を指定するものです。デフォルトは1000クエリーで妥当な値ですが、他のデフォルト設定値同様、必ずしも常に最適という訳ではありません。ほとんどのハードウェアではこれを2000に増やすと10~20%の速度上昇が得られる可能性があります。
設定値の意味
データベース検索のためにピークリストを投げると、Mascotはスペクトルデータをペプチド質量の小さい順に並べ、データを小さな単位(chunk:以降チャンクと表記)に分割します。 チャンク化する理由は3つあります。まず、検索時のピークRAM使用量を減らす事ができるという事が挙げられます。次に、チャンクサイズに上限を設ける事でメモリ参照を局在化させる事ができます。ほとんどのコンピュータープログラムは同じメモリー位置に繰り返しアクセスします。このような状況を生み出すことができれば、プロセッサは非常に効率的なメモリキャッシュを提供することができ、それによって一般的にスループットが向上します。最後に、クラスターモードではMascotは同じサイズのチャンクを各クラスターノードに送信しますが、そうする事で検索空間が各ノードで同一となり、データロードにおけるバラつきを抑える事ができます。
SplitNumberOfQueriesの設定値を増やすことで達成される可能性が高い効果、それは検索時間の短縮です。ただしRAM使用量は増加します。SplitNumberOfQueriesの設定値を2倍にすると、通常10-20%検索が速くなりますが、RAM使用量は2倍程度になります。
もうひとつ関連する設定があります。SplitDataFileSizeパラメーターでチャンクのサイズも制限されています。デフォルトでは107バイト、約10MBです。SplitNumberOfQueries のクエリー数、並びに SpliDataFileSize のデーターサイズの基準の両方が適用されます。もしピークリストにほとんどノイズがなければ SplitDataFileSize が影響を及ぼすことはほとんどないでしょう。逆に、何千ものピークを持つスペクトルデータの場合、SplitNumberOfQueriesよりもSplitDataFileSizeの方がチャンクサイズを制限してしまう可能性が高いです。従ってSplitNumberOfQueriesとSplitDataFileSizeを同時に変更する事をお勧めします。
推奨手順
ハードウェア、ソフトウェア、データの影響を受けるため、最適な設定値を見つけるには繰り返しテストをしてみるしかありません。
まずベンチマークに適した検索を選択することから始めます。目安として、現在の環境で5~10分かかる検索で、皆様のご利用環境でよく行われるようなタイプの検索を選択するべきです。例えば、iTRAQを使った検索を多く実施しているなら最近行ったiTRAQ検索結果を、Error Tolerant Search [拡張二段階検索、ET検索]を多く行っているなら最近のET検索結果を選択する、といった具合です。
もし適当な検索がない場合は、過去のブログ記事Benchmarking your Mascot Serverにて紹介されているbenchmark_PXD003791.zipをご利用ください。 これはvariable modificationの設定も最小限な、SwissProtに対して行われている検索で、クエリー数は約10万です。ご提案するテスト方法は以下の通りです。
- 検索を実行し、メモリー使用量の推移を確認して下さい。Windowsの場合、タスクマネージャーを開き、「詳細」タブに切り替え、nph-mascot.exeの「メモリ(アクティブなプライベートワーキングセット)」の数字を確認します。Linuxでは、「top」コマンドを実行し、「%MEM」を確認して下さい。
- ピーク時のメモリー使用量をメモしておいてください。また検索時間はDatabase Statusから確認できます。検索を行ったデータベース(例:SwissProt)名のハイパーリンクをクリックし、行った検索のJob番号をクリックする事で表示されます。総時間は「Whole process time」項目で単位は秒です。
- 検索を合計3回行い、検索時間のばらつきについても確認して下さい。ばらつきが大きい場合はさらに2回ほど実行して適切な平均時間を計算してください。(RAMの使用パターンはほとんど変動がないはずです)。
- mascot.datオプションのSplitNumberOfQueriesとSplitDataFileSizeの値を大きくしてください。例えば、元の設定がそれぞれ1000と10000000だった場合、1500と15000000に設定する、など。
- 設定変更後検索を3回実行します。メモリー使用量と検索時間の両方を確認してください。
- オプションの値を2000、2500、3000と増やしていき、最速な検索時間になるのはどこかを探してください。
どの設定が最速になるかは、コンピューターのRAM搭載サイズとハードウェアのどの要素が検索に影響を与えてくるかに依存します。SplitNumberOfQueriesを高く設定していくと、ディスク速度、RAM速度、CPU速度のどこかでボトルネックが発生し数値を上げても効果が得られにくくなります。また、Mascotを複数人で使用する場合、1回の検索でRAMを使い切ってしまい、他の検索ができなくなることがないように注意する必要があります。
ベンチマーク例
以下の表は設定変更の効果を示したものです。ベンチマークはbenchmark_PXD003791.datを使用しています。繰り返しになりますがハードウェアやMascotライセンス数、同時に実行する他の検索の影響や良く利用される検索パラメーター、データファイルサイズなど、様々な要素の影響を受けるため、設定変更の効果はあくまでも1つの例に過ぎないことに注意してください。変更前に必ずご自身の環境でテストを行ってください。
System | Processor | Mascot | Licence | SplitNumber OfQueries |
SplitData FileSize |
Average duration | RAM usage |
---|---|---|---|---|---|---|---|
Laptop (2023) | Intel Core i5 | 2.8 | 1-CPU | 1000 | 10000000 | 702s | 300MB |
1500 | 15000000 | 645s | 520MB | ||||
Workstation (2021) | AMD Ryzen 9 | 2.8 | 4-CPU | 1000 | 10000000 | 285s | 1151MB |
2000 | 20000000 | 224s | 2067MB |
Systemの項目について、少し補足説明をします。「laptop」のスペックですが、NVMe(SSD)ディスクを搭載したミドルレンジのインテルCore i5ノートパソコンです。プロセッサは第12世代インテルで、4つの「P」コアと8つの「E」コアを搭載しています。Mascot 1-CPUライセンスでは、"P "コア(8つの仮想スレッド)のみを使用します。最適な設定値はSplitNumberOfQueries 1500で、10%の速度向上が得られました。しかし2000に設定しても平均検索時間はほとんど変わりませんでした。
「workstation」のスペックについては2021年製のAMD Ryzen 9プロセッサを1基搭載し、ディスクはRAIDアレイとなっているシステムです。Mascotのライセンスは4CPUで、16個のプロセッサコア(32個の仮想スレッド)をすべて使用します。SplitNumberOfQueries 2000で21%高速化となりました。Laptopと比べ4倍の仮想スレッドが使用されている事もあり、RAMの使用量も約4倍になっています。
最近、同じベンチマーク検索を実行したお客様から連絡がありました。SplitNumberOfQueries 1000の場合、平均時間は201秒、2000の場合は146秒となり、27%の速度上昇がみられました。皆様も是非試してみてください。そしてその結果をこちらのブログ記事のコメント欄に是非残してください。
[訳者補足]日本法人がお客様に販売しているコンピューターはメモリー搭載量も多く、SplitNumberOfQueriesの設定変更にも耐えうる仕様です。是非お試しください。あるいは保守にご加入のお客様は、弊社技術担当が訪問して最適な設定を検証する事も可能です。お気軽にご相談ください。
Keywords: benchmark, configuration files, pc hardware, sysadmin