Linuxのメモリ管理機構に

物理メモリと仮想メモリ

         私たちは、メモリ内に完成され、メモリが限られているので、リード線物理のことが、私たちはすべてのデータを読み書きしたい、はるかに高速ハードディスクの読み取りと書き込みデータからよりも、物理メモリから直接データを読み取り、書き込み、知っていますメモリと仮想メモリの概念。
物理メモリは、メモリサイズを提供するために、システムのハードウェアで、実メモリで、物理メモリに対する仮想メモリの概念があり、Linuxでは、仮想メモリが提案を満たすために、物理メモリの戦略である、それはディスクスペースを使用することです仮想メモリのスワップ領域のための仮想化論理メモリ、ディスク容量は、(スワップ領域)と呼ばれています
         物理メモリの拡張として、Linuxは、物理メモリ、仮想メモリのスワップパーティションになり、より詳細な、物理メモリが解放されたのでので、カーネルが一時的に未使用のメモリブロック情報は、スワップ領域に書き込まれるということです、必要性は、元のコンテンツを使用する場合、このメモリは、他の目的に使用することができ、この情報は、スワップ空間から物理メモリに再読み込まれます。
         Linuxのメモリページアクセス管理機構を採用して、物理メモリが十分に利用することができることを確認するために、物理メモリ内の適切な時にカーネル・データ・ブロックは、多くの場合、仮想メモリへの自動切替に使用され、頻繁に使用されていません情報は、物理メモリに確保さ。
         Linuxのメモリの動作メカニズムの詳細については、下記の側面を知ることが必要である:
         多くの空き物理メモリとして維持するためには、まず、ページ交換操作のための時間までの時間からLinuxシステムを、そして何もメモリを必要としない場合でも、Linuxのも私たちは、一時的にメモリページのスワップアウトされていません。これは、交換に必要な時間を待って回避します。
         「最も頻繁に最近使用」アルゴリズムに基づいて第二に、ページ交換のためのLinuxは、いないすべてのページ、使用していないが、仮想メモリに切り替えられ、条件付きであるLinuxカーネル、単に私たちは時々 、いくつかのページが頻繁に仮想メモリにファイルを使用していないスワップあなたはこのような現象を参照してください:Linuxのが物理メモリの多くがありますが、また、スワップ領域の多くを使用しています。実際には、それは驚くべきことではない、例えば、それは、メモリリソースの多くを取る、実行されているメモリのプロセスの多くを取る、そして仮想メモリにページをスワップしている使用頻度の低いファイルのいくつかがあるでしょうが、その後、このメモリリソースの多くを取りますプロセスを解放大量のメモリをの終わりに、私は、ページファイルは自動的にこれが必要な場合を除き、その後、システムは物理メモリの多くがアイドル状態になる瞬間にあり、スワップ領域が使用されている、物理メモリに交換されていないスワップアウトされていますただ現象が言及されています。それはそれであるか、この時点では、知っている限り、何も心配しないでください。
         この時点では、これらのページを収容するのに十分な物理メモリがない場合は、使用して最初の、物理メモリに交換されたときに最後に、彼らはすぐに保存するのに十分な仮想メモリ空間がないことがそうあるため、ページスワップ領域をスワップアウトされますLinuxは時間をかけて自分自身を復元することができますが、これらのスワップページは、最終的には、偽のクラッシュのLinux、サービスの例外やその他の問題につながるが、回復後のシステムは基本的に使用不能になっています。

したがって、合理的な計画と設計のLinuxのメモリ使用量が非常に重要です。

監視二つのメモリ
         モニタメモリの使用状況にLinuxのシステム管理者が非常に重要であり、そのようなメモリの使用量として、メモリ使用量を監視することで理解するための助けが正常であるとしてなど、メモリ不足場合、最も一般的に使用されるメモリの監視コマンドはトップのように、自由な以下は、システムの出力は、自由である:
[haixigov WebServerの@〜] $自由
             総使用される遊離の共有バッファは、キャッシュされた
Memの:41940 0 465 404 12714880 16402432 16360492
- / +バッファ/キャッシュ:3180208 13222224
スワップ: 8193108264 8192844
我々は、出力結果の下に、各オプションの意味を説明します
:最初は、最初の行です
リットルの合計:物理メモリの合計サイズ。 
使用:物理メモリは、主に小さな使用されてきました。 
フリー:空き物理メモリ値。 
共有:共有メモリの値に複数のプロセス。
バッファ/キャッシュされた:ディスク・キャッシュのサイズ。 
第二行Memの物理メモリ使用量を表します。
三行目( - / +バッファ/キャッシュされたが) : ディスクキャッシュの使用を表しています。
4行目:スワップ表現スワップ領域のメモリ使用。
ステータスメモリフリーコマンド出力は、2つの角度によって見ることができる:観点からコアは、アプリケーション層の観点から見た図です。 
 

1。カーネルの観点からメモリのステータスを表示するには
、カーネルを直接、それを見ることができる第二行Memの項目の自由な指令出力値上に存在、追加の操作、すなわち、に割り当てることができる場合、このシステムは、空き物理メモリ16Gを有しています:より多くのメモリの40Mよりも、私たちはこのような計算を行うさ41940K、のみ
= 41940 16402432から16360492までは  
、実際に物理メモリの合計でマイナスの物理メモリの空き物理メモリのサイズは、使用されてきた、ここで注意を払うが利用可能にメモリバッファ内の値41 940キャッシュされた状態とメモリサイズが含まれていません。
あなたは、このシステムの空きメモリが小さすぎると考えられる場合は、バッファとキャッシュされた状態、そしてあなたは、間違っている実際には、カーネルのメモリ使用量の完全な制御は、Linuxのメモリを必要とする時期、またはステップバイステップでは、システムが稼働していますシステム利用のために、自由になるためにメモリのメモリ状態。 
 

2。アプリケーション層システムのメモリ使用状況の観点から
使用することができるLinuxのメモリサイズ上で動作するアプリケーション、すなわち、第三の線freeコマンドである-出力「(/ +バッファは/キャッシュ) 」 、これを見ることができますシステムメモリは、空きメモリが13222224Kに到達しながら、唯一3180208K使用する計算を実行し続けている:
41940+(465404 + 12714880)= 13222224
この式が示すによって使用可能な物理メモリの値の適用は自由値Memのアイテムプラスバッファであることとそして、キャッシュされた値は、あること、空きバッファやサイズなどのキャッシュされた項目の値は、
パフォーマンスを向上させるためにキャッシュされたバッファは/ファイルの読み取りのためのアプリケーションのために、バッファ/メモリのキャッシュされた所持は、提供されていますアプリケーションがメモリを必要とする場合、バッファ/キャッシュされたが、すぐにプログラムで使用するために、回収されます。
 

3。バッファとキャッシュされた類似点と相違点
 Linuxオペレーティングシステムでは、アプリケーションはいくつかのメモリを割り当てるために、データファイルを読み取るために、オペレーティング・システムを必要とするとき、データがディスクからメモリに読み込まれ、その後、分散データアプリケーション。あなたは、ファイルにデータを書き込む必要がある場合、オペレーティングシステムの割り当てメモリは、メモリからディスクに、ユーザー、データ、データを受信します。大量のデータがメモリにディスクから読み取るか、システムのメモリの読み取りと書き込みのパフォーマンスにより、ディスクに書き込まれている場合は、ディスクへのディスクの読み取りや書き込みデータからのデータの両方が、非常にあるので、しかし、それは、非常に低くなり、時間がかかり、リソースを大量に消費するプロセス、この場合、バッファとキャッシュされたメカニズムのLinuxの導入。
バッファとキャッシュされたメモリ操作は、開いたファイルやファイル属性情報ストレージシステム一度使用されているように、オペレーティング・システムのニーズが最初のバッファを見ていきます特定のファイルやキャッシュされたメモリ領域を読み込むため、見つかった場合は、直接読み出し必要なデータが見つかった場合にアプリケーションに渡され、それは大幅にオペレーティング・システムの性能を向上させる、キャッシングによって、オペレーティングシステムのキャッシュ機構であるディスクから読み出されます。しかし、バッファとキャッシュされたバッファの内容が異なっています。
バッファは、ファイルシステムのメタデータ(メタデータ)と飛行中のページを追跡することを記録し、行うために機器の一部をバッファリングするために使用され、キャッシュされたファイルは、バッファを作るために使用されます。主ストアディレクトリにどのようなコンテンツ、属性、およびファイルのアクセス権と上のように使用されるバッファを:言うことより人気の事。キャッシュされたファイルやプログラムは、直接私たちの記憶を開設するために使用しました。
私たちの結論が正しいことを確認するためには、viは再びこのファイルをキャッシュされ、その後、viの変更を確認、非常に大きなファイルを開くことができ、二つの開放率かなりオープンに二時間を短縮されていないとの類似点と相違点を感じます初めてそれよりも速いですか?
そして、次のコマンドを実行します。
 検索/ -name * * .confの
         バッファの値の変化かどうかを確認し、次に何が違うの表示であれば2倍の速度を確認するためにfindコマンドを繰り返します。
         メモリは、Linux、常により多くのデータをキャッシュするために努力し、多くの場合、キャッシュにキャッシュされたシステムファイルやデータを置くために使用されるメカニズムをバッファリング、例えば、主に設計されたオンデマンドサーバに基づいて、システムのLinuxの動作原理を実行します長いディスク操作を必要とせずにメモリから直接データを必要なときに、情報が、あなたは、システム全体のパフォーマンスを向上させるために、再びこのデザインのアイデアをそれを取ることができます。

スワップ領域スワップの3の使用は、
        メモリが非常に安くなっているが、それでもスワップ大きな価値、合理的な計画とスワップパーティションを使用すると、システムの安定稼動が不可欠です。Linuxのファイルシステムは、通常のファイルを使用するか、スワップ領域に使用する別のパーティションにすることができます。Linuxスワップまたはスワップファイルの複数の使用を可能にします。
 

1。スワップスワップ領域を作成
         しかし、スワップファイルを作成し、別の一般的なファイルを作成し、いないネットワーク・ファイル・システム、それはのddコマンドで行う必要があり、そのファイルがローカルハードディスク上に置かれている必要があり、必要なスワップ領域のスワップファイルを作成するために、通常のファイルでありますスワップを作成するために、スワップファイルに(NFS)。例:
[ルート@ localhostの〜]#はddをIFの=は/ dev / ZERO = /データ/スワップファイルのBS = 1024 COUNT = 65536
65536 + 0のレコードで
65536 + 0レコードOUT
ので、作成する連続空間のスワップファイルのサイズ:60Mについては、のddコマンドについてについての簡単な行うには
IF =入力ファイルまたはデバイス名を。
の=出力ファイル名またはデバイス。
IBS =バイトは、バイトがバイトに読み込ま表す(すなわち、バイトバイトのブロックサイズ)。
OBS =バイトバイトバイト書き込みを示し(すなわち、バイトバイトのブロックサイズ)。
BS =バイト、バイト単位で、読み出しブロックのサイズを設定し、このパラメータが代わりにOBSをIBSに使用することができます。
=ブロックブロックのみブロックコピーカウント。
スキップスキップ=ブロックは、入力ファイルの先頭からコピーしたブロックを開始する前にブロックを表します。
求める=ブロックは、ブロックが、出力ファイルの先頭からのコピーブロックを開始する前にスキップ表します。(通常は唯一の出力ファイルにのみ有効なディスクやテープの場合)
入力デバイス/ dev /ゼロは、デバイスファイルの出力は常に0で表し、ファイル全体が空で得ることができ、入力として使用します。
 

2。スワップの活性化と使用
最初mkswapコマンドまたはデバイスのスワップ領域として指定されたファイルによって:
[ルート@ localhostの〜]#のmkswap /データ/スワップファイル
のバージョンのスワップ空間の設定1、サイズ= 67104キロバイト。
[ルート@ localhostのバックアップ]#フリー
             総無料で使用されますバッファが共有キャッシュされ
Memの:2066632 1998188 1588044 26160 68444 0
- / +バッファ/キャッシュ:383984 1682648
スワップ:4088500 3987464 101 036を
上記の出力から、我々は67104 kbのスワップ領域を指定し、この時点で新しいスワップ領域はなかったです:使用は、次のように簡単なコマンドmkswap、mkswap一般的な使用形式です
mkswap [パラメータ] [デバイスまたはファイル名] [スワップサイズ]
パラメータ:
- C:不良ブロックをチェックするために交換ゾーンを確立する前に。
-v0:古いスワップの設立は、これがデフォルトです。
-v1:新しいスワップの設立。
スワップサイズ:1024バイト単位で指定します交換ゾーン、。
スワップパーティションを設定した後、スワップswaponを起動コマンドが続きます。
[ルート@ localhostの〜] USR / sbinに/ swaponを/データ/スワップファイル/#
[ルートは、@ localhostのバックアップ]#無料
             の総使用される無料の共有バッファがキャッシュされ
Memの:2066632 1997668 68 964 0 27404 1588880
- / +バッファ/キャッシュ:381 384 1685248
スワップ: 4154028 1009764053052
         freeコマンドで見ることができ、スワップサイズは、差分値が60M程度で、4088500k 4154028kによって変更された、私たちは新しいスワップパーティションが使用する準備ができていることを示す、スワップファイルのサイズを追加したことを意味しますが、もしあなたが自動的に設定をロードするには/ etc / fstabに追加する必要があるので、Linuxの再起動後、新しいスワップ領域は、使用できなくなります:
 0 0 SW /データ/スワップファイルなしスワップ
ので、Linux上で自動的にロードスワップ後に再起動することができ、以来、パーティション。実際には、Linuxが起動プロセス中に「swaponを-a」コマンドを実行しますが、このコマンドはすべてのスワップ領域を中に/ etc / fstabにリストされてロードされます。
 

3。スワップ削除
するswapoff 1除去することにより、スワップ領域への
[ルート@ localhostの〜]#は/ usr / sbinに/するswapoff /データ/スワップファイルの
事実は、「するswapoff -a」/削除などによって定義される/ fstabのすべてのExchangeスペース、「するswapoff -a」と上記「swaponを-a」に相当します。"するswapoff -a"を実行した後、freeコマンドの出力は次のよう:
[ルート@ localhostのバックアップ]#フリー
             総無料で使用する共有バッファがキャッシュされ
Memの:2066632 2048724 17908 0 30352 1642748
- / +バッファ/キャッシュ:375 624 1691008
スワップ:0 0 0

公開された407元の記事 ウォンの賞賛150 ビュー380 000 +

おすすめ

転載: blog.csdn.net/ds1130071727/article/details/102627465