BSD界隈四方山話

第64回 DragonFly BSD 4.6登場

この記事を読むのに必要な時間:およそ 2 分

DragonFly BSD 4.6登場

DragonFly BSDプロジェクトは2016年8月2日,DragonFly BSDの最新版となる「DragonFly BSD 4.6」を公開しました。性能の向上とさまざまな新機能の追加が実施されたメジャーアップグレードバージョンで,注目度の高いバージョンです。

「DragonFly BSD 4.6」の主な改善点や新機能は次のとおりです。

  • i915ドライバをLinuxカーネル4.4相当のドライバへアップデート。これによってBroadwellやSkylakeなどのプロセッサにおける安定性が大幅に向上。また,radeonドライバをLinuxカーネル3.18へアップデート(この結果バックライトの制御機能なども追加。drm.radeon.backlight経由で制御可能)
  • NVMeドライバ(PCI Express SSD)を追加。まだデフォルトでカーネルには組み込んでいないため,利用するには/boot/loader.confファイルに「nvme_load="YES"」を追加する必要がある。導入されたドライバはパフォーマンスを最大限に発揮するためにチップで提供されている並列処理機能をすべて使うとともに,割込を複数のコアに対して振るように実装されている。なお,NVMeデバイス上からシステムを起動できるかどうかはDragonFly BSDではなくBIOS/UEFIに依存している
  • NVMeドライバの開発とともにバッファキャッシュサブシステムの改善,I/O関連パスの改善,ロックコンテンションの削減,IPIシグナルオーバーヘッドの改善などを実施してマルチコア/プロセッサにおけるパフォーマンスを向上。ネットワークサブシステムにおいても最新のハードウェアへの対応や各種改善を実施し1秒間に580,000接続をハンドリングするまで性能を向上
  • FreeBSDから最新のipfw機能をマージ(DragonFly BSDプロジェクトではipfw3と呼んでいる)
  • FreeBSDからWIFIコードをマージ
  • FreeBSDからHyper-V対応コードをマージ
  • FreeBSDからAutoFS機能をマージ
  • FreeBSDからfstyp(8)をマージ
  • 対応パッケージを24,000パッケージまで増加
  • 実験的なUEFIサポートを追加
  • そのほか各種不具合の修正

マルチコア/プロセッサにおける性能が向上した点,とくにマルチコア/プロセッサにおけるI/O性能が向上した点が注目されます。またそれ以外では,FreeBSDから各種コードがマージされた点も注目されます(DragonFly BSDはFreeBSDから派生したオペレーティングシステムなので,FreeBSDからのポーティングが比較的容易です)⁠

HAMMER2ファイルシステムとClang

DragonFly BSDで最も注目される機能の1つといえばZFSと似たような機能を実現するHAMMERファイルシステムですが,DragonFly BSDプロジェクトはこのところHAMMERの開発をさらに進めた「HAMMER2」と呼ばれるファイルシステムの開発に取り組んでいます。DragonFly BSD 4.6に向けてHAMMER2の開発も大きく進んだとされていますが,まだプロダクションレベルで使える状態ではないとされています(NFS経由でexportはできるようになりました)⁠開発が進んだ部分としてはバックデバイス分離,安定性向上,マルチコア/プロセッサシステムにおけるスループットの向上などが挙げられています。

また,DragonFly BSDではメインのコンパイラGCCをClangに差し替えるために取り組みも進められています。今のところGCCの代わりにClangを利用できるようにするフレームワークが追加された段階で,Clangそのものはベースシステムにはマージされていません。Clangはパッケージとして追加されている段階です。

32ビット版のサポートを終了した理由

DragonFly BSDはすでに32ビット版のサポートを終了し,64ビット版のみをターゲットにしています。この1年の間に32ビット版をサポートするためのコードはコードベースから削除されていますし,すでに32ビット版はビルドされていません。32ビット版のサポート終了に対して時期尚早だとする向きもあるようですが,DragonFly BSDに限らず,ほかのオペレーティングシステムも同様の取り組みを進めておりそれほど無理のある取り組みではないと説明しています。

また,カーネルデベロッパの視点から32ビット版のサポートを廃止して64ビット版のサポートの絞ることの利点を次のように説明しています。

  • カーネルサブシステムのいくつかはより良い効率のアルゴリズムを実装するためにより大きなカーネル仮想メモリアドレス空間を必要としており,そのアドレス空間は32ビットモードでは実現が難しい。古いコードパスは32ビットを前提としている上,すでにメンテが不在で古くさくなってしまっている
  • 複数の理由から32ビット版pmapコードをメンテナンスするのが難しくなっている
  • 非DMAPコードパスはすでにテストもメンテナンスもされていないため,DMPAは存在しているものと仮定してコードを開発する必要がある。また,いくつかのアルゴリズムはDMAPなしには動作しない。32ビットカーネルはDMAPに対しては十分なアドレス空間を提供することができない
  • FPのサポートを継続するにあたって最低限でもSSE2レベルの機能を仮定する必要があり,コンパイラもこれを前提としはじめている
  • 実際のところすでに32ビット版のサーバやデスクトップがすでに稼働していない。ほかの*BSDファミリーは古いハードウェアのサポートにも取り組んでいるが,DragonFly BSDチームにはそれほどのマンパワーは存在していない。DragonFly BSDを適切な状態に保つためには,同世代で主力のハードウェアをサポートする必要がある

勉強会

第55回 8月24日(水)19:00~ ZFSアドバンス クォータ,リザーブ,圧縮,重複,スナップショット,クローンほか

今回のFreeBSD勉強会ではデータセットにおけるクォータやディスク容量の管理,リザーブや圧縮,重複排除,スナップショット,クローンなどの機能を解説します。ZFSの提供する機能は多岐に渡り,これまでのファイルシステムでは実現が難しかった機能が簡単なプロパティの設定などで実現することができます。こうした機能を知ることで,今よりももっとZFSを使いこなせるようになるはずです。

第53回目の勉強会ではZFSの基礎(データセット,プール)を,第54回目ではデータセットのプロパティの設定や,プールの追加,削除,リシルバリングなどについて解説しました。第55回目となる今回はZFSが提供している個々の機能に焦点をあて,使い方やその効果などを紹介します。

参加申請はこちらから。

第56回 9月27日(火)19:00~ ZFSとJailによるコンテナ技術活用,ユーザへのファイルシステム特権の委譲ほか

ZFSは管理者のやることを大きく変えました。多くの便利な機能は管理者にもう戻ることのできない利便性を与えてくれました。しかし,より突っ込んでチューニングを行ったり,さらに深い機能を使いこなそうとしたとき,ほとんどの管理者はZFSの深遠へ引きずり込まれ,果たしてやっている設定が適切なのは不適切なのかの判断も難しい状況に陥っているのではないでしょうか。

第56回目からは,ZFSの活用に焦点をあてながらZFSの使い方やチューニングの方法を紹介します。今回は特にJailにおけるコンテナ技術の1つとしてZFSを活用する方法や,ユーザにファイルシステム特権を委譲する方法などを採り上げます。余裕があればマシン間における効率的なレプリケーションの方法なども紹介します。

参加申請はこちらから。

コメント

コメントの記入