2010年12月29日 (水曜日)

16:14:41 # Life apacheの専門用語 Brigade + bucket. Apache module で filter を実装しようとすると、入力として渡されるデータ形式が brigade で、出力として期待されているのも brigadeっぽい。Brigadeって普通に考えると軍事用語で直感的ではないのでメモ。 HTTP サーバを素直に実装してみると、文字列操作がいくつか発生するのに気づくだろう。クライアントに返すためのヘッダを先頭に追加したり、途中にデータを挿入したり、そういう操作がいくつか発生する。ネットワークやディスクから取得したデータをネットワークで送出するまでの一連の流れで文字列操作をゼロコピーでできればいいな、と思うかもしれない。例えば、ファイルをネットワークに送信する場合は、ヘッダをメモリ上で作成して、その続きで送るファイルは中身をreadで読んでwriteで書き出す必要はなくて、カーネルにsendfileで送信させればよい。 Apache の内部で使われている brigade と bucket というコンセプトはそれの一つの解らしい。 bucket は入力情報の管理の単位で、 メモリ領域やファイルデスクリプタを管理する。 brigade は一連の bucket を管理する。

参考:

Junichi Uekawa

$Id: dancer-diary.el,v 1.94 2009/10/21 14:02:48 dancer Exp $