Google Chromeアップデート高速化の秘密、bsdiffと逆アセンブラ

 

Google Chrome Blog - The latest news from the Google Chrome team

GoogleはChromium Blog: Smaller is Faster (and Safer Too)およびSoftware Updates: Courgette ‎(Chromium Developer Documentation)において、Google Chromeのアップデート機能を改善し、従来よりもさらに小さいサイズでのパッチ配信が可能になったと伝えている。この新しい手順はCourgetteと呼ばれている。

Googleはブラウザのセキュリティを向上させる目的でChromeに自動更新機能を実装している。ほかのブラウザと異なり、基本的にユーザはこの機能を無効にできない仕組み。この機能を通じて安定版ではセキュリティアップデートが定期的に実行され、開発版では頻繁にアップデートが実行される。

アップデートで重要になるのは、どれだけ配信するパッチを小さく収められるかにある。サイズが小さければ、それだけ迅速に多くのユーザにパッチが配信できるため脆弱性への対処が迅速になり、通信帯域が細いユーザにとっても都合がいい。これまでChromeではこのバイナリパッチにbsdiff(1)/bspatch(1)を使ってきた。ほかのバイナリパッチよりもサイズが小さく、よく機能すると説明されている。bsdiff(1)/bspatch(1)はもともとはColin Percival氏によって開発されたFreeBSDのバイナリアップデートシステム「FreeBSD Update」で活用されているもの。

今回Googleは、bsdiff(1)/bspatch(1)を適用する前に、一旦プロダクトを逆センブラしてバイナリからコードに近い状態へ変更してからbsdiff(1)/bspatch(1)を適用するように、パッチ作成時に改善を加えたという。さらに差分が小さくなるように逆センブラした結果にさらに調整を加えることで、バイナリそのものにbsdiff(1)/bspatch(1)を適用した場合よりもパッチサイズの縮小化に成功したと説明している。

開発版の190.1から190.4へアップデートした場合のサイズの違いは次のとおり。bsdiff(1)のみを適用した場合よりもさらに縮小化されていることがわかる。

  • フルサイズ: 10,385,920バイト
  • bsdiff(1)のみ: 704,512バイト
  • Courgette: 78,848バイト

ソースコードでは数行程度の違いしかないものでも、コンパイルするとバイナリでは大きな違いが発生する。Courgetteの手法はバイナリパッチのサイズをさらに引き下げる方法として興味深い。

関連キーワード


転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

恋のドキドキ?死の予感?シロクマがアザラシに求愛「恋するシロクマ」2巻
[22:41 8/28] ホビー
[NEWS加藤シゲアキ]24時間テレビSPドラマ 代役・小山に感謝
[22:23 8/28] エンタメ
写真甲子園2016、キーワードは「お国言葉の写真」 - 写真の上手さ以前に求められるオリジナリティ
[21:51 8/28] スマホとデジタル家電
病気でフェロモンが出ちゃう男たちのBL「ドラッグレス・セックス」
[21:09 8/28] ホビー
長澤まさみ、神木隆之介らにアドバイス「堂々と歩けばいい!」
[21:00 8/28] エンタメ

求人情報