web-dev-qa-db-ja.com

使用スワップを防ぐために必要なRAM)

私のシステムでは、常に「空き」メモリと「非アクティブ」メモリを使用できますが、システムが数メガバイト移動してスワップすることもあります。 1泊あたり約100MBかもしれませんが、スワップの数日間は4000MBを超える可能性があります。

システムに必要なメモリを決定するにはどうすればよいですか?

4
moronizzz

FreeBSD メモリを5つのリストに分割

  • 有線(メモリにロック、ページング不可)
  • アクティブ(最近使用)
  • 非アクティブ(最近使用されていません)
  • キャッシュ
  • 自由

それらのいくつかは、最小フリーおよびターゲットフリーレベルを持っています、例えば。

Pool     Minimum Target
Free       0.7%    3%
Cache      3%      6%
Inactive   0%      4.5%

(出典:FreeBSDオペレーティングシステムの設計と実装 '、むしろ日付:2004 FreeBSD 5.2をカバー-これらの数値はそれ以来変更されていますが、一般的なアプローチは私が信じていません。)

ページデーモンは、レベルを維持し、必要に応じてページアウトする役割を果たします。

FreeBSD9.0からVM私はここにいます、これらは関連する数字のいくつかです:

hw.availpages: 3138511
vm.stats.vm.v_inactive_target: 121342     # 3.9%
vm.stats.vm.v_free_target: 80895          # 2.6%
vm.stats.vm.v_free_reserved: 4011         # 0.1%
vm.stats.vm.v_free_min: 19221             # 0.6%
vm.stats.vm.v_cache_min: 80895            # 2.6%
vm.stats.vm.v_cache_max: 161790           # 5.1%

(それらがどのように計算されるかはわかりません。物理メモリに依存し、おそらくkern.maxusers)。

FreeBSD 利用可能なキャッシュを増やすために積極的にページアウトします したがって、スワップが使用されているからといって、システムにプレッシャーがかかっているわけではありません。ページングの速度や、ディスクI/OやCPUティックなどの負荷のその他の指標を検査(およびグラフ化)する方がはるかに便利です。systat -ioは始まりです。 Locate/updatedbを実行することは、メモリ使用量を一晩でシフトするための良い方法です。

空きメモリがある場合でもスワップを使用するのは通常の動作であり、アイドル状態の将来のメモリ需要に備えて効果的に準備しているため、スワップの使用だけではRAM要件を判断する信頼できる方法ではありません。FreeBSDは非常に優れていますいつ何かを調整する必要があるかを教えてくれます(grepはmessagesファイルの「調整を参照」)。

その他の役立つ読み物:

4
mr.spuratic

予備のメモリがあり、メモリが機能していない場合は、swappinessパラメータを変更する必要があります。非物理メモリ(スワップ)を使用する頻度をカーネルに通知します。

スワップピネス値を確認します。

cat /proc/sys/vm/swappiness

一時的なswappiness値(再起動時に失われる)を値10(スワップ使用量を減らす適切な値)に変更します

Sudo sysctl vm.swappiness=10

永続的に変更したい場合は、設定ファイルを使用してください。

Sudo vim /etc/sysctl.conf

検索する vm.swappinessそしてそれを希望の値に変更します。

vm.swappiness=10

保存して再起動します。


説明:

スワップパインとは何ですか?

Swappinessパラメーターは、カーネルがプロセスを物理メモリーからスワップディスクに移動する傾向を制御します。ディスクはRAMよりもはるかに遅いため、プロセスがメモリから積極的に移動されすぎると、システムとアプリケーションの応答時間が遅くなる可能性があります。

swappinessの値は0〜100です。

swappiness = 0は、カーネルに物理メモリからのプロセスのスワップを可能な限り回避するように指示します

swappiness = 100は、カーネルに物理メモリからプロセスを積極的にスワップし、それらをスワップキャッシュに移動するように指示します

Ubuntuのデフォルト設定はswappiness = 60です。 swappinessのデフォルト値を減らすと、通常のUbuntuデスクトップインストールの全体的なパフォーマンスが向上する可能性があります。 swappiness = 10の値をお勧めしますが、自由に試してみてください。注:Ubuntuサーバーのインストールには、デスクトップシステムとは異なるパフォーマンス要件があり、デフォルト値の60の方が適している可能性があります。

1
amir jj

短い調査でこれが指摘されました: swappinessがデフォルトで60に設定されているのはなぜですか? これはswappinessについてさらに詳しく説明しています

そしてこれ: https://www.kernel.org/doc/Documentation/sysctl/vm.txt これはすべてのvm関連パラメーターについて説明しています。シングルプロセスのメモリ管理に興味がある場合は、他のメモリ関連の制限/パラメータについて知るのに役立ちます。

0
csny

私の以前の答えはfreeBSDを適用しませんが、私はそれを残します。私はそれをテストしました、そしてそれはdebianの魅力のように働きました。 freeBSDの場合、sysctlから次のコマンドを使用して、スワップが有効になっているかどうかを確認できます。

-bash-2.05b$ sysctl vm.swap_enabled
  vm.swap_enabled: 1

1-有効

0-無効

/etc/sysctl.confに次の行を書き込むことで無効にできます:

vm.swap_enabled=0

このリンク スワップと物理メモリに関する詳細情報を取得できます。

0
amir jj