FreeBSD Daily Topics

2009年10月19日FreeBSDステータスレポート200904-09 その4 - ZFSプロダクション品質へ、Grand Central DispatchをFreeBSDへ移植、libnetstat(3)で一貫性向上

heads-up

FreeBSD/ZFS

これまで実験的機能としての提供と位置づけられていたZFSですが、プロダクションレベルに到達したとして出力されるメッセージが変更されました。FreeBSD/ZFSはすでにエンタープライズクラスのシーンでさまざまな採用事例を持っており、すでに活用できるレベルと判断されたとみられます。現在のところ継続してZFSの改善が続けられているほか、最新版となるZFS v.19を移植する作業が続けられています。

Grand Central Dispatch - FreeBSD port

Appleの提供しているGrand Central Dispatchのライブラリlibdispatchが移植されました。作業した内容として次の項目が説明されています。

  • Grand Central Dispatchを実現するにあたり必要になるkqueue(2)プリミティブを2つ(EVFILT_USER、EV_TRIGGER)追加
  • libdispatchを使うためにautoconfおよびautomakeビルドフレームワークの作成
  • MachセマフォではなくPOSIXセマフォを使うようにlibdispatchを変更
  • POSIXタイムルーチンを使うようにlibdispatchを変更

libdispatchはすでにPorts Collectionにdevel/libdispatchとして取り込まれています。FreeBSD 8.0-RELEASEがリリースされたあとでkqueue(2) EVFILT_USERおよびEV_TRIGGERがMFCされる見通しになっているため、FreeBSD 8.1-RELEASEはデフォルトのカーネルでlibdispatchが使えるようになります。

なおJordan Hubbard氏がブロック記述をLLVM Clangで処理できるようにしたFreeBSD版を用意したことも説明されています。LLVM Clangでビルドする場合は関数ベースのコールバックと同じようにブロックベースの記述も使えると言及されています。 今後の作業としてlibdispatchテストスィートを完全に移植すること、FreeBSD向けのpthreadワークキュー実装の調査、Mac OS Xバージョンで実施されているOS依存およびマシン依存の最適化がほかのFreeBSDでどの程度影響がでるのかの評価、FreeBSDのベースツールでlibdispatchを使うとどの程度の効果が見込めるのかの調査、などが挙げられています。

The libnetstat(3) project

The libnetstat(3) projectがプロジェクトの目的やサポートしている抽象化対象を紹介しています。libnetstat(3)はネットワーキング機能をモニタリングするためのユーザランドライブラリで、特の利点があると説明されています。

  • モニタリングアプリケーションをカーネルやユーザABI変更から分離するための機能を提供する
  • 64ビットカーネルにおいて32ビットモニタリングツールの実行をサポートする
  • 情報を取得している段階でのkvm(3)およびsysctl(3)の双方における一貫性の向上

サポートしている抽象化レイヤは次のとおりです。

  • アクティブソケットおよびソケットバッファ
  • ネットワークインターフェースおよびマルチキャストインターフェース
  • mbuf(9)統計情報
  • bpf(4)統計情報
  • ルーティング統計情報
  • ルーティングテーブル
  • マルチキャストルーティング
  • プロトコル依存統計情報

libnetstat(3)を使ったサンプルアプリケーションとしてネットワークバッファアロケーションやアクティブコネクションのモニタリングを実施するtop(1)ライクインターフェースのコマンドnettop(8)を作成してあるという説明もあります。また、可能な限りlibnetstat(3)を使うように書き換えたnetstat(1)もあると説明されています。

おすすめ記事

記事・ニュース一覧