Linuxシステムでスワップスペースがいつ使用されるかを確認するには?

Linuxシステムでスワップスペースがいつ使用されるかを確認するには?

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)が使い果たされた場合にのみ交換を開始します。ただし、起動交換を構成できるため、設定によって異なり、この値で制御されますswappinessswappiness現在設定されている実行値が何であるかを確認してください。

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に下げることをお勧めします。

答え2

実用的な観点から見ると、Javaがメモリを処理する方法のため、これは次のように単純化されます。

「私のサーバーには5GBのRAMがありますが、いつスワップが始まりますか?」

これは、一時ファイルを保存するためにtmpfsを使用するかどうかに関する質問です。これは、スワップスペースを使用できるシステムのもう1つの側面であるためです(tmpfsは、システムがより多くのメモリを必要とするまで通常のページキャッシュに常駐してスワップスペースを開始します)。 )。ただし、アプリケーションがこの機能を使用しない可能性が高く、この場合、通常の操作中にスワップスペースが不要になる可能性があると仮定できます(メンテナンスの実行中にデフォルトアプリケーションを終了すると、スワップスペースはまったく必要ありません。あり)。いいえ)。

つまり、考えてみることもできます。一部もしかして。特に、少しのコストを節約したい場合があります(Amazon Linuxを実行しているため、EC2を使用しているため、ディスク容量は単位時間あたりの費用がかかります)、圧縮メモリを使用してスペースをスワップすることをお勧めします。 zram ドライバー (Amazon Linux にこのドライバーが含まれているかどうかは 100% 確信できませんが、少なくともモジュールにしていないと驚きます)。

答え3

スワップパーティションは、休止状態(ディスクの一時停止など)にも使用されます。一部のファイルを交換できます(新しいスワップファイルを埋めるには0を使用しddmkswapスワップにするには....を使用しますswapon)。

もちろん、コンピュータが多くのプログラムを実行するためにメモリを使用し、一部のプロセスがアクティブでない場合はスワップすることができ、それもスワッピングを使用します。

関連情報