OS Xで圧縮されたメモリを理解する

メモリ圧縮により、Macのパフォーマンスが向上する

OS X Mavericksのリリースで、AppleはMacでのメモリの管理方法を変更しました。 メモリ圧縮を追加することで、パフォーマンスを維持したり向上させたりしながら、より少ないメモリで多くのことを実行できるようになりました。 古いバージョンのOS Xでは、メモリ使用量はかなり標準的なメモリ管理システムを中心に構築されていました。 アプリケーションはRAMの割り当てを要求し、システムは要求を満たし、アプリケーションは不要になったときにRAMを戻しました。

OSは、どれくらいのRAMが利用可能であり、誰がそれを使用していたかを把握するという厄介な作業の大部分を担当しました。 OSはまた、必要なRAMの量が利用できない場合に何をすべきかを把握しました。 最後の部分は、システムが仮想RAM (SSDまたはハードドライブのスワップ領域)を利用しようとしたため、Macのパフォーマンスに悪影響を及ぼす可能性があるため、最も重要でした。

Appleは、MacのRAMがどのように使用されているかを監視することができる、きれいなツール、 Activity Monitorを提供していました。 アクティビティモニターは引き続き利用可能ですが、メモリ監視機能は劇的に変化しました。これは、Macが圧縮されたメモリを使用してRAMをより有効に活用できるようにする方法です。

圧縮されたメモリ

圧縮されたメモリは、Appleにとって新しいものではありません。 コンピューティングシステムは、様々な形態のメモリ圧縮を長い間使用してきた。 80年代半ばと90年代初頭にMacを使用した場合、RAMに格納されたデータを圧縮し、Macで使用可能な空きRAMの量を効果的に増やすConnectixのRAM Doublerなどの製品を覚えているかもしれません。 私は、Mac Plusの起動時にRAM Doublerのアイコンが表示されるのを覚えています。 私が信じるように、4 MBのRAMしか持たないMac Plusは、RAM Doublerが与えることができるすべての助けが必要でした。

コンピューティングメーカーやOS開発者がより良いメモリ管理システムを作り出すにつれ、圧縮されたメモリユーティリティは賛成できなくなりました。 同時に、記憶価格は下落していた。 メモリ圧縮システムの人気を失ったもう一つの要因は、パフォーマンスの問題でした。 メモリ圧縮アルゴリズムは、処理能力のかなりの部分を占めていました。 これは、物理RAMが少なくて済むようになりましたが、メモリを圧縮または解凍する必要があるときにコンピュータを駄目にする傾向があることを意味していました。

メモリ圧縮は、主に安価な複数のコアプロセッサの出現のためにカムバックしている。 メモリ圧縮に使用されるルーチンを多くのプロセッサコアの1つにオフロードすることができれば、メモリを圧縮または解凍する必要があるときにパフォーマンスが低下することはありません。 これは単にバックグラウンドタスクになります。

Macで圧縮されたメモリが動作する仕組み

Macでのメモリ圧縮は、RAMリソースの管理を改善し、Macのドライブとの間でのデータのページングである仮想メモリの使用を防止または大幅に削減することで、OSおよびアプリケーションのパフォーマンスを向上させるように設計されています。

OS X Mavericks (またはそれ以降)では、OSは非アクティブメモリを探します。これは現在使用されていないメモリで、アプリで使用されるデータを保持しています。 この非アクティブメモリは、保持しているデータを圧縮するので、データのメモリ消費量は少なくなります。 非アクティブメモリは、バックグラウンドにあり、使用されていないアプリにすることができます。 例としては、開かれているが非アクティブなワードプロセッサがあります。なぜなら、圧縮されたメモリについて読んで読んでいるからです(ところで、この記事を読んでいただきありがとうございます)。 あなたはウェブをブラウズしている間、OSはワードプロセッサのメモリを圧縮しており、ウェブ上の映画を見るのに使っているFlash Playerなどの他のアプリで使用するためにRAMを解放しています。

圧縮プロセスは常にアクティブではありません。 代わりに、OSは、 RAMにどのくらいの空き領域があるかを確認します 。 大量の空きメモリがある場合、非アクティブなメモリが大量であっても、圧縮は実行されません。

空きメモリが使い尽くされると、OSは非アクティブメモリを探して圧縮を開始します。 圧縮は、メモリに保存されている最も古い使用済みデータから開始し、使用可能な空きメモリが十分にあることを確認します。 RAMの圧縮された領域のデータが必要な場合、OSはそのデータを即座に解凍し、要求するアプリケーションが利用できるようにします。 圧縮および解凍ルーチンはプロセッサコアの 1つで同時に実行されるため、圧縮/解凍が実行されている間はパフォーマンスが低下することはありません。

もちろん、圧縮が達成できるものには限界があります。 ある時点で、引き続きアプリケーションを起動したり、RAMを嫌うメモリを大量に使用するアプリケーションを使用すると、Macの空き容量が足りなくなります。 以前と同じように、OSはRAMのデータをMacのドライブにスワップし始めます。 しかし、メモリ圧縮では、これはほとんどのユーザーにとって非常にまれなことです。

OSがメモリをあなたのドライブに交換しなくても、OS Xのメモリ管理システムは圧縮されたデータをフルレングスのドライブセグメントに書き込み、パフォーマンスを向上させSSDの摩耗を減らすことで圧縮された非アクティブメモリを利用します。

アクティビティモニタとメモリ圧縮

アクティビティモニタの[メモリ]タブを使用して、圧縮されているメモリ量を監視できます。 Memory Pressureグラフには、RAMデータの圧縮にOSがどれくらい積極的に関与しているかを示す圧縮されたメモリがいくつか表示されます。 RAM容量が不足し、メモリをドライブにスワップアウトする必要がある場合、グラフは緑色(わずかな圧力)から黄色(重要な圧力)に変わり、最後に赤色に変わります。

あなたがMavericksをインストールして以来、あなたのMacがパフォーマンスのバウンドを少し上回っているように見えるのであれば、メモリ管理の進歩とメモリ圧縮の復帰が原因かもしれません。