私の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にアップグレードすることはできますが、それでもシステムを安定させる必要があります。誰が何が間違っているのか考えていますか?
スワップを有効にしている場合でも、これはこれと同じ質問だと思います: https://unix.stackexchange.com/q/373312/30602
基本的に、カーネル(またはkswapd0)は、より多くのRAMを解放するために、すべてのアクティブプロセスのコード(実行可能)ページを排除しています。したがって、 コンテキストスイッチ ディスクをメモリに保存してから、実行を再開できます。
これは、ディスクがRAMよりもずっと遅いという事実と相まって、1秒間に何度も発生する必要があり、OSが事実上フリーズしていると見なされます。 RAMが一時的にディスクに置き換えられるかのようです。これはすべて、カーネルが を間違えるis非アクティブなページだけでなく、実行中のプロセスのファイルでバックアップされた実行可能ページも削除します。
カーネルがそれらを追い出さないとどうなるか試してみたい場合は、 this の質問で見られる this patchでカーネルを再コンパイルできます。起こるべきことは、OSが数分ではなく最大1秒間(または永続的に)フリーズし、ディスクスラッシングがほとんどまたはまったくないことです。