Linuxのメモリと手動リリース機構とスワップメモリ

今日は、Linuxのメモリメカニズムについて話しています。

まず、理由の概念を見て

まず、Linuxのメモリメカニズムは何ですか?

そこで我々は、我々はすべてのデータを読み書きしたいがメモリ内に完成され、はるかに高速にデータを読み書きハードディスクからよりも物理メモリから直接データを読み書き、知っている、そしてメモリが限られているので、それは物理的につながりますメモリと仮想メモリの概念。

物理メモリは、メモリサイズを提供するために、システムのハードウェアで、実メモリで、仮想メモリの概念があるのlinux内の物理メモリに比べて、仮想メモリが提案を満たすために、物理メモリの戦略である、それはディスクスペースを使用することです仮想メモリのスワップ領域のための仮想化論理メモリ、ディスク容量は、(スワップ領域)と呼ばれています。

物理メモリの拡張として、Linuxは、物理メモリ、仮想メモリのスワップパーティションでより詳細に説明する、カーネルが一時的に未使用のメモリブロック情報は空間を交換するために書かれているということなので、物理メモリが解放されているので必要性は、元のコンテンツを使用する場合、このメモリは、他の目的に使用することができ、この情報は、スワップ空間から物理メモリに再読み込みされます。

Linuxのメモリ管理ページへのアクセスメカニズムは完全には、物理メモリ内の適切な時点でのカーネルデータブロックは、多くの場合、仮想メモリへの自動切り替えに使用されていない利用可能な物理メモリを確保するために、撮影した、頻繁に使用されています情報は、物理メモリに確保さ。

メモリのLinuxオペレーティング・メカニズムの詳細については、我々は、下記のいくつかの側面を知っておく必要があります。

  1. Linuxの時間からページの為替操作のための時間にシステム、できるだけ多くの空き物理メモリを保つために、そして何もメモリを必要としない場合でも、Linuxは一時的に未使用のメモリページをスワップアウトされます。これは、交換に必要な時間を待って回避します。

  2. ページ交換のためのLinuxは条件付きで、使用していないではないすべてのページは時々我々が表示されます、単にいくつかのページをスワップが頻繁に仮想メモリにファイルを使用していない、「最も頻繁に最近使用」アルゴリズムに基づいて、Linuxカーネル、仮想メモリーに切り替えていますこのような現象に:Linuxのが、物理メモリがたくさんあるが、また、スワップ領域の多くを使用しています。実際には、それは驚くべきことではない、例えば、それは、メモリリソースの多くを取る、実行されているメモリのプロセスの多くを取る、そして仮想メモリにページをスワップしている使用頻度の低いファイルのいくつかがあるでしょうが、その後、このメモリリソースの多くを取りますプロセスを解放大量のメモリをの終わりに、それは、ページファイルは自動的にこれが必要な場合を除き、その後、システムは物理メモリの多くがアイドル状態になる瞬間にあり、スワップ領域が使用されている、物理メモリに交換されていないスワップアウトされていますただ現象が言及されています。この時点では、限り、それはそれである方法を知っていると、何も心配しないでください。

  3. ページのスワップ領域、現時点では、これらのページを収容するのに十分な物理メモリがない場合は、使用して最初の、物理メモリに交換されたとき、彼らはすぐにスワップアウトされるので、これらの交換を格納するのに十分な仮想メモリ空​​間がないかもしれないので、 Linuxは時間をかけて自分自身を復元することができますが、ページには、最終的には、偽のクラッシュのLinux、サービスの例外やその他の問題につながるが、回復後のシステムは基本的に使用不能になっています。

そのため、Linuxのメモリ使用量の合理的な計画と設計は、それは非常に重要です。

アプリケーションがデータファイルを読み込む必要がLinuxオペレーティングシステム、いくつかのメモリを割り当てるために、オペレーティング・システムでは、データがディスクからメモリに読み込まれ、その後、アプリケーションデータを配信されます。あなたが提出する必要がある場合データを書き込む際に、オペレーティングシステムは、ディスクにメモリからのデータ、その後、ユーザデータを受信するためにメモリを割り当てます。ある場合は、ディスクからのデータの両方がディスクにデータを読み書きしかし、ディスクからメモリに読み取りまたはメモリ読み出しにより、ディスクに書き込まれ、システムのパフォーマンスを書き込むべきデータの多くは、非常に低くなり、非常に時間がかかり、リソースを大量に消費するプロセスが、この場合には、Linuxはバッファとキャッシュされたメカニズムを導入しました。

バッファとキャッシュされたメモリ操作は、オペレーティングシステムは、最初のバッファを見ていきます特定のファイルやキャッシュされたメモリ領域を読み取るために必要がある場合ように、一度開いたファイルとファイルは、情報ストレージ・システムの属性に使用され、見つかった場合は、直接読み出し大幅にオペレーティング・システムの性能を向上させる、キャッシングによって、アプリケーションに渡される必要なデータが見つかった場合、オペレーティングシステムのキャッシュ機構である、ディスクから読み出されます。しかし、バッファとキャッシュされたバッファの内容が異なっています。

バッファはそれが飛行中のページファイルシステムのメタデータ(メタデータ)と追跡を記録し、行うために機器の一部をバッファリングするために使用され、キャッシュされたファイルは、バッファを作るために使用されます。主に店舗のディレクトリどのような内容、属性、およびファイルのアクセス権などに使用するバッファを:言うことより人気の事。直接私たちの記憶を開設するために使用され、キャッシュされたファイルやプログラム。

正しい私たちの結論を検証するために大幅にオープンする2番目の時間を短縮されていない、VIはキャッシュされた変更を参照してください、非常に大きなファイルを開くことができ、その後、このファイルVI再び、二つの開放率との類似点と相違点を感じます初めてそれよりも速いですか?
そして、次のコマンドを実行します。

find /* -name  *.conf
 

バッファの値の変化かどうかを確認し、次に表示何が違うの2倍の速度かどうかを確認するには、findコマンドを繰り返します。

 

 

二、Linuxのとき、仮想メモリ(スワップ)を使用して起動するには?

A. [ルート@ウェンウェン〜]#猫に/ proc / sys / vm / swappinessを

60

swappinessを

このコントロールは、ザ・カーネルをスワップする方法を積極的に定義するために使用され

たメモリページが。値が高いほど攻撃性を増加し、低い値は、

スワップの量を減らす。0の値をしないようにカーネルに指示する

無料の量とファイルバックまでスワップANを開始します以下のページとされる

ゾーンでの最高水位標の最後以内。

である60で、デフォルト値は、

変換し

、このパラメータはアグレッシブ(積極的な)カスタムカーネルスワップメモリページです。グレーター値は低い値は、スワップの量を減らし、攻撃性を増加します。0の値が高い未満の水のゾーンを使用している空きメモリページやファイルの数は、スワップを使用するときにのみ、スワップを使用しないようにカーネルに指示します。

デフォルト値は60です。

見てここについて積極的な霧です。この値は、おそらく唯一の意味を知っています。一部の環境では、ユーザーは非常に多くのスワップ使用量は、明らかに使用可能なメモリが多い理由について文句を言ってきたが、実際には、これは正常な現象です。

  

最大物理メモリとスワップスペースがある場合にswappinessを= 0は、示し

swappinessを= 100が示す場合、スワップ領域を積極的に活用し、内部にスワップ領域へのタイムリーなデータ転送メモリ。

通常の状況下では:

提案設定スワップ領域は、メモリが4Gより大きい場合、スワップ・メモリは長い線よりも大きい場合、(メモリ4Gは以下に等しい)倍のメモリです。また良いだろう、このようなシステムのパフォーマンスが低下しますswappinessをしてみてください。

B.パラメータを変更するswappinessを

一時的な修正:

[ルート@のウェンウェン〜]#sysctlをvm.swappiness = 10

vm.swappiness = 10

[ルート@のウェンウェン〜]#猫に/ proc / sys / vm / swappinessを                 

10

 

常設の変更:

[ルート@のウェンウェン〜]#件のvimに/etc/sysctl.conf

パラメータに参加:

vm.swappiness = 35

そして、ダイレクトで:

[ルート@ウェンウェン〜]#sysctlを-p

効果かどうかを確認します。

猫に/ proc / sys / vm / swappinessを

35

 

 

 

第三に、どのようにメモリを解放するには?

一般的なシステムメモリは自動的に解放されていません

キーコンフィグレーションファイル/ proc / sys / vm / drop_cachesと 。この文書では、キャッシュ・パラメータのリリースを記録し、デフォルト値は0である、つまり、キャッシュを解放しません。彼の値は異なる意味を表し、0〜3の間の任意の数とすることができます。

0 -放出しない
1--リリースページキャッシュ
リリースdentriesとiノード- 2
3 -すべてのキャッシュをリリース

実用的な操作:

 

wKiom1kIfqfCWjMwAABa_PWXhZ8253.png-wh_50

それの余分な空きメモリの明らかに多く

 

 

第四に、どのようにスワップのリリース?

前提:まず、それ以外の場合はダウンになり、以上のスワップメモリ​​使用量であることを残っていることを確認します!メモリのメカニズム、一度解放スワップパーティションによると、スワップパーティションに保存されているすべてのファイルは、物理メモリをダンプします。通常でスワップパーティションの完全な解放スワップを再マウントします。

A。現在のスワップパーティションがどのように実装されていますか?

wKioL1kIg_-QgRPNAAAc0YY8hDs713.png-wh_50

B。パーティションをシャットダウンします

wKiom1kIhCjzKPz0AAAJ4nqUEqM343.png-wh_50

。Cチェックのステータス:

wKioL1kIhEuQnJNsAAARrgqCj1I720.png-wh_50

D。スワップパーティションがシャットダウンされたビュー、一番下の行は、完全な0を示しています

wKioL1kIhGPAeVG_AAAmRTAqcso981.png-wh_50

すなわちスワップを移動マウントは/ dev / sda5です

wKiom1kIhL-DWuyLAAAJq9dwCWk401.png-wh_50

F。成功マウントチェック

wKioL1kIhJ​​KAttdNAAAbWQ1IwjE929.png-wh_50

 

 

第五に、実際の例の数が少ないですか?

私は、MySQLの時間を設定します

my.cnfのファイル

innodb_buffer_pool_size = 6G(私のオペレーティングシステムのメモリが6Gで、一般的にこの値は、オペレーティング・システム・メモリの80%に設定されています)

この値は、より良い設定ではありません。大きすぎる設定し、それは、オペレーティングシステムは、これにより、SQLクエリの効率を低下させ、遅くなる原因は、システムのスワップ領域が占有されているにつながります。

私はMySQLを使用する場合と同じ大きさのオペレーティング・システム・メモリと、このbuffer_pool_sizeが大きすぎる設定したときにここでは、理解することができ、最近の再によると、原因Linuxのメモリ機構に、いくつかの時間のためにメモリに大量のデータを呼び出し、スワップパーティションにフィルタリングデータの最適な、一部の原則、スワップパーティションタイムリーなデータを一掃されていない、他のデータとき再び呼び出し、およびスクリーニングはスワップパーティションへのデータの一部になる、という現象があるかもしれない、つまり、そこでも空き物理メモリの余剰は、スワップパーティションが一杯です。

おすすめ

転載: www.cnblogs.com/robinunix/p/11248878.html