Amazon Linuxマシンであるアプリケーションサーバーを調整しようとしています...
[myuser@mymachine ~]$ uname -a
Linux mymachine.myco.org 4.3.17-14.25.amzn1.x86_64 #1 SMP Wed May 10 01:58:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
私たちのマシンには1つのJBossプロセス(私たちが始めたプロセス)が実行されています。マシンには30GBのメモリがあり、25GBはJbossプロセスに割り当てられます(「-Xmx25600m」Javaオプションを使用)。マシンはいつスワップスペースの使用を開始しますか? "free -m"を実行すると、スワップ領域が使用されていることがわかりません。これがまさに私が期待したものです...
[myuser@mymachine ~]$ free -m
total used free shared buffers cached
Mem: 30103 7238 22864 0 172 4438
-/+ buffers/cache: 2627 27475
Swap: 0 0 0
私はスワップがメモリが不足し始めたときにのみ使用されると思いましたが、必ずしもそうではないと言われました。マシンはいつスワップスペースの使用を開始しますか?
ベストアンサー1
Linuxは通常RAMにエントリを保持しようとし、使用可能なRAM(つまり、アプリケーション、バッファ、およびキャッシュファイルで使用される合計RAM)が使い果たされた場合にのみ交換を開始します。ただし、起動交換を構成できるため、設定によって異なり、この値で制御されますswappiness
。swappiness
現在設定されている実行値が何であるかを確認してください。
cat /proc/sys/vm/swappiness
ほとんどのシステムでは、デフォルトは約60です。値が低いほど、カーネルはラムのエントリをより積極的に保持し、この値を0に設定するとスワップが完全に無効になります(スワップは休止状態に使用されますが、実行時には積極的に使用されません)。
交換可能性は、システムのRAMがアプリケーション、バッファ、およびキャッシュでほぼ完全に満たされている場合にのみ適用されます。アプリケーションがより多くのメモリを要求した場合は、キャッシュされたデータを削除するか、使用されていないメモリの一部をディスクに書き込むようにカーネルのデフォルト設定を変更します。 swappiness値は、2つの間の比率を制御します。ここで、1はデフォルトで常にキャッシュを削除し、100はほとんどの場合アプリケーションデータを交換します。
次のコマンドを使用して、システムの切り替え可能性を動的に構成できます。
sysctl vm.swappiness=10
/etc/sysctl.conf
含めるように編集して永久に設定します。
vm.swappiness = 10
サーバーに大量のRAMがあり、JVMがそのほとんどを使用している場合は、スワップを実行したくないので、この値を10または1に下げると便利です。大容量メモリを使用するほとんどの最新システムでは、通常この値を10に下げることをお勧めします。