これは、メモリ管理における Windows と Linux の違いです。一見すると、Linux システムはメモリを消費します (Linux が RAM を食べました)が、実際には、これがメモリ管理の特徴でもあります。
以下は、free コマンドを使用して研究室ファイル サーバーのメモリを表示した結果です。-m オプションは、単位として MB を使用することを示します:
出力の 2 行目は、システム メモリの使用量を示します:
Mem: 合計 (合計) = 3920MB、
使用済み (中古) = 1938MB、
無料 (無料) = 1982MB、
shared (共有メモリ) = 0MB、
バッファ = 497MB、
キャッシュ = 1235MB
注: 最初の 4 つの項目は比較的理解しやすいです。バッファとキャッシュを翻訳するのに適切な言葉はありません。これらの違いは次のとおりです:
つまり、バッファはディスクに出力されるデータを格納するために使用され、キャッシュはディスクから読み取られ、将来の使用のためにメモリに格納されるデータです。これらは IO パフォーマンスを提供するために導入されました。
出力の 3 行目は、2 行目 -/buffers/cache:
に基づいて何が取得されるかを示します。– 使用されるバッファ/キャッシュ = 使用されるメモリ – バッファ – キャッシュ = 1938MB – 497MB – 1235MB = 205MB
バッファ/キャッシュの空き数 = キャッシュされたメモリの空きバッファ数 = 1982MB 497MB 1235MB = 3714MB
出力の 3 行目は、スワップ パーティションの使用を示します:
スワップ:合計 = 4095MB
使用済み(中古)= 0MB
無料(無料)= 4095MB
システムには現在十分なメモリがあるため、スワップ パーティションは使用されません。
上記の出力結果の 3 行目は、理解するのがさらに難しいかもしれません。なぜこのデータ行をユーザーに表示する必要があるのですか? メモリ使用量からシステム バッファ/キャッシュ メモリを引いたものは何を意味しますか? システムの空きメモリとバッファ/ キャッシュされたメモリとは何を意味しますか?
私たちはメモリを 3 つのカテゴリに分類し、ユーザーとオペレーティング システムの観点からその用途に異なる名前を付けています。
上の表の内容は、free コマンドの「バッファ/キャッシュ」のメモリを表しています。このメモリはオペレーティング システムの観点からは実際に使用されていますが、ユーザーが使用したい場合は、このメモリをすぐに再利用できます。ユーザー プログラムによって使用されるため、このメモリはユーザーの観点からはアイドルとして分類される必要があります。free コマンドで出力された結果にもう一度戻ります。3 行目の結果出力は理解できるはずです。この行の数値は、ユーザーの観点から見たシステム メモリの使用量を表しています。したがって、top または free コマンドを使用してシステムにどれだけのメモリが残っているかを確認する場合は、実際に空きメモリをバッファ/キャッシュ メモリに追加する必要があります。これが、システムの実際の空きメモリです。
Linux は、これらの空きメモリを最大限に活用します。設計上の考え方は、メモリに空きがある場合は、より多くのデータをキャッシュするためにメモリを使用する方が良いということです。次回プログラムがデータに再びアクセスするとき、速度は速くなります。プログラムがメモリを使用する必要があり、システム内のメモリが不足している場合、スワップ パーティションを使用する代わりに、キャッシュの一部がすぐにリサイクルされ、ユーザー プログラムが使用できるように残されます。
したがって、バッファ/キャッシュは実際には有益であり、無害であることがわかります。実際の欠点は、Linux がメモリを消費するという錯覚をユーザーに与える可能性があります!
実際には、そうではありません。Linux がメモリを使い果たしているわけではありません。スワップ パーティションが使用されておらず、メモリが不足している限り、Linux は大量のデータをキャッシュするため、幸運だと感じるはずです。次回も利用できるかもしれません。
次の実験は、上記の結論を検証するために使用されます:
大きなファイルを次々に読み取り、2 回読み取る方法を比較します。
1. まず 1G の大きなファイルを生成します
2. キャッシュをクリアする
3. このファイルを読み取って、所要時間をテストします
4. ファイルを再度読み取り、所要時間をテストします。
上記からわかるように、この 1G ファイルの最初の読み取りには約 18 秒かかりましたが、2 回目の読み取りにはわずか 0.3 秒しかかかりませんでした。これは完全に 60 倍の改善です!
以上がLinux のメモリが食われているの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。