会議等に携帯型計算機を持ち込み、その場で LAN を構築する場面が増えつつ ある。このような一時的な LAN 環境では、計算機のアドレスや利用者といっ た情報を事前に特定することは難しい。そのため、ファイル交換に共有ファイ ルシステムを利用すると、接続時にサーバの指定や利用者の設定が毎回必要と なる。そこで、これらの繁雑な設定を自動化し、LAN に接続するだけですぐに 利用できる共有ファイルシステムを開発した。
共有ファイルシステムは NFS をベースとし、ユーザプログラムによって必要 な機能を追加する形で実装を行った。本システムは、ブロードキャストによる サーバの探索、共有ディレクトリの自動マウント、接続状態の監視による自動 アンマウント、クライアントユーザに対するアカウントの割当て、NFS パケッ トの UID/GID 変換の機能を持つ。
クライアントでは、サーバ一覧と共有ディレクトリをディレクトリ階層として 認識できる。実際に共有ディレクトリにアクセスすると、自動的にマウントが 行われて利用できるようになる。利用中にサーバとの通信ができなくなると、 自動的にアンマウントを行う。
ファイルのアクセス制御は、クライアントのユーザを匿名ユーザと認証ユーザ として識別することで行う。匿名ユーザは接続するだけでアクセスできるが、 読込みのみに限られる。認証ユーザはパスワードにより認証を行い、読書きが 可能である。
質疑応答:
Q. プログラムの実行には root 権限が必要か ?
サーバ・クライアント共に必要です。しかし、携帯型計算機の場合はその所有 者自身であることが多いため root 権限を持っていると考えています。また、 実際のファイルシステムのアクセスは通常のユーザ権限で可能であるため、 OS の起動時に実行しておくようにすれば誰でも利用することができます。
Q. Windows では使えないか ?
今回構築したシステムではファイルシステムのプロトコルとして NFS を用い ているため、そのまま動作させることは難しいです。しかし、プロトコルとし て SMB/CIFS を用いることで Windows でも使えるようにすることは可能であ ると考えています。
Q. Sharity Light との違いは ?
サーバ一覧をディレクトリ階層として参照できる機能については同じですが、 クライアントユーザの扱いの部分が異なります。
Q. 複数のドメインに対して異なるマウントポイントを指定できないのか ?
現在利用しているネットワーク上の情報を示すことを想定しており、複数のマ ウントポイントを指定して利用することは考えていません。
Q. 同じ IP アドレスを設定することでクライアントのなりすましは起こらな いのか ?
サーバではクライアントからのアクセスを監視しているので、30 秒間通信デー タが来ないと認証ユーザの割当てを解放します。そのため、2 台のクライアン トが共謀すればなりすますことは不可能ではありません。ただし、共謀するの であればパスワードを教えた方が早いため意味があるかどうかは不明です。
Q. サーバと通信できなくなると "server not responding" で固まらないのか ?
クライアントプログラムがサーバの代わりに NFS クライアントに対して代理 でエラーを返すことで対応しています。
IEEE 1394 (FireWire、i. Link とも呼ばれる) のコントローラは、CPU の処理を 介さずに、通信先とメインメモリとの間でデータの送受信を行う Physical Read/ Write 機能を持っている。この通信のとき、CPU に割り込みは発生しない (CPU は通信があったかどうかさえわからない) ため、OS やカーネルプログラムの挙動 を測定するのに IEEE 1394 は有効な手段といえる。
発表では、Linux を動作させた PC 2 台を用い、プロセスの動作状態等をリアル タイムに表示するプログラムをデモンストレーションした。Physical Read を使 って測定対象 PC のメモリを「覗き見」しているため、測定によって OS の動作 が変わることはなく、また、通常は観測が難しい割り込み許可/禁止の状態を測定 できることを示した。
そのほか、カーネル内のイベントをトレースするカーネルプロファイラについて 説明した。このプロファイラは、測定データの転送手段に Physical Read を使用 しており、短時間のうちに大量に生成されるトレースデータにも対応することが できる。発表では、測定の例として TCP パケットの送信処理について取り上げた。
最新の Linux 2.4 には IEEE 1394 のドライバが標準であり、Physical Read/ Write もデフォルトで有効なため (危険な……)、それらと市販の IEEE 1394 コ ントローラ (OHCI 準拠) があれば、同様の測定が可能である。
質疑応答:
Q. Physical Read で読み出すメモリ内容はいつの時点のものか?
A. Physical Read する時点の最新のメモリ内容。具体的には、IEEE 1394 コント ローラが Physical Read のパケットを受け取り、レスポンスのパケットを作 るとき。
Q. キャッシュの影響で、IEEE 1394 が最新のメモリ内容を得ることは難しいので はないか?
A. IA-32 では、バススヌープのおかげで、キャッシュを明示的に無効化しなくと も、DMA のバスマスタ (1394 コントローラ) がメモリの最新データを取得で きる。実際に Physical Read を使って簡単なテスト (繰り返しデータを読み 出し、毎回書き換わっているか調べる) をしたところ、期待どおりの正しい 値が得られていた。
※ [発表者補足] キャッシュの無効化が必要なアーキテクチャー (MIPS 等) で は、Physical Read が期待どおりに動かないか、性能がかなり低下するかもし れない。
Q. ユーザ空間の測定にも使えるか?
A. ディスクへのスワップがなければ、ページテーブルを取得するなどして、ユー ザ空間の測定も可能なはず。
Q. SMP マシンにも使えるか?
A. IEEE 1394 によるメモリの覗き見は、SMP マシンでも可能。自作のプロファイ ラについては、IA-32 の TSC (タイムスタンプカウンタ) に関する処理を追加 変更すれば、対応できる。
Q. Physical Read を使ってメモリダンプを取ることができるか?
A. 可能。300Mbps 弱程度 (実測) のスループットでメモリの全データを読み出す ことができる。だから、自作 OS のデバッグ等にも使えるかもしれない。
Q. (Physical Read と CPU によるメモリアクセスの競合が発生し、それによって マシンの処理性能が低下する、という発表者の言葉を受けて) 競合による性能 低下について、もう少し正確に測定するのが良い。現在の測定では、競合の影 響が小さく評価されているのでは?
A. たしかに、そのあたりの評価はまだ甘いと思う。ただ、デモで示した測定例で は、性能低下は 2% 強に抑えられており、実際の測定では問題になりにくいと 考える。
コメント:
- ピンダウンされている領域を覗き見る、というやり方もできるだろう。特に ネットワーク処理はリアルタイムで挙動を見ないといけない。
※ [発表者補足] そのとおりで、I/O 処理やリアルタイム処理の測定にも今回の 手法は有効だと考えている。