回答:
実際に使用されているものは、使用されているため、通常のLinuxメモリ制御スワップを許可することをお勧めします。
私が考えることができる唯一のことは、スワップをオフにしてから再びオンにすることです
sudo swapoff -a
sudo swapon -a
これは、スワップ内のすべてを格納するのに十分な予備の物理メモリがあることを前提としています...
swapoff
メモリが少なくなった場合に
0から100までの数をエコーするように調整でき/proc/sys/vm/swappiness
ます。
このコントロールは、カーネルがメモリページをどれだけ積極的にスワップするかを定義するために使用されます。値を大きくすると攻撃性が高まり、値を小さくするとswapの量が減ります。0の値は、空きページとファイルバックアップページの量がゾーン内の最高水準点を下回るまでスワップを開始しないようにカーネルに指示します。
デフォルト値は60です。
sysctl
代わりにコマンドを使用してください。この場合、それはsysctl vm.swappiness=x
です。
sysctl
ユーザーとの対話のための高レベルのコマンドを提供します。最終結果は同じですが、通常、ユーザーが直接対話するためには、より高レベルのインターフェイスが好まれます。キーを回すだけ(高レベル)ではなく、イグニッションワイヤーを短絡して(低レベル)エンジンを始動するのが好きです。
Linuxはメモリをうまく管理しているので、邪魔にならないでください。vm.swappiness設定(前述)が邪魔になりません。他の方法で何かを行うと、奇妙な問題が発生する可能性が高くなります。
そんなに空腹だったメモリを起動したのは何ですか?調整できますか?独自のメモリ制限ディレクティブがない場合は、ulimitも確認できます。
convert -density 200 file.pdf jpegs/file.jpg
。何らかの理由で大量のメモリを使用しますが、あなたは正しいです:調整できます。とにかく、状況はどのアプリケーションでも可能です:)
convert
-limit
メモリとディスクの使用量を制御するための引数があり、それらを参照する必要があります。設定-limit memory 512MB
などは良いでしょう。また、明示的なMAGICK_TEMPORARY_PATHを指定して、コマンドの実行後にクリーンアップすることもできます。
すべてのアプリケーションで使用可能なメモリがある場合は、swappinessを0に設定しても問題はありません。たとえば、qemu-kvmは、ほとんどの時間アイドル状態に「見える」ため、VMMがスワップアウトされる大きなターゲットです。qemu-kvmメモリーのメモリーの最大80%がスワップに書き込まれます。qemu-kvmで実行されているVMは、スワップが不足しているため、ほぼ応答しなくなります(ただし、ゲストはこれが起こっていることを知りません)。ゲストVMは、実際にはひどく引きずられているにもかかわらず、最も優れたパフォーマンスを発揮すると考えます。大量のVMが「起動」して処理を開始すると、十分な高速メモリとディスクを備えたエンタープライズグレードのハードウェアであっても、負荷平均が最大30を超えることがあります。これは、すぐに使用可能なqemu-kvm設計では失敗していると思います。
これが誰かを助けることを願っています。
カーネル内のVMサブシステムを考え直そうとすることはお勧めしません。実際に、あなたがそれよりも良い決定を下すのに十分な情報を持っていることはめったにありません。そして、どうにかして間違ったことをするように強制すると、あなたは物事をさらに遅くすることになります。
この質問から私の回答の一部をコピーします。
これで、swappiness調整可能パラメータの仕組みがわかります。これは、プロセスページテーブルにマッピングされたメモリの%+ swappiness値が100を超える場合、スワップするページを探すようにVMサブシステムに指示することで機能します。したがって、60に設定すると、システムはプロセスページテーブルから古いページのページングを開始しますシステムのメモリの40%以上を使用している場合。キャッシュを犠牲にしてプログラムでより多くのメモリを使用できるようにする場合は、swapiness値を低くする必要があります。
プロセスはまだ実行中ですか?ターミナルを開き、起動されたプロセスを見つけることができるかどうかを確認します。(ps aux | grep processnameを使用すると、少し簡単になる可能性があります)kill -9 PIDを使用して、まだ実行されている場合はそれらを強制終了します。殺すものに注意してください。プロセスが何であるかわからない場合、それを殺さないでください!また、free -mの出力を投稿して、実際にまだ多くのスワップを使用しているかどうかを確認できるようにします。
まだ実行速度が遅い場合は、起動したものがまだ実行されている可能性があります。あなたが何をしているのかを本当に知っているか、端に住んでいるのが好きでない限り、私は決してスワップをオフにしません。=)
それらを空にしたい場合は、この一連のコマンドを使用できます。
$ free && sync && echo 3 > /proc/sys/vm/drop_caches && free
total used free shared buffers cached
Mem: 1018916 980832 38084 0 46924 355764
-/+ buffers/cache: 578144 440772
Swap: 2064376 128 2064248
total used free shared buffers cached
Mem: 1018916 685008 333908 0 224 108252
-/+ buffers/cache: 576532 442384
Swap: 2064376 128 2064248
上記のコマンドの数値引数を変更することで、キャッシュされたアイテムのさまざまな側面を削除するようにLinuxカーネルに通知できます。
注:不要なもののメモリをクリーンアップします(カーネル2.6.16以降)。必ず同期を実行して、有用なものをディスクにフラッシュしてください!!!
ページキャッシュを解放するには:
$ echo 1 > /proc/sys/vm/drop_caches
デントリとiノードを解放するには:
$ echo 2 > /proc/sys/vm/drop_caches
ページキャッシュ、デントリ、およびiノードを解放するには:
$ echo 3 > /proc/sys/vm/drop_caches
上記はルートとして実行されることを意図しています。sudoを使用してそれらを実行しようとしている場合、構文を次のようなものにわずかに変更する必要があります。
$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'