Chromium版Microsoft Edgeのバージョン89で導入された「スリーピングタブ」機能の効果を調べてみた。「スリーピングタブ」は、非アクティブな状態のタブをスリープして、メモリ使用量やCPU使用率を削減する機能だ。今回は、メモリ使用量に着目して、どの程度の効果があるのか調べてみた。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
2021年3月9日にMicrosoft Edge(以下、旧Edge)のサポートが終了し、2021年4月には旧Edgeを削除する更新プログラムが提供されるという。以降、Windows 10の標準Webブラウザは、ChromiumベースのMicrosoft Edge(以下、Chromium版Edge)になる。
既にChromiumベースのWebブラウザとしては、Google Chrome(以下、Chrome)が大きなシェアを持っており、その中でChromium版Edgeは存在価値を示せるのか疑問も持たれていた。
しかし、Chromium版Edgeはバージョンアップを重ねるごとに、Chromeにはない機能が実装されるようになり、独自性が高まっている。例えば、Tech TIPS「Microsoft EdgeでWebページ全体をキャプチャーする」で紹介したWebキャプチャ機能や、Tech TIPS「気付けば『タブ』だらけなあなたに朗報? Chromium版Edgeの新機能『垂直タブ』を試してみる」で紹介した垂直タブといった機能だ。
Chromium版Edgeバージョン89では、さらに魅力的な機能「スリーピングタブ(Sleeping Tabs:タブのスリープ状態機能)」が実装されている。この「スリーピングタブ」は、Chromiumで実装されている「フリージング(freezing)技術」をベースに開発されており、非アクティブなタブをスリープしてメモリ使用量やCPU使用率の低減を図るというものだ。原稿執筆時点では、Chromeには実装されていない、Chromium版Edgeの独自機能となっている。
本稿では、この「スリーピンタブ」がどのような機能なのか、どういった効果があるのかについて調べていく。また、同様にメモリ使用量/CPU使用率を下げる「タブディスカーディング(Tab Discarding:タブの廃棄)」との違いについても見ていく。
Webブラウザで作業を行っていると、いつの間にか多くのタブが開いた状態となっていることはないだろうか。このような状態では、WebブラウザによるメモリやCPUの使用量が増え、Windows 10自体が重くなり、他のアプリケーションを開いたり、切り替えたりする際に時間がかかるようになる。特に最近では、Webページに多くの画像が用いられ、ビデオやスクリプトなどが使われ、リッチになっていることから、Webブラウザのメモリ使用量が増えてきている。
例えば、Facebookの場合、表示しているページなどにもよるが、133MBほどメモリを消費している(FacebookのWindows Insiderページを表示した場合)。こうしたWebページを10サイトほど開くだけで、1GB以上のメモリが消費されることになる。タスクマネージャーの[プロセス]でメモリ使用量やCPU使用率を見ると、意外なほどWebブラウザによって消費されていることに驚くはずだ。
そこで、導入されたのが「スリーピングタブ」である。タブがアクティブではない(非アクティブ)状態で指定した時間が過ぎると、自動的にタブがスリープ状態になり、メモリ消費量やCPUの使用率が抑えられるというものだ。
タブがスリープ状態になるといっても、タブが閉じられるわけではなく、リソースの使用を最小限に抑えるために、スクリプトなどの実行を一時停止するものだ。タブをアクティブにすると、Webページの動作などが再開される。
当然ながら、非アクティブなタブがスリープ状態になると、バックグラウンドでストリーミングにより音楽を再生していたり、Web会議中に別タブで資料を見ている状態だったりすると音が止まってしまうことになる。そこで、「スリーピングタブ」では、音が出力されているWebページなど、スリープ状態になると都合の悪いWebページについては、非アクティブであってもスリープ状態とはならないようになっている。
また、設定によって、特定のWebページをスリープ状態としない(除外する)こともできる。
デフォルトでは、スリーピングタブ機能は有効になっており、2時間アクティブにしていないとスリープ状態になる。除外するWebサイトなどの指定もないので、場合によってはChromium版Edgeが自動的にバージョンアップされたことで、スリーピングタブ機能が働き、特定のWebページの表示がおかしくなっている可能性もある。最近表示がおかしくなったと感じるのであれば、スリーピングタブ機能が原因の可能性があるので、後述の方法でスリーピングタブを無効にしたり、表示がおかしくなるWebサイトを除外するように設定したりするとよい。
スリーピングタブ機能は、前述の通り、デフォルトで有効になっており、特に設定しなくても、非アクティブ状態で2時間が経過するとタブがスリープ状態になるようになっている。
スリープするまでの時間を短くしたり、無効化したりするには、[設定]ページを開いて行う。それには、Edgeのウィンドウ右上の[…]アイコンをクリックして、メニューで[設定]を選択する。新しいタブで[設定]ページが開くので、左ペインで[システム]を選択する(アドレスバーに「edge://settings/system」と入力してもよい)。無効化するには、右ペインの「リソースの節約」欄の「スリープタブでリソースを保存する」のスイッチを「オフ」にする(デフォルトで「オン」)。
また、スリープ状態に移行するまでの時間は、「スリープタブでリソースを保存する」のスイッチを「オン」の状態にすると、「非アクティブなタブを、……」のプルダウンリストで選択可能になる(デフォルトは2時間)。時間は、5分/15分/30分/1時間/2時間/3時間/6時間/12時間から選択可能だ。
また、スリープ状態にしたくないサイトは、「これらのサイトをスリープ状態にしない」の[追加]ボタンをクリックして、ドメイン名を指定すればよい。
設定した時間が経過すると、タブのアイコンがグレーアウトして、スリープ状態になっていることを示される。また、スリープ状態になったタブにマウスホバー(マウスポインターを重ねる)すると、「このタブはリソースを節約するため、スリープ状態にしています」と表示されることで確認できる。
MicrosoftのWindows Blog「Sleeping Tabs in Microsoft Edge: Delivering better browser performance」によれば、メモリ使用量で32%、CPU使用率で37%の削減効果があるとしている。
タブごとのCPU使用率を計測するのは難しいので、ここではメモリ使用量に着目して、幾つかのWebページで計測して効果を確かめてみた。[設定]−[システム]ページの「リソースの節約」欄で、「非アクティブなタブを、指定された時間が経過した後、スリープ状態にします」を[5分間の非アクティブ状態]に設定して動作を確認している。
下表のWebページを開いた状態にしつつ、[設定]ページをアクティブにして、他を非アクティブな状態にして計測を行っている。Chromium版Edge全体のメモリ使用量は、Windows 10のタスクマネージャーで確認した。また、タブごとのメモリ使用量は、Chromium版Edgeを開いた状態で[Shift]+[Esc]キーを押して、ブラウザータスクマネージャーを起動して調べた。
Webページ | スリープ前 | スリープ後 | 15分後 |
---|---|---|---|
@IT | 56,320KB | 54,708KB | 54,708KB |
56,252KB | 56,024KB | 56,024KB | |
Googleマップ | 104,184KB | 101,284KB | 101,284KB |
Outlook.com | 111,440KB | 111,444KB | 109,316KB |
[設定]ページ | 33,880KB | 34,788KB | 35,148KB |
各タブでWebページを開いた後、ある程度メモリ使用量が安定した状態で、Chromium版Edge全体のメモリ使用量は398.3MBだった。5分ほど経過後、非アクティブなタブにマウスホバーして「スリープ状態」になっていることを確認し、その際のメモリ使用量を確認したところ、348.4MBになっていた。約13%のメモリ使用量の削減効果があったことが分かる。
そのままChromium版Edgeを放置した状態で観察していたところ、徐々にメモリ使用量が下がっていった。スリープしてから15分ほど経過したメモリ使用量は、272.7MBとなり、Windows Blogで述べられている32%のメモリ使用量の削減が実現されていた。ブラウザータスクマネージャーを見る限り、スリープ時点と15分経過時点でタブごとのメモリ使用量には、それほど違いがなかった。スリープになった後でも、徐々にメモリ使用量を削減しているか、Chromium版Edgeが確保していたメモリが解放されたことなどによって、メモリ使用量が減ったのではないかと思われる(先読みしているWebページのキャッシュデータを解放するなどしている可能性もある)。
Chromium版Edgeのメモリ使用量削減機能には、スリーピングタブの他にも、「タブディスカーディング(Tab Discarding)」と呼ばれるものもある(「Discard」は「破棄する」「廃棄する」という意味)。この機能は、Chromium版Edgeだけでなく、Chromeでもサポートされている。
タブがディスカーディングされると、タブは残るものの、実際には表示されていない状態となり、メモリ消費はほとんどなくなる。ブラウザータスクマネージャーからも、タブがタスクの一覧から消えてしまう。
タブを再び開くと、Webページの再ロードが実行される。これにより、大幅にメモリの消費量を抑えることができる。一方で、Webページの再ロードが行われるため、タブのスリーピングに比べてアクティブにしたときに表示まで時間がかかってしまう。
タブスリーピングと同様、音が出力されているWebページはディスカーディングされない。また、入力フォームなどがあるWebページがディスカーディングしてしまうと、入力したものが自動的にリセットされてしまう危険性もあるのだが、編集部で試した限り、入力フォームがあるWebページはディスカーディングの対象にならないようだ。
タブディスカーディングは、設定で「オフ」にすることができず、Webサイトを除外することもできない。どのような条件でディスカーディングされるかも不明だ。
Chromium版Edgeでは、一定時間アクティブにならないと、自動的にディスカーディングされるようだ(4時間程度非アクティブな状態だとディスカーディングされるようだ)。これにより、Chromium版Edgeを使用しない状態で放置しておくと、自動的にメモリ使用量やCPU使用率が大幅に下がることになる。
なお、ディスカーディングしたタブにマウスホバーした際の表示は、Webページのタイトルのままである。タブを開いた際に、Webページが再ロードされることで、ディスカーディングされていたことが分かる(ブラウザータスクマネージャーを見ると、タスクの一覧にタブが表示されないので、これでも判断できる)。
Copyright© Digital Advantage Corp. All Rights Reserved.