Explore the Chromium Process

chromium

Chromium のプロセスとソースの関係

Chromium の内部構造(プロセスとソースコード)の関係を調べてみます。本家サイトはこちらです。
Getting Around the Chromium Source Code Directory Structure

ソースコードからビルドした人は既にお分かりと思いますが、Chromium のソースコードは短時間で全てを読み切れる量ではありません。これは本家サイト(以下引用)でも以下のように言及されています。

この記事ではプロセスがどのような役割で分離されているかを調べます。

chrome.exe をプロファイリングする

chromium を起動すると複数のプロセスが生成されます。これは chromium のプロセスが役割に応じて分散されているためです。役割に関してのドキュメントはこちら Multi-process Architecture (chromium.org) にありました。
実際に chrome.exe を調べてみます。ここでは Very Sleep というプロファイラーを使用します。

  • chrome.exe process list
    chromium のキャッシュがない状態で起動すると以下のプロセスが生成されます。
  • CrBrowserMain
    Very Sleepy で chrome.exe を上から順に一つずつクリックしていきます。ここで重要なのは一番最初に表示される Thread Name です。これはプロセス起動時の名称になっているようです。
    このプロセスは CrBrowserMain という名称です。
  • CrGpuMain
  • network.CrUtilityMain
  • storage.CrUtilityMain
  • CrRendererMain

ソースの配置と各Mainが定義されているソースの場所

各プロセスのエントリーが定義されているソースは全て content に配置されています。ソース配置構成の説明はここにありました。

  • CrBrowserMain 該当箇所
  • CrGpuMain 該当箇所
  • network.CrUtilityMain/storage.CrUtilityMain 該当箇所
  • CrRendererMain 該当箇所

chromium ソースコード リーディングの入り口には適切なプロセス解析

chromium のソースコードを読んでいくため、プロセスや機能分担を理解することで効率良く読んでいくことができるようです。どこかの機会で少し改変した chromium ができたらご紹介したいと思います。