デバイス設定ダイアログの各設定項目について説明します。

■ ID (ドライブに対するID番号の設定)

ドライブIDは、処理元・先が物理的に異なるドライブかどうかを判別し、処理モード(同一ドライブモード[A/Bモード] or 別ドライブモード[Cモード] )を振り分けるためのヒントになります。

設定画面左部にC:のようなドライブ(ネットワークドライブ含む)とIDが列挙されます。物理的なデバイスが同じドライブに、同じIDを割り当てます。IDの数の大きさに意味はありません。

Win9x/NT4では、全てのドライブにIDを割り当ててください。[全設定をリセット]で各ドライブに1〜26の範囲で適当にIDを振りますので、その後、必要に応じ修正します。Win2000以降では基本的にIDを割り振る必要はありません。

●ドライブ以外にIDを設定するには

UNCルートパス(デフォルトではコンピュータ名が同じならば同一ディスクとみなします)や、マウントポイント(デフォルトではマウントされているデバイスの情報から自動で判別します)に対しIDを設定したいときがあります。その場合は device.iniにパスとIDを記述します。設定例を以下に示します。

いずれもパスの最後に \ をつけてください。つけないと正しく認識されません。

device.ini
[DRIVE]
\\pc-a\dir1\ = 20
\\pc-a\dir2\ = 21

UNCの設定例です。処理元が \\pc-a\dir1\(dir1はpc-aのHDD1上にある)、処理先が \\pc\dir2\(dir2はpc-aのHDD2上にある)であった場合、デフォルトではコンピュータ名が同じなので同一ドライブと判定され同期モードで処理されます。しかし実際は dir1 と dir2 は異なるHDD上にあるので非同期モードで処理したほうが高効率です。そこで dir1 と dir2 のIDを上記のように設定し、異なるドライブと判別させます。

[DRIVE]
D = 1
V = 1
C:\dir\mount\ = 1

ドライブIDの応用例とマウントポイントに対する設定例です。例えば仮想CDドライブV:のイメージファイルがHDD D:上にあるとします。通常、仮想CDドライブはイメージファイルの場所に関わらず、一つのCDドライブと判定されますので、V:からD:にファイルをコピーすると非同期モードになります。これを上記のように設定すると同一ドライブとみなすことができます。

また、先の仮想CDドライブV:をマウントポイントC:\dir\mount\にマウントし、C:\dir\mount\からD:にファイルをコピーする場合、IDを振って同一ドライブと判定させたいときなどに上記のようにイメージファイルの場所とマウントポイントのIDを同一にします。


■ Verify(default) (デフォルトのベリファイモードの設定)

デフォルトでベリファイを行うかどうかを指定します。「ON」にすると、そのドライブが処理先の場合に自動的にベリファイ有りで書き込みます。

●ドライブ以外のベリファイモードを設定するには

UNCルートパスやマウントポイントに対しベリファイモードを設定できます。パスをそのままセクション名にします。設定値は以下の通り。

device.ini
[\\pc-a\dir1\]    ;UNCの場合
verify = 0 or 1

[c:\dir\mount\]   ;マウントポイントの場合
verify = 0 or 1

■ writeBuffer (WRITEバッファのモード設定)

パフォーマンスチューニング(特に細かいファイルを大量に処理する場合)、あるいはトラブルシューティング目的で、ローカルドライブに対し、各ドライブ毎にバッファリングの有効/無効を切り替えることができます。

「OFF」の場合、下記のwriteBufferingSizeに応じてライトバッファリングを制御(完全にOFFするわけではない)します。 「ON」の場合はwriteBufferingSizeの設定に関係なく、バッファサイズ以下のファイルはバッファリングします。 「既定」の場合はHDD等の固定ディスク装置はOFF、DVD-RAMやUSBメモリなどのリムーバブルドライブはONで処理します。 なお、古いHDDは「ON」とした方が速い場合もあるので、細かいファイルのコピーで比較検討すると良いと思います。

●ベリファイと同様、device.iniでUNCルートパスやマウントポイントに対し、このパラメータを設定できます。パスをそのままセクション名にします。設定値は以下の通り。

writeBuff= 0 or 1 or -1
-1:デバイスの種類に応じて自動設定(=既定)
0:基本的にバッファリングしないがkBオーダの小ファイルは自動制御する(=OFF)
1:バッファサイズ以上の大ファイルを除きバッファリングする(=ON)

■ writeBufferingSize(low/high) (WRITEバッファ閾サイズ設定)

上記writeBufferがOFF設定のときに使用するパラメータです。一般的に細かいファイルは基本的にバッファリングして書いた方が速く、大きなファイルはバッファリング無しの方が速い傾向にあります。ただし、ある閾サイズ以下はバッファリング、それ以上はNonバッファリングと、スタティックに判断しても必ずしも速くならないことが、実験により分かっています。そこで中間領域を設け、ファイルサイズがその領域にあるときは、これまでの処理ヒストリからバッファリング有無を判断することにします。

すなわちファイルサイズ<low[kB]なら必ずバッファリングし、high[kB]<ファイルサイズなら必ずバッファリングしません。 その中間サイズの場合は「おまかせ」になります。

このパラメータを「既定」にした場合、low=0〜数10kB、high=64〜数100kBの範囲で、作者環境でチューニングした値を用います。(今後、変更されていく可能性大)

●ベリファイと同様、device.iniでUNCルートパスやマウントポイントに対し、このパラメータを設定できます。パスをそのままセクション名にします。設定値は以下の通り。

writeBuffMin= -1 or n
writeBuffMax= -1 or n
-1:自動設定
n:閾サイズ[kB単位]

■ deviceCacheSize (デバイスのキャッシュサイズ設定)

Bモード処理(同一ドライブモードでバッファサイズ以下のファイルの処理)のときに使用するパラメータです。 リード→ライト→リード→ライト...を繰り返すときに、ライトした分がディスク上にまだ書き出されていないままリード処理に移ると、リードライトが交錯して効率が落ちる(ガリガリ言って速度低下する)原因になります。これは特にライトバッファリング有効で書いた量が多く、遅延書き込みされた量が多いほど問題になります。

そこでライト→リードの境目で、遅延書き込み分を明示的にフラッシュしてやる処理を入れることがありますが、必要以上にフラッシュ処理を入れても、効率が落ちます。遅延書き込み量がそれほど多くなければ、ドライブ自身が内蔵しているキャッシュ(バッファ)を使って、うまくリード・ライト順をスケジューリングしてくれるためです。したがってドライブが持つキャッシュサイズが大きい場合は、このフラッシュ処理の頻度を下げた方が結果的に高速になります。このパラメータを「8MB以上」にするとフラッシュの頻度を下げ、スループットを向上させます。キャッシュが8MBも無いのに「8MB以上」にすると、おそらくパフォーマンスダウンします。

●ベリファイと同様、device.iniでUNCルートパスやマウントポイントに対し、このパラメータを設定できます。パスをそのままセクション名にします。設定値は以下の通り。

cache= -1 or 0
-1:ドライブのキャッシュは8MBより少ない
0:ドライブのキャッシュは8MB以上

<<目次へ戻る