bcacheとbtierの比較

bcacheに関する以前の投稿の後、より高速なbtierを使用することをお勧めしました。 しばらくして、戦闘状態で試すことが可能になりました。 この投稿では、ハードドライブを高速化する2つの異なるアプローチを比較します...



画像



Bcache



Bcacheはデータキャッシュに依存しています。 データが1回以上読み取られた場合、おそらくキャッシュに落ち着き、次回キャッシュから読み取られます。 主な加速は、ランダムな読み取り操作をキャッシュすることによって得られます。 bcacheによると、順次読み取り操作は高速化される可能性が低く、大きなファイルがキャッシュから多くの小さなファイルを押し出さないためです。 しかし、ここで問題が発生します。開始したばかりの読み取り操作がシーケンシャルであるかどうかを判断する方法、またはさまざまな小さなファイルに対してそれらの多くが存在するのでしょうか? もちろん、プロセスごとに最後のNブロックをキャッシュできます。すべてのN + 1ブロックが連続する場合は、このデータをキャッシュしないでください。 この場合、メモリに大きな負荷がかかり、読み取り操作の長さの決定は、この長さがしきい値を超えたか、超えていない場合にのみ行われます。 Bcacheは別のソリューションを使用します。 プロセスごとに、読み取り操作の移動平均長が保存されます。 シーケンシャルカットオフパラメーターよりも長い場合、読み取りプロセスデータはキャッシュに入れられません。 言及する価値のあるもう1つの興味深いソリューションは、高い負荷しきい値です。 読み取り操作に対する多くの要求が同時に発生し、それらすべてがキャッシュ内のデータに該当すると仮定します。 キャッシュはオーバーロードされ、hddはアイドル状態になります。 このような場合、 congested_read_thresholdパラメーターがあり、読み取り操作がキャッシュキューで待機する時間をミリ秒で設定します。その後、要求はhddに送られます。 書き込み操作にも同じパラメーターが存在します。 このメカニズムはすべて自由に設定または無効にできます。これは、bcache操作パラメーターを難しいタスクに合わせて調整する必要がある場合に非常に便利です。



長所




短所




Btier



Btierははるかに単純ですが、それは悪くなるという意味ではありません。 :)データ処理を高速化するために異なるアプローチを使用しています-多層ディスク(より正確な翻訳を教えてください)。 アイデアは非常に単純です。ディスクは、高速から低速へとディスク同士がくっつきます。 頻繁に使用されるデータブロックは高速ディスクに転送され、長時間使用されていないデータブロックは低速ディスクに転送されます。 移行は設定可能な間隔で発生します。 ただし、誰かがディスクを積極的に使用している場合、移行は実行されません。 ブロックの人気統計は一定期間蓄積され、ブロックへの呼び出しがなかった場合、最も遅いディスクに移行します。 すべてがシンプルで、十分に高速で、一部のタスクに非常に効果的です。



長所




短所




まとめ



普遍的なソリューションは存在しません。 また、btierがbcacheよりも優れている、またはbcacheがbtierよりも優れているとは言えません。 1つの問題を解決するのに役立ちます。 しかし、その有効性は特定のタスクに大きく依存しています。 OpenStreetMapデータをデータベースにインポートし、このプロセスを高速化しようとしています。 Bcacheはこのタスクにより適しています。 すべての作業はiopsとディスク速度に依存します-必要なデータをssdにより高速にキャッシュし、インポートプロセスのニーズにすばやく適応します。 一方、インポート後、結果のデータベースで多くのクエリを実行する必要があり、これらのクエリは、一部はプロセッサに、一部はディスクに残ります。 この場合、btierは、ディスクがアイドル状態のときに人気のあるブロックをssdに移行し、以前にディスクに保存されていたクエリの操作を高速化できます。



All Articles