世界を動かす技術を、日本語で。

資金提供によるFreeBSD開発の1年

概要

  • 2010年からAmazon EC2上でFreeBSDを運用し、2023年11月からFreeBSDリリースエンジニアリングリーダーに就任。
  • Amazonからのスポンサーシップにより、FreeBSDリリース作業とEC2対応開発を年間約600時間実施。
  • FreeBSD/EC2における「電源ドライバ」やデバイスホットプラグ対応など、主要機能をAmazonの要望で優先開発。
  • FreeBSDの起動時間短縮や性能改善も実施し、問題の特定と修正に注力。
  • スポンサー期間終了を迎え、これまでの成果と今後の課題を総括。

FreeBSD/EC2運用とリリースエンジニアリングの現状

  • 2010年から Amazon EC2 上で FreeBSD を運用開始。
  • 2023年11月、 FreeBSDリリースエンジニアリングリーダー 就任。
  • AntithesisPatreon からの資金援助も受けるが、リリース作業がEC2開発時間を圧迫。
  • Amazonとのスポンサー交渉は難航したが、2024年4月に GitHub Sponsors 経由で1年間の支援が決定。
  • スポンサー期間は 40時間/月 が目安だが、実際は 約50時間/月 作業し、EC2関連・リリース・その他に分配。

FreeBSDリリース作業の実態

  • 2024年5月のBSDCanで四半期リリーススケジュールを発表。
  • 過去1年間で以下のリリースを担当:
    • FreeBSD 13.4 (2024年9月)
    • FreeBSD 14.2 (2024年12月)
    • FreeBSD 13.5 (2025年3月)
    • FreeBSD 14.3 (2025年6月10日予定)
  • リリース作業内容:
    • 開発者へのリマインド
    • マージリクエストの承認・却下
    • 他チームとの調整
    • イメージのビルド・テスト(ベータ3回、RC1回、リリース1回)
    • アナウンス文の作成
    • リリースビルド時の障害対応
  • リリースごとの作業時間は 33.5~79時間、ブランチ後期ほど工数減少傾向。

FreeBSD/EC2でのAmazon優先課題対応

  • AWS Graviton インスタンス向け「電源ドライバ」実装

    • ACPI _AEI オブジェクト経由で「電源ボタン」イベントを検知し、シャットダウン対応。
    • PL061 GPIO コントローラ用の設定追加。
    • EC2の Pull Up 設定バグには ACPI_Q_AEI_NOPULL で暫定対応。
  • デバイスホットプラグ(特にホットアンプラグ)対応

    • GravitonでのIRQリーク問題は「レガシーPCI割込みルーティング」無効化で解決。
    • PCIデバイス電源状態による誤判定には ACPI_Q_CLEAR_PME_ON_DETACH で対応。
    • 新世代EC2でのnvmeドライバパニックは担当者へ報告し修正依頼。
    • PCIバス上の「ゴースト」デバイス問題は ACPI_Q_DELAY_BEFORE_EJECT_RESCAN で10msディレイを導入。
    • PCIeホットプラグ時の「5秒待機」仕様をEC2では即時化し、起動高速化。
    • テストスクリプトを作成し、EBSボリュームの着脱300回連続成功を確認。

FreeBSD/EC2の性能改善と課題解決

  • 2021~2022年に起動時間短縮へ多くの作業を実施。

  • 2023年末から2024年初頭、EC2インスタンスの起動遅延問題を認識。

    • 過去のAMIを使い、起動時間ベンチマークを実施し、週次で性能プロットを生成。
    • 2024年初頭、ルートディスクサイズを5GB→6GBに増やしたタイミングで起動3倍遅延を確認。
    • ルートディスクを8GBにすると性能回復、Amazon側の仕様によるものと判明。
  • Graviton2インスタンスでの起動遅延はカーネル乱数(エントロピー)初期化遅延が原因。

    • EFIブートローダ経由のエントロピー取得がEC2で正しく動作していなかった問題を修正。
    • Graviton2では大量エントロピー取得が遅いため、 PBKDF2 による「エントロピースプレッダー」実装で高速化。

今後の展望とまとめ

  • Amazonスポンサー期間終了に伴い、これまでの成果を総括。
  • FreeBSD/EC2の安定運用とリリース体制強化に一定の成果。
  • 今後も新機能実装や性能改善、問題発見・修正の継続が課題。
  • AmazonやFreeBSDコミュニティとの連携強化を希求。

Hackerたちの意見

cpercivaにはめっちゃリスペクト。どうやってこれ全部とTarsnapを管理してるのか、全然わからないよ。

ある時点でお金が時間を買うことができるってことがわかった。漏れてる水道の蛇口を自分で直すか、配管工を雇うか。電気工が地下室の壁を壊した後(これは全然妥当な理由で、ソーラーパネルを取り付けるために電気パネルをアップグレードする必要があったから)、自分で直すか、プロのドライウォーラーを雇うか。正直言うと、これにかけた時間の一部はTarsnapから来てたけど、想像するほど多くはないよ。

Amazonがもっとお金を出してくれることを期待してたんだけど、結局彼らは最低限のFreeBSDサポートにしかお金を出したくないみたい。AmazonはFreeBSDのスポンサーリストにも載ってないし[1]、Googleは去年9,000ドルしかスポンサーしてない。Appleもいないし。追記:Microsoftが少なくともリストに載ってるのは評価したい!それにMeta/Facebookも抜けてるのを忘れてた。彼らはFreeBSDとOpenBSDを毎年スポンサーしてもおかしくないと思ってたのに、実際には使ってるのにね。[1] https://freebsdfoundation.org/our-donors/donors/?donationYea...

もちろんAmazonにはもっと貢献してほしいけど、FreeBSD Foundationの寄付者として名前が出てこないからって、FreeBSDをサポートしてないわけじゃないんだよね。例えば、彼らが僕に支払ったお金はFoundationを通ってないし、Foundationが資金提供してる開発は企業が資金提供してるFreeBSD開発の中で多分10%くらいだと思う。(これは重要な10%で、"FreeBSDが必要としているもの"に焦点を当てられるから、"会社Xが必要としているもの"とは違うんだけど、やっぱり少数派ではあるね。)

このコメントは全体像を示してないよ。まず、これは特定の年のFoundationへの寄付のスナップショットを示してるだけ。寄付の歴史は定義上含まれてない。次に、貢献された開発についても触れてない。これらは通常、各リリースのリリースノートに簡潔にまとめられてるよ[1]。[1] https://www.freebsd.org/releases/

なんで嘘をつくの?リンクしたページにはAppleも載ってるよ、企業/個人に切り替えれば。

Microsoftが彼らを資金援助する理由って何なんだろう。彼らのHyper-V拡張はLinuxほど充実してないし、.NETのMicrosoftサポート版もないよね。Microsoftが提供する*BSD向けのサービスって、クラウドも含めて思いつかないな。

AmazonはFAANGの中でFOSSに対して一番手を抜いてるよ。

いいね!ちなみに、ziglang.orgのダウンロードページにFreeBSDを追加したばかりなんだ(今日から)、だからFreeBSDユーザーはCIで自動的にビルドされたマスターブランチをゲットできるよ。これで、libcをリンクする時も含めて、初級サポートのクロスコンパイルターゲットになったから、zig cc -o hello hello.c -target riscv64-freebsdみたいなことができる。もちろん、C/C++の依存関係があれば、zigのビルドシステムを使ってそれらを取得してビルドできるから、かなり複雑なプロジェクトでもFreeBSD用に簡単にクロスコンパイルできるはず。これがもっと多くのプロジェクトがFreeBSDサポートとそれに伴うテストをCIに追加する手助けになればいいな!

Zigのクロスコンパイルはすごいね!FreeBSDがサポート対象に入ってるのも嬉しい。

ここには面白い話がいくつかあるよ。> 2024年の最初の週から、FreeBSDのブートプロセスが突然約3倍遅くなった。コミットをバイセクションして、原因を突き止めたら…ルートディスクのサイズを5GBから6GBに増やすコミットだった。なんで?まあ、Amazonの友達に聞いてみたら、答えは「魔法」と「本当に知りたくないこと」の間にあったみたい。でも、僕にとって重要なのは、ルートディスクのサイズを8GBに増やすことでパフォーマンスが元に戻ったことだね。

でも、今は本当に知りたいな。

Hacker Newsで議論の続きを見る