Lighttpd 1.5 系がスゴイらしい

はてブで lighty のブログがあることを知ってブログを見てみました。lighty の中の人が書いてます。

lighty01.jpg

ナント、lighty 1.5 系が pre release されているではありませんか!

なんでも、1.5 系は いままでより 80% のスループット向上が見込めると書かれています。激速の lighty が更に高速になるってわけですよ。Σ(゚Д゚;

- スポンサーリンク -

Using Async IO allows lighttpd it overlap file-operations. We send a IO-request for the file and get notified when it is ready. Instead of waiting for the file (as in the normal sendfile()) and blocking the server, we can handle other requests instead.
On the other side we give the kernel to reorder the file-requests as it wants to.
Taking this two improments we can increase the throughput by 80%.
On the other side we don’t spend any time in wait in lighty itself. 64 kernel threads are handling the read()-calls for us in the background which increases the idle-time from 12% to 40%, a improvement of 230% .

高速化のキモは Async IO on Linux っていう kernel 2.6.9 以降の機能(libaio)にあるらしく、RedHat の libaio の説明によれば、

Linuxネイティブの非同期I/O機構(「async I/O」、または「aio」)は、単純な POSIXの非同期I/O機構よりも豊富なAPIと機能セットを備えています。
このライブラリ、libaioは、非同期I/O用のLinuxネイティブなAPIを提供するものです。
POSIXの非同期I/O機構は、カーネルによる高速な非同期I/O機能を提供するためにこのライブラリを必要とし、またLinuxネイティブの非同期I/O APIを要求するアプリケーションの場合も同様です。

とあります。ちなみに、Oracle 10g でも libaio で非同期 I/O の仕組みを使って I/O 周りの高速化を図っています。(インストール時に libaio が入ってないとエラーになる。)
libaio についてのより詳しい情報は、「Kernel Asynchronous I/O (AIO) Support for Linux」に記載されています。

まぁ、取りあえず kernel 2.6 系を使っているならば、

yum install libaio

とでもして、最新の libaio を入れておいて損はないかと思われます。lighty 1.5 系のインストールにも必須ですし。

で、最終的に、「PRE-RELEASE: lighttpd-1.5.0-r1435.tar.gz」ってエントリーから tar-ball をダウンロードしてインストールしようとしたら、1.5 系ではその他にも大幅に変更がある模様。

What works and what doesn’t ?
 ・mod_fastcgi, mod_cgi, mod_scgi, mod_proxy are removed
   ・mod_proxy_core is the replace for the above plugins
   ・you have to spawn fastcgi processes with spawn-fcgi
 ・mod_cml is removed and mod_magnet isn’t included yet

fastcgi まわりが変わるみたいなので、開発環境でも作らないと気軽には試せないっすね。ベンチマークでは 512 Kb 以上の大きなファイルのスループットを計測してるのですが、小さなコンテンツを大量に返す場合のスループットを計測しなきゃと思う次第。

全体的に見て、遅くなる要素がなさそうなので動作検証がとれたら、自宅サーバをとっとと 1.5 系に乗り換えようと思ってます。

あぁ、あと、「mod-proxy-core and SQF」に書いてある、ロードバランスの機能がすごく気になりますね。Apache 2.2 系の mod_proxy_balancer あたりの影響受けてる?

調べることがいっぱいだ・・・

- スポンサーリンク -