Jail仮想環境IPv4/v6/NoIP対応、FIB割当対応、CPU割当対応
HEADブランチに統合された次のJail仮想環境機能がFreeBSD 7.2にバックポートされました。7.2のJail仮想環境には、これ以外にもIPv6+SCTPサポートなど、いくつかの新機能が実装されています。
Jail仮想環境に対してIPv4およびIPv6の双方を複数指定できるようになりました。IPを指定しないでJail仮想環境を構築できるようにもなりました。これでJail仮想環境をこれまでよりも多くの用途で活用しやすくなります。また、ルートFIBを指定してJail仮想環境を起動できるようになったことから、Jail仮想環境で独立したルーティング設定が可能です。Jail仮想環境を使って高性能ルータと同等の機能を実現できるほか、ネットワーク開発の実験プラットフォームとしても活用できます。
さらに、Jail仮想環境の中からroot権限で実行する必要があるものの、利用するCPUコアを特定するためのcpuset(1)が使えるようになりました。次のリリースでは外部からの指定できるようになる予定です。特定のCPUリソースを常に割り当てたJail仮想環境を構築したい場合に利用できます。
amd64版カーネル仮想アドレス空間6Gバイトへ拡張-ZFSサブシステムなどで効果
7.2ではamd64版におけるカーネル仮想アドレス空間が6Gバイトへと拡張されました。この結果、amd64版ではサブシステムが以前よりも多くの仮想メモリ空間を使えるようになりました。i386版は、そもそもそのままでは主メモリを3.2Gバイトほどまでしか扱うことができません。より容量の大きいメモリを扱おうとした場合、amd64版を使うことになるのは必然という状況です。この状況においてカーネル仮想アドレス空間を6Gバイトまで拡張するのは必然といえます。
カーネル仮想アドレス空間の6Gバイトへの拡張は、ZFSのようにカーネル空間でメモリを大量に消費するサブシステムには特に意味のあるものとなります。ZFSTuningGuideで説明されていますが、ZFSサブシステムはカーネル空間におけるメモリを大量に消費しますし、いくつかのチューニングも必要です。今回、amd64版でカーネル仮想アドレス空間が引き上げられたことで、このあたりの上限が増えることになります。
ネットワークインターフェースドライバの改善
いくつものネットワークインターフェースドライバが改善されました。バグの修正や新機能の追加も行われています。大まかに抜粋すると、i386版およびamd64版にale(4)を追加、ae(4)のWoL(Wake on LAN)対応とfxp(4)におけるWoLサポート対象の追加、コンテキストスイッチを削除することでaxe(4)の性能を改善、bce(4)およびcxgb(4)のファームウェアの更新、ixgbe(4)ドライバの更新、fxp(4)におけるオフロード機能の追加や改善などです。
注目されるのはre(4)やrl(4)などの比較的古いドライバに手が加えられ、リンクステータスを検出して動作するように改善が実現された点です。これまでこれらのドライバでは、ケーブルが引き抜かれてもそれを検出してからの処理を行っていなかったため、そのまま処理が継続され、パケットが失われる場合がありました。今回そのあたりが整理され、ケーブルが引き抜かれた場合には適切な処理をするようになりました。いきなりケーブルを抜いた場合などにパケットが失われる危険性が低くなっています。
- 追加、改良されたドライバ一覧
- ale(4) ale(4) ath_hal(4) axe(4) bce(4) ciphy(4) cxgb(4) fxp(4) igb(4) ixgbe(4) jme(4) msk(4) mxge(4) nfe(4) re(4) rl(4) sis(4) txp(4)
7.2-RELEASE不具合情報
リリースエンジニアリングの終盤などで発見され、不具合情報としてまとめることになった問題がFreeBSD 7.2-RELEASE Errataにまとめられています。執筆現在では、特定のPCでdisc1からの起動できないケースが確認されているほか、複数のスレッドを実行しているプロセスがfork(2)した場合のmalloc(3)処理でロックが発生するケースがあるというバグがあること、bce(4)とlagg(4)の組み合わせにバグがあることなどが記載されています。
これら不具合に対処したバージョンは試験期間を経てから随時アップデート版として公開されることになります。これらの問題を避けたい場合、しばらく待って対応版がリリースされてから評価に取りかかるといいでしょう。