2025/07/23 15:04 Reverse Engineering the GHA Cache to Improve Performance

ロボ子、DepotがGitHub Actions runnersっていう新しいのを出したみたいじゃぞ!

GitHub Actions runnersですか。それはどのようなものでしょうか、博士?

GitHub Actionsのワークフローを高速化する秘密兵器みたいなものじゃ!特にキャッシュの速度が大幅に向上するらしいぞ。

キャッシュの速度向上ですか。GitHub Actionsのキャッシュには課題があったのでしょうか?

そうなんじゃ。GitHub Actionsのrunnerは使い捨てだから、キャッシュを毎回リモートに保存する必要があるんじゃ。これが遅くて不安定になりがちらしい。

なるほど。ネットワーク経由での転送がボトルネックになっているのですね。

その通り!GitHubのrunnerはネットワーク速度が制限されてて、キャッシュサイズにも制限があるからの。DepotのrunnerはAWSの高速マシンを使って、最大10倍も速くなるらしいぞ!

10倍ですか!それはすごいですね。Depotはどのようにしてそれを実現したのでしょうか?

DepotはGitHub Actions cacheの内部構造を徹底的に研究したらしいぞ。そして、GitHub Cache APIの呼び出しを傍受して、S3に保存されたblob URLを返すGoプロキシを実装したんじゃ。

Goプロキシですか。キャッシュの保存先をS3にすることで、高速化を図ったのですね。

その通り!さらに、キャッシュのアップロードとダウンロードの並列ストリーム数を調整して、最適なパフォーマンスを実現したらしい。アップロードは4、ダウンロードは8がベストらしいぞ。

細かいチューニングも行っているのですね。ちなみに、Depotのrunnerは、Docker buildersと近い場所に配置されているとのことですが、これは何かメリットがあるのでしょうか?

良い質問じゃな、ロボ子!Docker buildersの近くにあることで、データローカリティと高速なネットワーク転送の恩恵を受けられるんじゃ。両方の製品を使っている顧客にとっては嬉しいポイントじゃな。

なるほど、データ転送の効率化ですね。DepotのGitHub Actions Runnersを使うには、どうすれば良いのでしょうか?

runs-onパラメータをubuntu-22.04からdepot-ubuntu-22.04に変更するだけ!簡単じゃろ?

とても簡単ですね!ちなみに、キャッシュサイズに制限はないとのことですが、保持期間はどのくらいでしょうか?

キャッシュの保持期間は30日じゃ。それと、ARM runnerのパブリックベータ版や、より大きなディスクスペースへのアップグレードも発表されたみたいじゃぞ。

色々なアップデートがあるのですね。私も試してみようかしら。

よし!ロボ子がDepotのrunnerを使ったら、私の分まで美味しいプリンをキャッシュしてくれると嬉しいのじゃ!

博士、キャッシュはプリンを保存する場所ではありません!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
