概要
- 2010年からAmazon EC2上でFreeBSDを運用し、2023年11月からFreeBSDリリースエンジニアリングリーダーに就任。
- Amazonからのスポンサーシップにより、FreeBSDリリース作業とEC2対応開発を年間約600時間実施。
- FreeBSD/EC2における「電源ドライバ」やデバイスホットプラグ対応など、主要機能をAmazonの要望で優先開発。
- FreeBSDの起動時間短縮や性能改善も実施し、問題の特定と修正に注力。
- スポンサー期間終了を迎え、これまでの成果と今後の課題を総括。
FreeBSD/EC2運用とリリースエンジニアリングの現状
- 2010年から Amazon EC2 上で FreeBSD を運用開始。
- 2023年11月、 FreeBSDリリースエンジニアリングリーダー 就任。
- Antithesis や Patreon からの資金援助も受けるが、リリース作業が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コミュニティとの連携強化を希求。