著者 : Ville Koskinen   2021年8月16日投稿のブログ記事 (元の英文記事へのリンク)

ディスクアクセスが律速になっていた問題への対応

Mascot Server 2.8での改善点の一つに、検索時間の短縮が挙げられます。新バージョンで様々なPCやサーバー上で、様々なサイズのデータセットを使ってベンチマークを行ったところ概ね20-35%速度が向上しています。検索速度向上を実現したポイントは、検索の各段階でボトルネックになっていたディスクアクセス速度の改善でした。

ベンチマーク検索

以下の表は,ヒトのプロテオームデータベースに対して683,905件のクエリデータを検索したときの検索時間(秒)です。 コンピュータはCPUに4コアのIntel Core i7を搭載しています。検索時間は検索フォームでクエリが送信されてからユーザーが結果ファイルを受け取るまでの時間です。 今回はストレージの違いによる結果の比較を目的として、従来のコンシューマーグレードのハードディスク(HDD)とミッドグレードのソリッドステートドライブ(SSD)それぞれにMASCOTをインストールし検索時間を計測しています。

Mascot version Disk type Search time/seconds Relative to 2.7
2.7 HDD 1435 100%
2.8 HDD 1050 73%

2.7 SSD 1137 100%
2.8 SSD 877 77%

ご覧通り新バージョンでは、HDDとSSDのどちらのケースのおいても検索が速くなりました。 上記のベンチマークは1CPUのMascotライセンスによるものでしたが、この速度向上は複数CPUのライセンスやクラスターでも確認できています。

処理の変更点

Mascot は検索入力ファイルを受け取ると、ピークリストをデータ単位に分割し、続いてMASCOT検索データ用の別の入力フォーマットに変換、queryの並び替え、そして入力データを一定の大きさ単位でさらに分割する処理が行われます。 この分割された入力データは一度に1つずつ検索されます。Mascot がクラスターモードで動作している場合、分割された入力データは各計算ノードに分散され個別に検索されます。最後にそれぞれの分割データの結果が1つの検索結果(.dat)にまとめられます。

以前のバージョンのMascotでは、上述の入力ファイル作成の前処理は1件1件順番に、そしてシングルスレッドで行われていました。同様に検索の最後に行われる分割データのファイル統合のステップもシングルスレッド処理でした。 検索の中間にして中心部分である計算、タンパク質配列の消化処理(ペプチド生成)、variable modificationの計算、ペプチドのフラグメント化、理論値と入力データのマッチング、スコアリング、といった処理については、以前からほぼ完全な並列処理を実現しています。これらの計算ではライセンスで定められている数を上限とするCPUコアすべてが計算に使用され、ディスクの速度は重要ではありません。 シングルスレッド処理の部分が律速になるかどうかは、シングルスレッド部分とマルチスレッド部分の処理時間の差やCPUと比較したディスクの速度などさまざまな要因があります。 一般に、データセットのサイズが大きくなればなるほど、ディスクアクセス速度がボトルネックになります。

このようなボトルネックを解消するには、計算を複数のスレッドに分割してCPUを無駄に遊ばせないようにするのが一般的です。しかしながらディスクアクセスはマルチスレッド化するにつれパフォーマンスが低下するという問題があります。スレッドは他のスレッドが扱っている箇所と異なる部分からファイルを読み取る必要がありますが、そのようなランダムアクセスは最新のSSDを使ったとしてもシーケンシャルアクセスよりはるかに遅くなってしまいます。

その対処法として、専用処理を行うスレッドを設ける方法が挙げられます。1つのスレッドにディスクからデータを読み込む処理を専用的に行わせ、別の最大4つのスレッドにデータの処理などを行わせ、そして別の1つのスレッドがディスクに書き込む処理を専用で行います。私たちはこの方法がディスクスループットを向上させると判断しMascot ver.2.8 で採用しました。データ処理スレッドの数はほとんどのシステムにとって最適ですが、ユーザーが mascot.dat オプションで微調整する事もできます。一方データベース検索の主要部分、並列処理計算はこれまで同様利用可能なすべてのCPUコアを使用します。このような変更の結果、検索時間を20〜35%短縮する事に成功しました。

SSDに切り替えるべきか?

また結果の表において、HDDとSSDの検索時間の違いも改めてご覧ください。もし、あなたのPCがまだ従来のハードディスクを持っているなら、これを機に SSDドライブが導入されているシステムでMASCOTをご利用頂く事をお勧めします。 重要なのは、Mascotのプログラムファイルと「data」フォルダをSSDに置いておくことです。ここにはディスクを多用するファイルが保存されています。 配列データベース(sequenceフォルダ)はより大きくて安価なHDDにおいていても性能にそれほど大きな影響はありません。データベースはメモリーにマッピングされるため、十分なRAMが搭載されたコンピュータであればデータベースファイルの内容がすべてのメモリー上にキャッシュされます。

HDDまたはSSDのいずれを利用していたにせよ、新バージョンにアップグレードする事で検索時間が短縮されます。


訳者補足:

現在保守にご加入のお客様には2021年8月末までにver.2.8のインストーラーをお送りする予定ですが、その資料と一緒にコンピュータ買い替えによる速度向上に関する資料も同封してお送りいたします。ご興味のある方は是非ご覧ください。

また保守にご加入頂いておらず、古いバージョンのMASCOTをご利用のお客様向けに新しいMASCOTをご利用頂くメリットをまとめた資料を準備いたしました。資料の中で速度上昇についても言及しています。モデルケースでの検索速度を比較したところ、5年前のシステム(MASCOT ver.2.6,ミドルクラスのコンピュータ)に比べ3.8倍速くなっています。

詳しくはこちらをご参照ください。


Keywords: ,