web-dev-qa-db-ja.com

Linux:可能な限りすべてを明示的に取り替える方法?

大量のメモリを消費するものを起動しましたが、今ではすべてが大幅に遅れています。メモリを大量に消費するプロセスのために一部のスペースを解放するために、すべてのアプリケーションのメモリがスワップされて、アクセス時にすべてがゆっくりとRAM)に戻っていると思います。

可能なすべてをスワップからRAMに明示的に戻す方法はありますか?あるいは、すべてではないかもしれませんが、特定のプロセスデータだけですか?

61
kolypto

実際に使用されているものは使用されるため、通常のLinuxメモリー制御スワップを許可することをお勧めします。

私が考えることができる唯一のことは、スワップをオフにしてから再びオンにすることです

Sudo swapoff -a
Sudo swapon -a

これは、スワップにすべてを含めるのに十分な予備の物理メモリがあることを前提としています...

61
Douglas Leeder

0〜100の数値をエコーし​​て調整できます /proc/sys/vm/swappiness

このコントロールは、カーネルがメモリページをどの程度積極的にスワップするかを定義するために使用されます。値が大きいほど攻撃性が高くなり、値が小さいほどスワップの量が少なくなります。値0は、空きページとファイルバッキングページの量がゾーンの最高水位標より小さくなるまで、スワップを開始しないようにカーネルに指示します。

デフォルト値は60です。

13
sntg

Linuxはメモリの管理に細心の注意を払っており、あなたはその邪魔になりません。 vm.swappiness設定(前述)は邪魔になりません。他の方法で何かをしていると、奇妙な問題が発生する可能性が高くなります。

何をローンチしたのですか?調整できますか?独自のメモリ制限ディレクティブがない場合は、ulimitも確認できます。

5
CarpeNoctem

すべてのアプリケーションで使用可能なメモリがある場合は、swappinessを0に設定しても問題ありません。たとえば、qemu-kvmは、ほとんどの時間アイドルであるように「見える」ため、スワップアウトされるVMMの大きなターゲットです。 qemu-kvmメモリーのメモリーの最大80%がスワップに書き込まれるのがわかります。 qemu-kvmで実行されているVMはスワップが不足しているため、ほぼ応答しなくなります(ただし、ゲストはこれが発生していることを認識していません)。ゲストVMは、実際にはひどくドラッグしているにもかかわらず、最も優れたパフォーマンスを発揮していると考えます。VMの束が「ウェイクアップ」して処理を開始すると、平均負荷が急上昇する可能性があります。十分な高速メモリとディスクを備えたエンタープライズグレードのハードウェアでも、30を超えます。これは、標準のqemu-kvm設計では失敗しているようです。

これが誰かを助けることを願っています。

3
Gruic

VMカーネルのサブシステムを考え抜こうとしないことをお勧めします。実際よりも適切な決定を行うのに十分な情報を持っている可能性は非常に低いです。間違ったことをすると、結果的に遅くなるだけです。

2
Michael Kohne

システムを再起動できる場合は、それを実行する必要があります(他のソリューションを試すよりもはるかに短い時間がかかる場合があります)。

1
Maximus Minimus

この質問 から私の回答の一部をコピーします。

Swappiness調整パラメータがどのように機能するかを理解できるように。これは、VMサブシステムに、プロセスページテーブルにマップされたメモリの%+ swappiness値が100より大きい場合にスワップするページを探すように指示することで機能します。60に設定すると、システムが起動します。システムのメモリの40%以上を使用している場合に、プロセスページテーブルから古いページをページアウトします。キャッシュを犠牲にしてプログラムがより多くのメモリを使用できるようにする場合は、swappinessの値を低くします。

1
3dinfluence

Linuxがディスクからメモリにデータを強制的にアンスワップする本当に良い方法はないと思います。 swapoff/swaponが有効なソリューションであるが、ダーティで簡単にシステムが不安定になる可能性がある場合。スワップに空きメモリよりも多くのデータがある場合、Linuxがどのデータの一部をメモリに移動し、どの部分をディスクに保持するかを決定するために採用できる効率的なポリシーを想像するのは困難です。

概要:Linuxのパフォーマンスを通常の方法で徐々に回復させてください。そのVMサブシステムは、理想的なバランスの取れた状態に常に努力して移動するように構成されています。

0
ZarathustrA

プロセスはまだ実行中ですか?ターミナルを開いて、起動されたプロセスを特定できるかどうかを確認します。 (ps aux | grep processnameを使用すると、少し簡単になる場合があります)kill -9 PIDを使用して、まだ実行されている場合は削除します。あなたが殺すものに注意してください。プロセスが何であるかわからない場合は、殺さないでください!また、実際にまだ多くのスワップを使用しているかどうかを確認できるように、free -mの出力を投稿してください。

物事がまだ遅い場合は、起動したものがまだ実行されている可能性があります。あなたが本当にあなたが何をしているかを知っているか、またはあなたがエッジで生きるのが好きでない限り、私は決してスワップをオフにしません。 =)

0
jdoss