In message <20020826042519.0745e599.keita@kyomu.info>,
`keita yamaguchi <keita@kyomu.info>' wrote:
> はじめまして、keitaと申します。
はじめまして。
> * timeout
>
> タイムアウト処理におけるスレッドの new & kill の負荷が
> 大きいのでこれを軽減するtimeoutxライブラリを作成しました。
> 一応汎用性を期待して別パッケージにしてこれを使用しています。
すばらしい。
# 0.1.0 は typo があるようです。末尾にパッチつけます。
ええと、これは WEBrick 側で何もしなくても利用者側で require す
ればよいということですね。
> * zero copy
>
> Linux依存になりますが、システムコール sendfile を使って
> zero copy 通信をするようにしてみました。
> これもインターフェイス部分は汎用性があるかと思って
> 別パッケージにしています。
>
> http://kyomu.info/obj/comp/archive/ruby-sendfile-0.1.1.tar.gz
>
> これで改善されるのは静的なコンテンツの転送くらいなわけで、
> 一般的なWEBrickの使用目的から考えるとあまり効果的でないかも知れませんが
> 部分的にでも速いに越したことはないと思います。
# FreeBSD のログによると、sendfile はまさにそういうことをする
# ために作られたような感じですねえ。
# http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/uipc_syscalls.c#rev1.42
# … FreeBSD のは Linux と API が微妙に違いますが、HP-UX はど
# うなんでしょ。
速さとはちょっと違うんですが、大きなファイルを転送する場合に、
HTTPResponse がバッファをまるごと抱えないといけないのをなんと
かしたいとは思っていました。
API としては、body に IO をセットしたら、そこから少しずつ読み
取って送信するという感じにするつもりだったんですが、まさに
sendfile はぴったりですねえ。webrick-accelarator もそのほうが
書きやすそうだし。
うーん、どうしましょ。
--
ごとうゆうぞう
--- timeoutx.rb~ Sun Aug 25 19:31:24 2002
+++ timeoutx.rb Mon Aug 26 05:28:39 2002
@@ -24,5 +24,5 @@
def countdown
@table.keys.each do |th|
- @list[th] -= @interval
+ @table[th] -= @interval
if @table[th] <= 0
th.raise(TimeoutError, "execution expired") if th.alive?