[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NWS-3xxx



>>>>> On Sat, 25 Dec 2004 00:40:48 +0900,
	Izumi Tsutsui <tsutsui@ceres.dti.ne.jp> said:

> むかし simonb は anonmax を 80 -> 95 にするとメモリの少ないマシンだと
> かなり劇的に改善したと言ってましたが、これって vm パラメータの扱いの
> バグのせいだってんですかね? それとも今でも効くんでしょうか?

今でも効きます。
ただし、この 80 → 95 は、最適な値ではなかったようです。そもそも現在の
デフォルト値が大きすぎるのに、その大きすぎる値を絞る前に、増やすほうで
試したのが、その原因です。

もともとの話は、pc532 (メモリ8MB) で machdep.c をコンパイルするのに
要する時間が、NetBSD-1.5X で 9分33秒82もかかったのが、
vm.anonmax を 95 にしたら 2分6秒78に改善したという話でした。

ところが、1.6C だと vm.anonmax=95 でも 9分38秒15、
2.0Fだと vm.anonmax=95 で 44分52秒74 まで性能が落ちてしまった
そうです。

ところが、2.0F でも
	vm.{anon,exec,file}{min,max}={{10,90},{0,15},{0,1}}
	vm.bufmem_hiwater=131072
とすると、1分49秒73 で済むそうです。つまり、1.5X で vm.anonmax=95 と
するよりも速い。
(ただし、pc532 なので toolchain はたぶん 1.5X と同じもの?)

ここで vm.anonmax だけを 90 から 95 まで増やすと 2分13秒くらい
かかってしまい、かえって遅くなったそうです。
また、vm.anonmax 90 から デフォルト値である 80 まで減らすと
若干性能が落ちるが、それでも 1分56秒12で完了し、vm.anonmax=95 より
は速く終わります。
つまり、vm.anonmax を増やすよりも、vm.file* や vm.exec* を減らす方が、
実はずっと効果があったということです。

なお、vm.bufmem_hiwater=131072 は絞りすぎの可能性が大きいですが、
メモリの少ないマシンでは、少なくとも
vm.bufcache=5
くらいまでは絞った方が良いです。
今のカーネルだと、これ以上絞ろうとするひとハネられるので、
これ以上絞りたい場合は vm.bufmem_hiwater を小さくして調整します。

> ちょっと前に dreamcast でいろいろ試した時はどれをやっても
> あまり変わらない、という感じでした。

コンパイル中に vmstat を実行してみて、page out が常時起きている
ようであれば、調整する価値はあると思います。pc532 では
44分52秒74 → 1分49秒73 なので、25倍近く速くなっているわけですから。

調整の出発点としては、
	vm.execmin=0
	vm.execmax=5
	vm.filemin=0
	vm.filemax=1
	vm.bufcache=5
は、それほど悪くない値だと思います。
--
soda