ファイルバッファリングを無効にすることで効率を上げる



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ
LabVIEW 2020ヘルプ

各I/O操作時にLabVIEWがオペレーティングシステム(OS)を呼び出して、ディスク上のファイル間のデータ転送を要求するには、数ミリ秒かかります。この数ミリ秒は、LabVIEWがOSを呼び出すたびに加わります。これらの時間のかかる操作の繰り返しを回避するために、ほとんどのOSファイルシステムはバッファを提供して、ファイルの読み書きを待機中のそれぞれのデータを一時的に保持します。バッファが一杯になると、OSは単一のファイルI/O操作を実行します。

前段落で説明したプロセスは、バッファリングと呼ばれ、LabVIEWではデフォルトで有効になっています。バッファリングによって、OSがディスクにアクセスして処理時間を消費する回数が減ります。

バッファリングを無効にすべき場合

バッファリングを無効にすることで、高速なデータストリーミングレートを達成できる場合があります。たとえば、処理速度を向上させるために、RAID(Redundant Array of Independent Disks)を使用する場合があります。RAIDは、OSが同時にアクセスできる単一のディスクとして動作するハードディスクのセットで、これにより、データの読み書きにかかる時間が削減されます。バッファリングが有効な設定でRAIDにアクセスする場合、LabVIEWがデータをコピーするのにかかる時間はOSが実際にデータをディスクに書き込む時間よりも長くなる場合があります。「ファイルを開く/作成/置換」関数のバッファを無効入力でバッファリングを無効にすることで、これらのデータの複製を回避して、OSにデータを直接ディスクに送信するように強制することができます。

ただし、バッファリングを無効にした場合、以下の状態が正しいことを確認してください。

  • ファイル内のデータのサイズは、ファイルを含む(またはファイルを含む可能性のある)ディスクのセクタサイズ(バイト単位)の倍数にしなければなりません。セクタとは、定量のデータ(通常、512バイト)を保存するディスク領域の区分単位です。「ボリューム情報を取得」関数のセクタサイズ(バイト)出力を使用して、ディスクのセクタサイズを決定します。LabVIEWがデータをディスクに保存するためには、データは複数のセクタに及ぶことができますが、それぞれのセクタが完全に満たされる必要があります。512バイトセクタは、512バイトのデータを必要とします。データがセクタサイズの倍数でない場合、データをフィルタデータでパッドして、LabVIEWがファイルを再度読み取る前に、フィルデータを削除する必要があります。
  • ファイル内のデータは、ディスクが必要とするアライメントの倍数と一致する必要があります。LabVIEWがデータを整列するので、ユーザはそのアライメントを変更することはできません。データがアライメントの必要条件を満たさない場合、LabVIEWはエラーを返します。バッファを有効にして、ファイルを再度開く必要があります。

関連情報

データをバッファリングする



この記事は役に立ちましたか。

役に立たなかった