web-dev-qa-db-ja.com

メモリ不足時にUbuntuがフリーズする

私のubuntuサーバーは1ヶ月間問題なく動作しました。しかし先週、私はより多くのメモリを必要とするプログラムを使い始めました。また、空きメモリが約100MBになると、システムは完全にフリーズします。私は何も入力できず、カーソルを移動し、PuTTYから接続します..単に何もしません..奇妙なことに、ハードドライブはまだ動作しています(点滅しています)。この問題を完全に再現できます。 100MB。しかし、スワップファイルがあり、このスワップファイルには十分な空き領域があります。フリーズする1秒前のメモリステータスを次に示します。

 1.0秒ごとに無料-mh Mon Mar 19 17:05:33 2018 
 
使用済みの無料共有バフ/キャッシュが利用可能
 Mem:11G 10G 115M 1.2G 1.5G 115M 
スワップ:7.9G 2.4G 5.5G 

これが私のLinuxカーネルです

 Linux xxx 4.15.1-041501-generic#201802031831 SMP Sat Feb 3 18:32:13 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux 

これが私のubuntuバージョンです

利用可能なLSBモジュールはありません。
ディストリビューターID:Ubuntu 
説明:Ubuntu 17.10 
リリース:17.10 
コードネーム:artful 

これが私のswappines、overcommit_memory、overcommit_ratioの構成です

 vm.swappiness = 60 
 vm.overcommit_memory = 0 
 vm.overcommit_ratio = 50 

これが私のハードウェア構成です

マザーボード:PRIME B350-PLUS 
 CPU:AMD Ryzen 7 1700 Eight-Core Processor 
 RAM:4GB + 8GB DDR4 
ハードドライブ:Samsung 960 evo 250GB 

もちろん、メモリを16GBにアップグレードすることはできますが、それでもシステムを安定させる必要があります。誰が何が間違っているのか考えていますか?

5
user1247373

スワップを有効にしている場合でも、これはこれと同じ質問だと思います: https://unix.stackexchange.com/q/373312/30602

基本的に、カーネル(またはkswapd0)は、より多くのRAMを解放するために、すべてのアクティブプロセスのコード(実行可能)ページを排除しています。したがって、 コンテキストスイッチ ディスクをメモリに保存してから、実行を再開できます。

これは、ディスクがRAMよりもずっと遅いという事実と相まって、1秒間に何度も発生する必要があり、OSが事実上フリーズしていると見なされます。 RAMが一時的にディスクに置き換えられるかのようです。これはすべて、カーネルが を間違えるis非アクティブなページだけでなく、実行中のプロセスのファイルでバックアップされた実行可能ページも削除します。

カーネルがそれらを追い出さないとどうなるか試してみたい場合は、 this の質問で見られる this patchでカーネルを再コンパイルできます。起こるべきことは、OSが数分ではなく最大1秒間(または永続的に)フリーズし、ディスクスラッシングがほとんどまたはまったくないことです。

1
Marcus Linsner