星期三, 2月 14, 2007

HyperEstraier 的速度問題

這是拿 strace 仔細追 estmaster 的時候發現的問題,用的參數是 strace -o output.txt -p PID -ttt。(沒有用 ktrace 是因為 kernel 沒編進去)

主要的問題有兩個,影響比較大的是在 estmaster.c 裡面有一堆 est_usleep() 造成不必要的 nanosleep(),這個部份可以簡單的 comment 掉加速。

另外一個問題是在 est_sock_recv_line() 這個 function 裡面,讀取一行的方法是一次讀 1 byte,這會使得速度被拖慢 (雖然沒有上一個多),不過這個部份得改寫所有透過 socket 處理的 code,並不是那麼容易生出 patch...

總而言之, 頗有 woju 的味道...

沒有留言: