[DBMoto]スレッド設定の調整でレプリケーション速度を向上させる方法


DBMotoの性能向上(レプリケーション速度の向上)に影響するパラメータはいくつかありますが、
複数ケースで検証したところ、速度が向上するパラメータは「Thread execution factor」のみです。
こちらを設定することで、レプリケーション処理のチューニングを行えます。

しかし、DBMotoをインストールしたOSのスペックに依存するため、
高スペックなOSでは速度の向上が見受けられない可能性がございます。
あくまで参考程度のものとご認識いただけますと幸いです。

設定は「Data Replicator Options」から変更可能です。
変更自体はレプリケーション動作中でも可能ですが、
反映されるのはDBMotoサービス起動時となりますので、
一度DBMotoサービスを停止⇒値変更⇒サービス起動 の手順でお願いいたします。

実際にどの程度の速度向上が期待できるかについては環境によりますのでご注意ください。
特にDBMotoをインストールしたWindowsOSのマシンスペックに対しての依存が大きいです。

弊社環境では概ね2~10倍の速度向上となりましたが、
OSは「Windows Vista」で実施いたしました。

●「Thread execution factor」について

あるタスクから次のタスクに移るまでどれだけの時間実行するかを決めるパラメータです。
DBMotoはおのおののタスク(reader あるいは writer)に指定された値を乗じたタイム・スライスを割り当てます。
たとえば2倍の場合、DBMoto はおのおののタスクに2倍の時間を割り当てます。
ここでのタスクは、例えばジャーナルから情報を取得する等のことです。

デフォルト値は10となっております。
この値を大きくすることで特にミラーリング・シンクロナイゼーション時に速度向上が見込めます。
ただしCPUの使用率も増加する点はご注意ください。

●関連項目「Max number of concurrent threads」について

CPU の同時実行スレッド数です。
デフォルト値は5となっており、通常は変更する必要がありません。

●関連項目「Thread Delay」

スリープ状態に入るまでに実行するタイム・スライスの数を指定します。
CPU使用率が高すぎるときにCPUリソースを開放する目的のものです。
その動作は、n を指定した場合 n 回タイム・スライスを実行する毎にスリープします。
1 と指定する場合が最もスリープの割合が高くなり、1回実行するごとに1回スリープします。
最もCPUリソースを開放しますが、同時に最もパフォーマンスが低下する設定です。
0 と指定するとスリープが行われません。
デフォルト値は0となっておりますが、遅くするためのパラメータなので、
DBMoto のサーバーが過負荷でなければ0のままで問題ありません。

関連したトピックス