vfs_aio_linux — Linux カーネルの AIO 呼び出しを用いて非同期 I/O を実装する
vfs objects = aio_linux
このVFSモジュールは samba(7)システムの一部である。
vfs_aio_linux
VFS モジュールは、カーネル AIO 呼び
出しが有効な Linux カーネル上で、 POSIX AIO インターフェイスを使用せずに
Samba の非同期 I/O を有効にするためのものである。
POSIX AIO は、致命的な制約に悩まされることが多い。たとえば、ある
バージョンの Linux では、高負荷な環境でリアルタイムのシグナルを
使用すると、問題が発生する。別のシステムでは、 AIO の使用に際して
特殊なカーネルモジュールのロードが必要であったり、システム全体で
スケジュールされている非同期リクエスト数に制約があったりする。
glibc ベースのシステム (大半の Linux システム) では、ファイル記述子
あたり、 1 つの処理待ちリクエストしか許可されない。
こうした制約を回避するために、 aio_linux モジュールが作られた。 このモジュールは、読み取りと書き込みの呼び出しを非同期に処理するため、 内蔵の POSIX AIO インターフェイスに代わって、Linux カーネルの AIO インターフェイスを使用する。 イベントのキューサイズは 128 がデフォルトである。この制限を変更する 際には、以下で説明する aio num events パラメーターを設定すること。
このモジュールを有効にする際には、 smb.conf パラメーターの
aio read size
と aio write size
も適切に設定する必要がある。
このモジュールは、 Samba VFS の pread と pwrite インターフェイスが スレッドセーフでないため、モジュールスタックの最後に配置すること。 このモジュールは、 pread と pwrite システムコールを直接呼び出し、 Samba VFS の pread と pwrite インターフェイスは使用しない。
簡単な使い方:
[cooldata]
path = /data/ice
aio read size = 1024
aio write size = 1024
vfs objects = aio_linux