2014/06/05

Openindianaが遅い!重い!これで解決

[完全リニューアル]本当に効果のある方法を教えます。

驚愕の事実

なんと、デフォルトでちゃんとしたタイムシェアリングが有効になっていない場合がある?
FX=固定配分だと? どうりでマルチスレッドのプログラムでも1cpu分しか使えないわけだ!
dispadminコマンドで確認し、

# dispadmin -d TS

で有効にできます。
FSSという新型のスケジューラーでは優先度に応じて公平に配分できるらしい。

え、そこを変えるの?

Solaris系のリソース管理は複雑で、特定のzone、もしくは、特定のprojectというもので管理できます。
projectってなんずら? 例えばこいつの10番はgroup.staffになっていて一般ユーザーということです。1番がrootで0番がsystemです。
何か目的毎にプロジェクトでリソース制限ができる。

# prctl -n project.max-contracts -v 12 -r -i project 0


Solarisの名残の「契約数」というパラメーター。これは購入ライセンス数ですが、もちろんOpenindianaだから、タダ。
これを自分のパソコン(2コア4スレッド intel Core-i3 350M)の3倍にした。これによってスケジューラーの動作が身の丈に合うものに。
本当に高速になります!!
しかしスレッド数の3倍ですよ? 売っているSolarisはライセンスを買い込まないとパフォーマンスが出ないのか?

# prctl -n project.max-shm-ids -v 2048 -r -i project 10
# prctl -n project.max-msg-ids -v 8192 -r -i project 10
# prctl -n project.max-sem-ids -v 2048 -r -i project 10


GUIや最近のプログラムだとメモリ共有のパラメータが128まででは遅くてしょうがないんじゃないの?
共有メモリとセマフォの設定項目は/etc/systemにも設定できる。しなくてはいけないのか?

I/Oを速くする


いまではデスクトップでもI/Oが大きいことがあります。もし、純粋なデスクトップ用途なら


#グラフィック
strmsgsz=262144
strctlsz=262144
#ディスク
maxphys=262144


これを/etc/systemに書いて再起動してみてください。USBデバイスのreadが快速に。
逆にサーバーではここまで大きくする余裕がないかもしれません。

デフォルトの設定がこんなに簡単なことすらしないの?

Linuxは、ハッカーのデスクトップの用途から始まり、サーバーに使われるようになったのでパラメーターチューニングが後で
CFQ、ミラクルパッチなどの設定なしでうまく処理をスケジューリングする機能が発達しました。
しかしSolaris系ではサーバー管理者が場合に応じて懸命にパラメータを変えるのが本来の有りかたなのです…
しかし上記の設定によりだいぶ動画がなめらかに再生できるはずです。
あと、なんかヤバいことを指摘した気がする。
スポンサーサイト

コメント

非公開コメント