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

資金提供による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に増やすことでパフォーマンスが元に戻ったことだね。

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

S3の元々のオブジェクトサイズ制限は5GBだったよ。2006年のブログ記事にも書いたけどね。これがあなたが見た崖に関係しているかは分からないな。

ノートパソコンの方でもたくさんの作業が進んでるみたいだね。BSD財団が750,000ドル投資したって読んだよ。(S0ixスリープ状態とか)プロジェクトのノートパソコンはここで見つけられるよ。 https://github.com/FreeBSDFoundation/proj-laptop

うん、いろいろ進んでるよね。自分がやってる作業についてちょうど書いてたところだよ。 ;-)

コリン、エンコーディング直して!

うーん、直すのは喜んでやるけど、何が壊れてるのか詳しく教えてくれる?

FreeBSDを使ってる人、Unixの中でどんなニッチを埋めてるのか教えてくれない?OpenBSDやNetBSDの方がずっとシンプルで一貫してるのに、なんでそれを使わないの?もしZFSやNvidiaドライバ、ELFとかのサポートが理由なら、Linuxでいいじゃん。GNUの問題はよくわかってるけど、Musl Voidみたいなものでも問題あるの?本当に気になってるんだ。FreeBSDは自分にとって影の領域に存在してて、その存在をずっと掴めないでいるけど、どこかには確かに存在してるって知ってる。

FreeBSDはOpenBSDやNetBSDよりもユーザーが圧倒的に多いよ。比べ物にならない。ソフトウェアのカタログもずっと豊富だし、現代的なデスクトップとしても使えるから、他の二つにはそう言えないな。なんでLinuxじゃないのかって?Linuxは要らないんだ。企業の利害に振り回されすぎてるから。

ZFSやNvidiaドライバー、ELFなどのサポートが理由なら、なんでLinuxじゃないの?FreeBSDはLinuxよりもZFSのサポートが優れてるよ。ライセンスの問題がないからね。

FreeBSDを使っている人、Unixの中でどんなニッチを埋めているのか教えてくれない?OpenBSDやNetBSDはもっとシンプルで一貫性があるのに、なんでそれらを使わないの?もしZFSやNvidiaドライバー、ELFなどのサポートが理由なら、なんでLinuxじゃないの?私のFreeBSDの経験から言うと、OpenBSDやNetBSDが特に扱う問題のバランスが良いんだ。歴史的に見ても、FreeBSDはIntel CPUを優先していて(NetBSDはポータビリティが高い)、セキュリティも堅実だった(OpenBSDはもっとそこに焦点を当てていた)。FreeBSDのZFSサポートは本当にゲームチェンジャーだよ。Nvidiaは最近やっとFreeBSD用のネイティブドライバーを出したみたいで、長い間FreeBSDのカーネルにはLinuxのサポートが必要だったんだ。 > 本当に気になるんだけど、FreeBSDは私にとって影の領域に存在していて、その動かす力をずっと掴めていないけど、そこには確かに存在しているんだ。私にとってFreeBSDは、他のBSDが提供する機能の良いブレンドであり、私が使うハードウェアプラットフォームでも非常に安定していることが証明されている。

FreeBSDはOpenBSDとは違ってスループット重視だし、NetBSDもそうじゃないと思う(実際にはあまり調べてないけど、NetBSDはポータビリティで勝負してる感じがするし、ネットワークのスループットを高く保つのにあまり時間をかけてない気がする)。全てのBSDは、良くも悪くも、あまり変動が少ない傾向があるから、個人的には統合するにはいいプラットフォームだと思う。

ちょっと気になるんだけど、FreeBSDやEC2の主なユーザーって誰なの?

Netflixはエッジボックスでだけ使ってるの?

さっぱり分からないよ。本当に、私と話すユーザーはFreeBSD/EC2の全体の0.1%くらいかもしれない。EC2でFreeBSDを使っているのは誰なのか知りたいな。

家のゲートウェイやファイアウォール、DNS、DHCPサーバーにFreeBSDを使いたかったんだけど、残念ながら10 GbEのNICにドライバーがなかったから、結局Nixにしたんだ。何年か前にワークステーションとしてFreeBSDを使ってたけど、その体験はすごく印象に残ってる。今も頑張ってるのを見ると嬉しいね。