LAST MODIFIED: 2009/11/28 17:48:21 UTC
不定期更新の日記です。ディスクスペースの関係上、 あまりに古くなったものは順次消していきます。 この日記の更新は、今野さんの *BSD Diary Links から取得することが可能です。
[→
書籍情報] [→ amazon.co.jp] [→ cbook24.com] [→ 関連する日記のエントリ (09/24)] |
ようやく出せました。
8.0R のアピールポイントは、
VFS, netisr, tty, L2 table の並列度向上
USB スタック全面書き換え
net80211 の multiple instances 対応と 802.11s
ZFS v13
IPsec NAT-T
というとこです。日記のエントリにも書いた VIMAGE は面白い機能なのですが、まだいくつか不完全なところがあるため、実用になるかは微妙かも知れません。8.0R に間に合ないと 9.0R まで待つはめになってしまうので、時間の許す限りバグを潰しつつ突っ込んだ感じです。今後の改善に期待。
新しいリリースが出ると新機能の追加に目をうばわれがちですが、7.Xと比べて、各サブシステムの並列度が飛躍的に向上した点が一番大きい のではないかと思います。vfs.lookup_shared がデフォルトで 1 になり、vm.pmap.pg_ps_enabled は amd64 でのみ、デフォルト 1 になりました。SSD など IOPS が高いデバイスを使っている場合は、vfs.read_max を増やすとさらに効果的です。7.X では VFS でのロック競合の発生頻度が高 く、read_max を増やしても逆効果になることが多かったのですが、だいぶましになっています。
vm.pmap.pg_ps_enabled は、superpages と呼ばれる VM のページ集約機能を有効にするかどうかの tunable です。i386 と amd64 では 4kB より大きいページサイズを使うことができますので、まとまった量の連続ページをひとつの大きなページで置き換えて、TLB (論理アドレスと物理アドレスの変換時に使うテーブルのキャッシュ) のヒット率を向上させることができます。Solaris で MPSS (Multiple Page Size for Solaris) とか呼んでるものと似たようなコンセプトですが、アプリケーション側には、何の変更も要らないという点が特徴的です。大きな物理メモリをマップするアプリケーションには、性能的な効果がかなりあります。
superpages は amd64 と i386 の両方で使えますが、前述のとおりi386 ではデフォルトで無効にしてあります。これは、ダイレクトマッピングでないと、ページサイズの変更を並行処理することができないため、i386 だと逆に VM のロック競合が支配的になってしまって、性能が低下する可能性が高いだろう、という懸念材料があったためです。どのみち superpages が効果的なのは大きなデータセットに対する処理なので、i386 での効果は限定的かも知れません。
デフォルトで有効にしなかった機能としては、ATA-CAM (AHCI 対応), NFS サブシステム書き換えなどがあります。USB スタックの書き換えは、動くようになったデバイスもあれば、動かなくなったものもあるので、livefs などを使って事前に動作確認することをおすすめします。
で、次に 8.0R の問題点まとめ。
NFS のデフォルトトランスポートが TCP に変更されたのは良いのですが、 TCP の接続が切れた時の再接続にすごく時間がかかるというバグがあります。 r199053 で修正ずみ。
NFS サーバのメモリアラインメント処理にバグがあります。 i386 や amd64 では問題にならないのですが、アラインメントが厳しいアーキテクチャでは panic します。 r199274 および r199284 で修正ずみ。
rename("x", "y/.") で panic が発生します。 r199137 で修正ずみ。
ZFS のリプレイ時に許可属性のセットに失敗することがあります。 r199157 で修正ずみ。
全部になるかどうか分かりませんが、これらの問題点については Errata Notice を出す予定です。
8.0R に移行するときの注意点はこちら。
i386 と amd64 では、デフォルトのシリアルポートデバイスドライバが sio(4) から uart(4) に変更されたので、デバイス特殊ファイル名が変わっています。 /dev/ttydN が /dev/ttyuN に、/dev/cuadN が /dev/cuauN になっていますので、ご注意。
無線 LAN インタフェースの設定方法が変わっています。たとえば iwi0 であれば "ifconfig wlan0 create wlandev iwi0" のように、wlanN インタフェースを生成して、 ネットワーク設定は wlanN に対して行なうようになりました。rc.conf では wlans_iwi0="wlan0" という行を追加すると自動的に wlan0 ができますので、 あとは ifconfig_wlan0 に設定を追加してください。ifconfig_iwi0 は使えませんのでご注意。
LAST MODIFIED: 2009/11/28 17:48:21 UTC