vfs_preopen — 番号付けられたファイルを読むアプリケーションのために読み込み遅延を隠す
vfs objects = preopen
このVFSモジュールは、 samba(7)システムの一部である。
このモジュールは、とても厳しいレイテンシ要求下で番号付け られた複数のファイルを読むアプリケーションを支援する。これが 発生する1つの領域は、フレーム毎に1つのファイルを読むビデオ ストリーミングアプリケーションである。
このモジュールを使う場合、ファイルをオープンし、一定のバイト 数のデータを読みシステムキャッシュに入れるヘルパプロセスが複数 起動され、そのため、その後、実際のアプリケーションからの要求が 来ても、ディスクアクセスが不要になる。
このモジュールはスタック可能である。
preopen:posix-basic-regex = yes
は、
preopen:names
オプションの意味を変更する。
詳細については以下を参照。
preopen:names はプレオープンヘルパがその仕事を行うための
トリガとなるファイル名パターンを指定する。ファイルは番号の
昇順であることを仮定している。そのため、もしも、読みたい
ファイルの名前が、FRAME00000.frm FRAME00001.frm と番号
づけられているならば、これらをリストするために、
preopen:names=/FRAME*.frm/
と記述する。
既定のアルゴリズムは、次のフレームの名前を計算するため、
最初の(少なくとも 3桁の)数字を使う。
preopen:posix-basic-regex = yes
は、
preopen:names
オプションの意味を変更する。
すなわち、POSIX Basic Regular Expression' 文字列がパターンとして
使われることを意味する。フレーム番号の増分を表す数字の位置を指定する
ために、'\('で始まり'\)'で終わる 'subexpression' が、各パターンで
1つだけ必要であるということである。
Movie7599Frame0v1234.txt, Movie7599Frame1v1234.txt, Movie7599Frame2v1234.txt
から Movie7599Frame9v1234.txt というようなファイル名を得るには、
1桁の数字にちょうど一致するために、
preopen:names = /.*Frame\([0-9]\).*\.txt/
を使うが、これは実際の例とは異なり、ここでできうる可能性を示している。
ヘルパが呼び出すバイトを指定する。既定値は1である。
フォークされるヘルパプロセス数を指定する。既定値は1である。
事前にオープンしておくファイル数を指定する。既定値は、次の ファイルから連続して10ファイルである。
ロジックの使用をデバッグ又は監査するため、このオプションを使用して、
'preopen:names
' のパターンに実際に一致するファイル名の
詳細をログレベルで指定し、ログに記録することができる。
'preopen:founddigits_log_level
' and 'preopen:push_log_level
' も参照のこと。
既定値は log level 5 である。 'preopen' デバッグクラスの特別な扱いのため、 smb.conf(5) 中の、'log level' セクションも参照のこと。
preopen の設定をデバッグ又は監査するため、このオプションを指定して、
'preopen:names
' のパターンに実際に一致するファイル名の
詳細をログレベルで指定するが、同時に予期される数字を含まないものを、
ログに記録することができる。
これは通常、ファイル名中の数字の位置をより正確に定義するため、
設定を調整、注意するため、管理者が使うものである。
既定値は、log level 1 である。 'preopen' デバッグクラスの特別な扱いのため、 smb.conf(5) 中の 'log level' 節も参照のこと。
preopen の設定をデバッグ又は監査するため、このオプションを指定して、
'preopen:names
' のパターンに実際に一致するファイル名の
詳細をログレベルで指定し、同時に有効な予期される数字を含むものを
ログに記録することができる。これは、preopen をキューイングするために、
十分な情報が含まれていることを意味する。
既定値は log level 3 である。 'preopen' デバッグクラスの特別な扱いのため、 smb.conf(5) 中の 'log level' 節も参照のこと。
一致したファイル名が 'preopen:names
' とは異なるパターンに
属している場合、異なった親ディレクトリ、あるいは最後に見つかったファイル名とは
大きく異なる場合、モジュールは、内部キュー状態をリセットする必要がある。
これは、以前のキュー状態に属するヘルパプロセスが、preopen をこれ以上プッシュしない
ことを意味する。このようなキューリセットをデバッグあるいは監査するためには、
このオプションを使用してログレベルの詳細を指定し、ログを取る。
既定値は log level 5 である。 'preopen' デバッグクラスの特別な扱いのため、 smb.conf(5) 中の 'log level' 節も参照のこと。
preopen の設定をデバッグ又は監査するため、このオプションを指定して、 実際に preopen ヘルパプロセスにプッシュされるファイル名について、 詳細をログレベルで指定し、ログに記録することができる。 これは、それらがまもなく実際に preopen されることを意味する。
既定値は log level 3 である。 'preopen' デバッグクラスの特別な扱いのため、 smb.conf(5) 中の 'log level' 節も参照のこと。
内部キュー処理の詳細をデバッグするため、 このオプションを使ってログレベルの詳細を指定し、ログできる。
既定値は log level 10 である。 'preopen' デバッグクラスの特別な扱いのため、 smb.conf(5) 中の 'log level' 節も参照のこと。