in-place updateが遅い理由

大抵の人はHDDやSSDなどのストレージへの書き込みは読み込みより遅いと思っているハズ。けど、実運用上は書き込みの方が早いことが多い。つか、圧倒的に速いハズ。

OSがバッファを持ってるから当たり前なんだけど、システムコールで書き込みを実行しても実際に書き込む前にバッファに放り込んでシステムコールからすぐに帰ってきます(実際の書き込みはOSがアイドル状態の時に実行されます)。

しかし、読み出しの場合はそうはいきません。運良くキャッシュに読み出しデータがあればすぐにシステムコールから帰ってきますが、そうでない場合はまずディスクコントローラにコマンドを出してHDDならデータがある場所までヘッドを移動して回転するプラッタから目的のデータを読み出すまで待ってバッファにデータを放り込んでからじゃないとシステムコールから帰れません。それまですっとビジー状態ってわけです。

バックアップなどでインプレースアップデートでファイルの更新された部分だけを更新するからバックアップが速い!というのは妄想というか、なんというか、rsyncなどにもin-place updateオプションがありますが、実際試してみるとわかるようにファイルの読み出しを2台の別マシンでパラレルに行ったとしても、ほとんどの場合単純に全コピーするよりずっと時間がかかります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です