kledgeb UbuntuやLinuxの最新情報を紹介

Ubuntu 20.10 その22 - パッケージの圧縮形式の変更によるSnapアプリの大幅な起動時間短縮

Snapアプリの大幅な起動時間短縮

「Snap」はアプリケーションをパッケージングし、隔離された環境でアプリを実行する仕組みを提供します。


  • Snap speed improvements with new compression algorithm!

特定のLinuxディストリビューションに依存しない

特定のLinuxディストリビューションに依存せず、様々なLinuxディストリビューションで「Snap」及び「Snap」で提供されるアプリを利用できます。
いわゆるアプリケーションコンテナですね。


この仕組みにより開発者は様々なLinuxディストリビューションにアプリを横断的に提供でき、そしてユーザーは自身が利用しているLinuxディストリビューションに捕らわれることなくアプリを利用できます。

コンテナならではの課題

「Snap」が持つ課題の一つは、リソースの共有が限られるため、メモリーやディスク使用量が増大したり、ネイティブに動作するアプリよりも余計に起動時間がかかってしまうことです。
もちろん「Snap」にはそれ以上の利点もありますが、debやRPMパッケージで提供されるネイティブアプリよりもリソースの使用量は増加傾向にあります。

「Snap」でもユーザーからアプリの起動に時間がかかるとのフィードバックが数多く寄せられています。
この課題は開発者が何年もの間認識している課題であり、日々改善や解決に向けて取り組んでいる課題です。

  • Snapアプリケーションの起動時間短縮

Snapパッケージのインストールと展開

「Snap」では、アプリやアプリの動作に必要なソフトウェアを一つにまとめてパッケージとしてアプリを提供しています。
(インターフェースによるソフトウェアの共有も可能ですが、ここでは扱いません。)
ユーザーがアプリをインストールするとSnapパッケージがインストールされます。


そしてその中身が「/snap」に展開(マウント)されます。


マウント状況を確認すると、以下のようにパッケージが「/snap」にマウントされていることが分かります。


パッケージはSquashFS

パッケージは「SquashFS」であり、これは読み取り専用の圧縮されたファイルシステムになっています。


  • SquashFS

「Snap」の「SquashFS」ではデフォルトの圧縮アルゴリズムに「XZ」を採用しています。
「XZ」の高い圧縮率によりパッケージサイズを削減していますが、ファイルシステムの展開時には相応の処理コストが掛かります。

アプリの起動時間に影響を与える

ファイルシステムの展開はアプリの起動時間に影響を与えるため、ユーザーによってはこれが原因でアプリの起動が遅く感じられることがあります。

特にアプリがメモリ上にキャッシュされていない状態で起動する場合(コールドスタート)、この傾向が顕著になります。
逆にアプリがメモリ上にキャッシュされている状態で起動する場合(ホットスタート)、ネイティブアプリとの起動時間の差はほとんどありません。

圧縮形式の変更による起動時間の改善

そこで圧縮アルゴリズムの変更が検討され、「LZO」の採用とテストが実施されました。
「LZO」の採用により圧縮率が下がるため、パッケージサイズは増大します。
その一方でファイルシステムの展開にかかる時間が削減されるため、アプリの起動時間が短縮されます。

起動時間が2倍から3倍早くなった

テストではSnap版「Chromium」が使用され、パッケージサイズと起動時間のテストが実施されました。
パッケージサイズは「XZ」で約150MBでしたが、「LZO」では約250MBに増大しています。

コールドスタート時の起動時間の比較では、「XZ」に比べ「LZO」では約2倍から3倍早くなっています。
ネイティブアプリとの起動時間を比較しても、それほど遜色ない差になっています。

またホットスタートでは元々ネイティブアプリとの起動時間の差はほとんどありませんし、「XZ」と「LZO」を比べても大した差はありません。

今後も改善は続く

「Snap」に対する改善はこれで終わりではありません。
今後も継続的に改良や最適化が行われていきます。

Ubuntu
スポンサー
コメント
コメントポリシー
コメントをする前に UbuntuのCode of Conduct(CoC/行動規範) を確認し、CoCに沿ったコメントをお願いします。
コメントの使い方は、コメントの使い方を参照してください。
同一カテゴリーの記事
SNS
人気の記事
  • Linux その450 - Canonical LXD や MicroCloud にクライアントなりすましの脆弱性・アップデートを
    Canonical LXD や MicroCloud に重大な脆弱性 2026年10月28日、Canonical LXD や MicroCloud に重大な脆弱性がみつかりました。
  • Ubuntu 26.04 その82 - Linux kernel の脆弱性 CVE-2026-98432 の対応状況
    CVE-2026-98432 の対応状況 2026年11月2日、Linux kernel の脆弱性である CVE-2026-98432 の対応状況がアナウンスされました。
  • Linux Mint その294 - Linux Mint 27 の開発とリリース方針の変更・アラーム管理アプリの開発
    Linux Mint 月刊ニュース Linux Mint 開発チームは Linux Mint 月刊ニュースにて、Linux Mint の開発状況や取り組みを紹介しています。
  • Ubuntu 26.04 その76 - CVE-2026-92392 含む curl の脆弱性22件修正・アップデートを
    curl の脆弱性22件修正 CVE-2026-92392 含む22件の curl の脆弱性に対応したセキュリティーアップデートがリリースされました。
  • Ubuntu 26.10 その38 - Ubuntu 26.10 がリリースされました・ディスクイメージのダウンロード
    Ubuntu 26.10 リリース 2026年10月15日、Ubuntu 26.10 がリリースされました。
  • Ubuntu 26.04 その78 - eMudhra 認証局の秘密鍵の侵害・アップデートを
    eMudhra 認証局の秘密鍵の侵害 2026年10月20日、eMudhra 認証局(eMudhra CA)の秘密鍵の侵害が発覚しました。
  • Ubuntu 26.04 その79 - CVE-2026-111497 に対応した Brotli のリリース・アップデートを
    Brotli のセキュリティーアップデート 2026年10月26日、CVE-2026-111497 に対応した Brotli がリリースされました。
  • Ubuntu 26.10 その39 - Ubuntu 26.10 の新機能と変更点・既知の問題
    Ubuntu 26.10 の新機能と変更点・既知の問題 リリースノートから、Ubuntu 26.10 の新機能と変更点を紹介します。
  • Ubuntu 26.04 その77 - PHP に php2shell(CVE-2026-109618/CVE-2026-109619)の脆弱性・アップデートを
    PHP に php2shell の脆弱性 PHP に php2shell と呼ばれる致命的な脆弱性が見つかりました。
  • Ubuntu 26.04 その80 - Ubuntu 26.04.2 LTS のリリーススケジュール
    Ubuntu 26.04.2 LTSのリリーススケジュール Ubuntu 26.04.2 LTS のリリーススケジュールを紹介します。
記事のピックアップ
オプション