Name

vfs_aio_pthread — pthread pool を使って 非同期 I/O を実装する

Synopsis

vfs objects = aio_pthread

説明

この VFS モジュールは samba(7)システムの一部である。

vfs_aio_pthread VFS モジュールは、 pthread API が 有効なプラットフォーム上で、 POSIX AIO インターフェイスを使用せずに Samba の非同期 I/O を有効にするためのものである。 POSIX AIO は、致命的な制約に悩まされることが多い。たとえば、ある バージョンの Linux では、高負荷な環境でリアルタイムのシグナルを 使用すると、問題が発生する。別のシステムでは、 AIO の使用に際して 特殊なカーネルモジュールのロードが必要であったり、システム全体で スケジュールされている非同期リクエスト数に制約があったりする。 glibc ベースのシステム (大半の Linux システム) では、ファイル記述子 あたり、 1 つの処理待ちリクエストしか許可されないため、 glibc の 実装を使用しているシステムでは POSIX AIO が無意味になってしまう。

こうした制約を回避するために、 aio_pthread モジュールが作られた。 このモジュールは、読み取りと書き込みの呼び出しを非同期に処理するため、 内蔵の POSIX AIO インターフェイスに代わって、 pthread pool を使用する。 pthread pool は新しいスレッドを作成することにより生成され、タスクの 割り当てに伴い、 最大で smbd プロセスあたり 100 スレッドまで動的に 拡張される。 この制限を変更する際には、以下で説明する aio num threads パラメーターを 設定すること。 新規の読み取りや書き込みの呼び出しを受信した際にアイドル状態の スレッドが存在した場合、新しいスレッドは作成されず、タスクは既存の アイドル状態のスレッドに割り当てられる。スレッドは 1 秒間アイドル 状態が続くと終了する。

このモジュールを有効にする際には、 smb.conf パラメーターの aio read sizeaio 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_pthread

オプション

aio_pthread:aio num threads = INTEGER

I/O 要求を処理するために thread pool 内に作成される smbd 毎のスレッドの最大数を設定する。

デフォルトの値は 100である。

バージョン

このマニュアルページはバージョン 4.0 のSambaシステム用である。

著者

オリジナルの Samba ソフトウェアと関連するユーティリティは、Andrew Tridgell によって作成された。現在 Samba は Samba Team に よって、Linuxカーネルの開発と同様のオープンソースプロジェクト として開発が行なわれている。

日本語訳

このドキュメントは、Samba 3.6.6 - 4.1.14 に対応する。

このドキュメントの翻訳は

  • 太田俊哉 (ribbon@samba.gr.jp)

  • たかはしもとのぶ (monyo@samba.gr.jp)

によって行なわれた。