
データドリブン経営の前提として考えるMVV:ミッション・ビジョン・バリューと戦略・戦術・戦法
前回の「並列処理の話(その1) ~変換処理の並行動作について(前編)~」では、マルチコアCPUマシンで、複数処理を順次処理するよりも同時実行した方が遅くなる、という現象についてお話ししました。
今回は解決編です。
実は、この原因はディスクI/Oにあります。
プログラムがOS上で並列動作する時、お互いが完全に分離しながら競合せずに動作するのは非常に難しいです。
ハードディスクを複数のジョブがアクセスする場合には、同じディスクに複数のジョブのREADとWRITEのI/Oが集中し、ランダムアクセス状態になることで発生する遅延を意識しなければなりません。
それでは、ランダムアクセスに強いSSD上で同じテストを行った場合にはどうなるでしょうか。
10本の並列処理でも、非常に高速に終了することができました。
実際には、この現象は小さなファイルでは発生しません。
OSやディスクが、キャッシュや先読みで、できるだけランダムアクセスを避ける効率化を行うからです。
しかし、業務ではキャッシュに使用するメモリー容量よりもデータ量の方が多いのは当たり前なので、実際にはよく起こっている現象です。
また、SSDや、高価なRAIDなどを使わなくても、入出力を複数の物理ディスクに配置する等の方法でリソース競合を避ければ、並列実行の効率を上げることが可能です。
かなり前のことですが、会社で扱っているデータベースに、Windows NT4.0マシンでデータをロードしていました。
お客様からお借りしたテストデータでしたが、当時としては結構な大容量で、ロードに30分ぐらいかかっており、テストするたびにリロードするのが苦痛でした。
しかし、何回目かのロードのとき、HDDのアクセス音がガリガリとずいぶんうるさいことに気がつきました。
ディスクが音を出しているということは、アームがものすごく動いているということです。
ものは試しに入力データを別のドライブに移してみると、あら不思議。たったの2分でロードが完了してしまいました。
音が出ると言うことはそれだけエネルギーを使用しているということです。
それ以来、システム運用中は処理に無駄がないかどうか、ディスクのアクセス音に耳を澄ます癖が付いてしまいました。
まぁ、最近はマシンの前で作業することも少ないのであまり機会はありませんが、CPUやメモリーと共にストレージのリソース監視が大事なことは確かでしょう。
このように、複数の処理を並列に動作させるときには、リソース競合というものを意識しなければなりません。今回はディスクアクセスの話でしたが、メモリやネットワーク等も同様に配慮する必要があるでしょう。
皆様の情報システムも、高速で高価なディスクを導入する前に、ディスク配置を検討し直せば、まだまだ高速化の余地があるかもしれませんね。
並列処理の話(その1) ~変換処理の並行動作について(前編)~
並列処理の話(その2) Windowsでコマンドを並列実行する(前編)
並列処理の話(その2) Windowsでコマンドを並列実行する(後編)
並列処理の話(その4) ハイパースレッディング・テクノロジー
20年以上の実績に裏打ちされた信頼のデータ連携ツール「Waha! Transformer」で、自社に眠るデータを有効活用。まずは無料のハンズオンセミナーや体験版で効果を実感していただけます。
Rankingランキング
New arrival新着
Keywordキーワード