LinuxはRAMからスワップファイルへのプロセス(複数可)のメモリをスワップするかに基づいて正確な条件は何ですか?

StackOverflow https://stackoverflow.com/questions/2029015

質問

私のサーバーは、RAMと8Gigsの8Gigsは、スワップファイル用に構成されています。私は、実行中のメモリ集約アプリがあります。これらのアプリは、私たちがスワップの使用量の増加を見つけた時のピーク負荷を持っています。スワップの約1 GIGが使用されます。

私は、RAMの4Gigsとスワップおよびその上で動作する同様のメモリ集約型のアプリケーションの8回のギグを持つ別のサーバーを持っています。しかし、ここで使用量が非常にごくわずかである入れ替えます。周りに100メガバイト

私は思っていたの正確なの条件または何の のラフ式のそれに基づいてLinuxはRAM内のプロセスメモリのスワップアウトを行いますスワップファイルへ。 私はそのswapiness率に基づいて知っています。それは他に何に基づいていますか?ファイルサイズは、スワップ?これを説明するのLinuxカーネルのドキュメント/ソースコードへの任意のポインタは素晴らしいものだ。

役に立ちましたか?

解決

私はこれが何をするかの主観的な説明を掲示する多くの人々を見てきました。ここでうまくいけば、より完全な答えです。

ポスト2.6.28のLinux swappinessを上に分割LRUで任意の両方のLRUで構築圧力を決定する計算された割合を変更するために使用される乗算器である。

だから、なし空きメモリを持つシステム上で、たとえば左 - あなたが持っている既存のメモリの値を測定する「アクティブ」と表示されているどのくらいのメモリの割合とページが促進される頻度の割合のオフに基づいて、非アクティブリストに落ちた後にアクティブに。

アクティブと非アクティブの間のページの多くのプロモーション/降格とLRUは、使用の多くである。

一般的に、あなたはメモリが不足したときに立ち退かせるために安価で安全であると自動的に(これは0の値を持つスワップ裏打ちされたメモリ(より200倍以上の価値のないファイルバックアップされたメモリを作る)200の修飾子を指定されたストレージファイルそれは、この割合を乗じます。

何swappinessのメモリをファイルにあなたが与えたswappinessを番号(デフォルト60)を控除して、メモリをアノンする乗数として与えたswappinessの値を追加することで、この値を変更しているん。したがって、デフォルトのswappinessのは、匿名メモリは、ファイルメモリ(ファイルのための200から60、アノン0 + 60)よりも80倍以上の価値があることをあなたに残します。このように、すべてのメモリを使用している典型的なLinuxシステム上で、ページキャッシュは、ページキャッシュの賛成でスワップアウトされる匿名メモリーの匿名メモリよりも活性が80倍でなければならないであろう。

等しく重み付けのLRUの両方を残して - あなたは100にswappinessを設定した場合、

これは100の修飾およびファイルメモリアノン100(100 200)の修飾子を提供します。したがって、アノンメモリを提供するページキャッシュはページキャッシュのようにアクティブではありません望んでいるファイル重いシステム上で、その後アノンメモリは、余分なページキャッシュのためのスペースを作るために、ディスクにスワップされます。

他のヒント

のLinux(または他のOS)ページ(通常は4Kbの)にメモリを分割します。これらの各ページには、メモリのチャンクを表します。これらのページの使用上の情報は、それが(プロセスデータ、実行可能コードなどが含まれているデータの種類、それが最近アクセスされているかどうか、基本的にページは自由である、または使用(一部のプロセスの一部)であるかどうかについての情報が含まれている、維持され、ファイルシステムのページまたはページキャッシュ(ファイルシステムに書き込まれたすべてのデータのリード/存在する)とプロセスに属するページ - )、ページの所有者、などが挙げられる。これらのページは、広く2つのカテゴリに分けることができます。

システムのメモリが不足している場合は、カーネルはその使用法に基づいてページをスワップアウトを開始します。ページのリストを使用すると、アクセスのw.r.t新しさがページは(Linuxカーネルは、あまりにもそのようなリストを持っている)スワップアウトすることが可能かを決定するための一般的である並べ替えます。

スワップ中に、Linuxカーネルはトレードオフするためにどのようなメモリ内のページをニューキングと交換するためにそれらを送信するときに決定する必要があります。それはあまりにも積極的にファイルシステムのページをスワップした場合は、より多くの読み込みが必要なとき、それらのページをリードバックするファイルシステムから必要とされています。それはより積極的に、プロセスのページをスワップアウト場合、ユーザはスワップアウトプロセスを使用しようとすると、彼らが戻ってディスクから読み取ることがありますので、しかし、それは、インタラクティビティを傷つけることができます。ここをこの上の素敵な議論のを参照してください。

swappinessを= 0を設定することで、プロセスに属するページをスワップアウトしていないLinuxカーネルを言っています。代わりに、swappinessを= 100を設定するときは、より積極的にプロセスに属するページをスワップアウトするために、カーネルに伝えます。チューニングシステムに、パフォーマンスおよび「vmstatの」コマンドを使用して、各設定で/アウトにスワップされたページを監視し、10のステップでswappinessをパラメータを変更してみてください。あなたに最高の結果が得られる設定にしてください。ピーク使用時間中にこのテストを行うことを忘れないでください。 :)

データベースアプリケーションの場合、swappinessを= 0は、一般的に推奨されます。 (それでも、良い値に達するためにあなたのシステム上のさまざまな設定をテスト)。

参考:
ます。http://www.linuxvox。 COM / 2009/10 / - 何である-linuxのカーネル・パラメータ-VM-swappinessを/
http://www.pythian.com/news/1913/する

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top