linux free コマンド (メモリ)

物理メモリと仮想メモリ

物理メモリから直接データを読み書きすることは、ハードディスクからデータを読み書きするよりもはるかに高速であることを知っています. したがって、すべてのデータの読み書きがメモリ内で完了し、メモリが限られていることを願っています。メモリと仮想メモリ。

物理メモリは、システム ハードウェアによって提供されるメモリ サイズです. それは実メモリです. 物理メモリと比較して, Linux では仮想メモリの概念もあります. 仮想メモリは物理メモリの不足を満たすために提案された戦略です. ディスクを使用します.領域 仮想化された論理メモリの一部で、仮想メモリとして使用されるディスク領域はスワップ領域 (Swap Space) と呼ばれます。

物理メモリの拡張として、Linux は物理メモリが不足したときにスワップ パーティションの仮想メモリを使用します. 具体的には、カーネルは一時的に使用されていないメモリ ブロックの情報をスワップ領域に書き込み、物理メモリを解放します。このメモリは他の目的に使用でき、元のコンテンツが必要になると、情報がスワップ領域から物理メモリに再度読み込まれます。

Linux のメモリ管理にはページング アクセス メカニズムが採用されており、物理メモリを十分に活用できるように、カーネルは物理メモリ内の使用頻度の低いデータ ブロックを適切なタイミングで仮想メモリに自動的に交換します。使用済みデータ ブロック 情報は物理メモリに保持されます。

Linux のメモリ操作メカニズムを深く理解するには、次の側面を理解する必要があります。

まず第一に、Linux システムは時々ページ スワップ操作を実行して、できるだけ多くの空き物理メモリを維持します. メモリを必要とするものが何もない場合でも、Linux は一時的に未使用のメモリ ページをスワップアウトします. これにより、交換を待つ時間を回避できます。

次に、Linux は条件付きでページ スワッピングを実行します. 使用されていないときにすべてのページが仮想メモリにスワップされるわけではありません. Linux カーネルは、「最近最も頻繁に使用された」アルゴリズムに従って、使用頻度の低いページ ファイルのみを仮想メモリにスワップします.このような現象: Linux にはまだ多くの物理メモリがありますが、スワップ領域も多く使用されています。実際、これは驚くべきことではありません. たとえば、大量のメモリを占有するプロセスが実行されている場合、大量のメモリ リソースを消費する必要があります. プロセスが終了し、大量のメモリが解放されると、そのページ ファイルはシステムの物理メモリは必要な場合を除き、この時点でかなり空いており、スワップ領域も同時に使用されています。と述べた。この時点では、何も心配する必要はありません。何が起こっているのかを知っておいてください。
最後に、スワップ空間のページは、使用時に最初に物理メモリにスワップされます. この時点でこれらのページを保持するのに十分な物理メモリがない場合, それらはすぐにスワップアウトされます.これらの交換されたページは、最終的に Linux での誤ったクラッシュやサービス例外などの問題につながります. Linux は一定期間内にそれ自体で回復できますが、回復したシステムは基本的に使用できません.
したがって、Linux メモリの合理的な使用を計画および設計することが非常に重要です。

2 つのメモリ監視

Linux システム管理者にとって、メモリの使用状況を監視することは非常に重要です.監視することは、メモリの使用状況が正常かどうか、メモリが不足していないかどうかなど、メモリの使用状況を把握するのに役立ちます.メモリを監視するために使用されるコマンドは、 free 、 top などです。以下は、システム free の出力です。

[haixigov@WEBServer ~]$ free
                       total       used        free      shared      buffers      cached
Mem:                 16402432    16360492      41940        0         465404      12714880
-/+ buffers/cache:   3180208     13222224
Swap:                8193108        264      8192844

出力結果の各オプションの意味を説明しましょう:
first は最初の行です:
total : 物理メモリの合計サイズ。
used : 物理メモリの使用量。
free : 空き物理メモリ値。
shared : 複数のプロセスで共有されるメモリ値。
buffers/cached : ディスク キャッシュのサイズ。
2 行目のMem : は、物理メモリの使用量を表します。
3 行目 ( -/+ buffers/cached ): ディスク キャッシュの使用状況を表します。
4 行目: Swap は、スワップ領域のメモリ使用状況を示します。
freeコマンドによって出力されるメモリ ステータスは、2 つの角度から見ることができます。1 つはカーネルの観点から、もう 1 つはアプリケーション層の観点からです。

1. カーネルの観点からメモリの状態を表示する

つまり、追加の操作なしでカーネルを直接割り当てることができます.これは、上記の free コマンド出力の 2 行目の Mem 項目の値です.このシステムの物理メモリは 16G であり、空きメモリは
16402432-16360492=41940は実際には合計
物理メモリから使用済み物理メモリを差し引いて、空き物理メモリ サイズを取得します。使用可能なメモリの値に注意してください。ここで 41940 には、バッファとキャッシュされた状態のメモリ サイズは含まれません。
このシステムの空きメモリが小さすぎると思うなら, それは間違っています. 実際, カーネルはメモリの使用を完全に制御します. Linux はバッファの状態を保存し, メモリが必要になったとき, またはシステムが停止したときにキャッシュします.メモリは、システムで使用するための空き状態メモリになります。

2. アプリケーション層の観点からシステムメモリの使用状況を表示

つまり、Linux上で動作するアプリケーションが使用できるメモリサイズ、つまりfreeコマンドの3行目「(-/+ buffers/cached)」の出力で、これが使用しているメモリサイズであることがわかります。システムはわずか 3180208K であり、空きメモリは 13222224K に達し、次のような計算を続けます:
41940 + (465404 + 12714880) = 13222224
この式により、アプリケーションで使用できる物理メモリの値が、 Mem アイテムにバッファとキャッシュされた値の合計、つまり、空き値 バッファとキャッシュされたアイテムのサイズが含まれます
アプリケーションの場合、バッファ/キャッシュによって占有されているメモリが利用可能です。ファイル読み取りのパフォーマンス アプリケーションがメモリを使用する必要がある場合、バッファ/キャッシュされたキャッシュは、アプリケーションで使用するために迅速に再利用されます。

3. バッファとキャッシュの類似点と相違点

Linux オペレーティング システムでは、アプリケーションがファイル内のデータを読み取る必要がある場合、オペレーティング システムはまずメモリを割り当て、ディスクからメモリにデータを読み取り、次にデータをアプリケーションに配布します。オペレーティング システムは、まずメモリを割り当ててユーザー データを受信し、次にデータをメモリからディスクに書き込みます。ただし、大量のデータをディスクからメモリに読み取るか、メモリからディスクに書き込む必要がある場合、システムの読み取りおよび書き込みパフォーマンスは非常に低くなります。ディスクへのデータの書き込みは非常に遅いプロセスです. 時間とリソースを消費するプロセスです. この場合, Linux はバッファとキャッシュメカニズムを導入しています.
バッファとキャッシュはどちらもメモリ操作であり、システムが開いたファイルとファイル属性情報を保存するために使用されるため、オペレーティング システムがファイルを読み取る必要がある場合、最初にバッファとキャッシュされたメモリ領域を検索します。見つかった場合は、直接読み取る アプリケーション プログラムに送信される 必要なデータが見つからない場合は、ディスクから読み取られる これがオペレーティング システムのキャッシュ メカニズムです キャッシュを通じて、オペレーティング システムのパフォーマンスが大幅に改善されます。ただし、バッファーとキャッシュされたバッファーの内容は異なります。
Buffers are used to buffer block devices. ファイル システムのメタデータと追跡中のページのみを記録し、cached はファイルのバッファリングに使用されます。より一般的に言えば、バッファーは主に、ディレクトリ内の内容、ファイルの属性とアクセス許可などを格納するために使用されます。キャッシュは、開いたファイルとプログラムを記憶するために直接使用されます。
私たちの結論が正しいかどうかを検証するために、vi で非常に大きなファイルを開いてキャッシュの変更を確認し、次にこのファイルを再度 vi して、2 つの開く速度の類似点と相違点を感じてください。 2回目のオープニングは当たり前 1回目より早い?
次に、次のコマンドを実行します。

 find /* -name  *.conf

buffers の値が変化するかどうかを確認してから、find コマンドを繰り返し実行して、表示速度の違いを 2 回確認します。Linux オペレーティング システムのメモリ操作原理は、主にサーバーのニーズに合わせて設計されています. たとえば、システムのバッファ メカニズムは、頻繁に使用されるファイルとデータをキャッシュにキャッシュします. Linux は常により多くのデータと情報をキャッシュするよう努めています。データが再び必要になったときに、長いディスク操作なしでメモリから直接フェッチできるため、システム全体のパフォーマンスが向上します。

おすすめ

転載: blog.csdn.net/u011942101/article/details/130154700