8 GB RAMと16 GBスワップを備えたDebian(バスター)ラップトップを持っています。私は非常に長時間実行されているタスクを実行しています。これは、私のラップトップが過去6日間電源を入れたままになっていることを意味します。
これを行う間、私は定期的にラップトップをラップトップとして使用する必要があります。これは問題になりません。長時間実行されるタスクはI / Oバウンドであり、USBハードディスク上のものを処理し、RAM(<200 MB)またはCPU(<4%)をあまり消費しません。
問題は、数時間後にラップトップに戻ったとき、非常に遅くなり、正常に戻るまでに30分かかることがあるということです。これは非常に悪いので、クラッシュモニターはそれぞれのアプリケーションがフリーズしたことを示すフラグを設定し(特にブラウザーウィンドウ)、誤ってクラッシュを開始します。
システムモニターを見ると、使用されている2.5 GBの約半分がスワップにシフトされます。スワップスペース(swapoff /dev/sda8
)を削除することで、これが問題であることを確認しました。スワップスペースなしでそのままにしておくと、24時間経ってもほとんど瞬時に元に戻ります。スワップを使用すると、最初の5分間は実際には6時間しか残されなかったレンガになります。私は、外出中でもメモリ使用量が3 GBを超えないことを確認しました。
swappiness(Wikipediaも参照)を10
andの値に減らしてみました0
が、問題は解決しません。非アクティブな状態が1日続くと、カーネルはGUI全体が不要になったと判断し、RAMから消去します(ディスクに消去します)。長時間実行されるタスクは、広大なファイルツリーを読み取り、すべてのファイルを読み取ることです。そのため、キャッシングが役立つと考えるようにカーネルが混乱している可能性があります。ただし、ファイル名が約10億個の2 TB USB HDを1回スイープするだけでは、GB RAMを追加してもパフォーマンスはあまり向上しません。これは、ハードドライブの動作が遅い安価なラップトップです。単に十分な速度でデータをRAMに読み込むことができません。
緊急時にのみスワップスペースを使用するようにLinuxに指示するにはどうすればよいですか?スワップなしで実行したくありません。予期しないことが起こり、OSが突然余分な数GBを必要とする場合、タスクを強制終了させたくないので、スワップの使用を開始したいと思います。しかし、現時点では、スワップを有効のままにすると、必要なときにラップトップを使用できなくなります。
「緊急事態」の正確な定義は議論の余地があるかもしれません。しかし、私が言いたいことを明確にするために:緊急事態は、システムをプロセスの交換または強制終了以外のオプションなしで放置することです。
緊急事態とは何ですか?- 本当に質問する必要がありますか?
この質問で緊急事態を構成する可能性のあるすべてを定義することはできません。しかし、例えば、カーネルが非常にメモリにプッシュされて、OOM Killerでプロセスを強制終了し始めた場合、緊急事態になる可能性があります。カーネルがスワップを使用することでパフォーマンスを改善できると考える場合、緊急事態はありません。
最終編集: オペレーティングシステムレベルで要求したことを正確に行う回答を受け入れました。将来の読者は、アプリケーションレベルのソリューションを提供する回答にも注意してください。