GNU/Linux >> Linux の 問題 >  >> Linux

特定のプログラムのスワッピングを防ぐ方法は?

ヒカップの問題は必ずしもスワッピングが原因ではないと思います。プログラムが何かを再生している場合、Linux はこれに気づき、スワップしないようにする必要があります。あまり機能しないプログラムは、最初に交換されます。 RSS を見ると、プログラムが実際にスワップされているかどうかを確認できます。 /RES ps のフィールド または トップ . RSS 常駐セットのサイズ、タスクが使用しているスワップされていない物理メモリ (キロバイト単位) です。

あなたの問題はおそらく、不適切な CPU と I/O のスケジューリングと、Rhythmbox の非効率性が原因で、高いシステム負荷に敏感になっていることが原因だと思います。 CPU 優先度は nice コマンドで変更できます とレニス . I/O 優先度は ionice で変更できます 指図。高い優先度を使用できるのは、スーパー ユーザーだけです。また、Linux カーネル担当者がさまざまな低遅延パッチを使用してデスクトップ システムの応答性を改善しようとしていることも知っておく必要があります。そのため、それらの使用を検討してください。それらの 1 つは、Mike Galbraith によって書かれた約 200 行のパッチで、Linus でさえ感銘を受けました。このパッチに代わるものは、Fedora 15 のデフォルトになると思われる Lennart Poettering の cgroups トリックです。

とにかく、これらのパッチがなければ、2 つのオプションがあります。優先度の高いプログラムを起動するか、後で変更するかです。最初のオプションでは、Rhythmbox のラッパー スクリプトを使用できます:

#!/bin/sh
# Run Rhytmbox with high CPU and I/O priorities
nice -n -10 ionice -c 1 -n 1 su -l -c rhythmbox alexei

root として実行する必要があります。これを開始するためだけにルートとしてログインしたくない場合は、次のいずれかを使用できます su または sudo .

後で優先度を変更することに関しては、root としてログインして変更するのが面倒な場合は、5 分ごとに実行され、rhythmbox の優先度を設定する cron ジョブを使用してみてください。 プロセスですが、これを行うことはお勧めしません:

#!/bin/sh
renice -n -10 -p `pidof rhythmbox`
ionice -c 1 -n 1 -p `pidof rhythmbox`

簡単な答え:できませんし、すべきではありません。

昔、実行可能ファイルはスティッキー ビット +t を尊重していました これはカーネルにスワップしないように指示しますが、今日では無視されます。

カーネルがスワップする必要があると判断した場合、それには確かに正当な理由があります。アイドル状態の RAM は無駄なリソースであるため、Linux はメモリの使用に非常に積極的です。

本当にスワップしたくない場合は、RAM を増やすか、# swapoff -a だけにしてください。 (お勧めしません。既に問題が発生している場合、システムが使用できなくなる可能性があります)。

Shouldn't アプリを開発していて、まったくスワップしたくない場合に使用します。 stackoverflow に関するこの投稿をご覧ください。


これを行うにはいくつかの方法があります。試してみることができるのは、(一般的に) スワップを使用して Linux の作業が少なくなるということです:

echo 10 > /proc/sys/vm/swappiness

出典:https://www.kernel.org/doc/Documentation/sysctl/vm.txt

<ブロック引用>

交換性

このコントロールは、カーネルがメモリ ページをどの程度積極的にスワップするかを定義するために使用されます。値が高いほど積極性が増し、値が低いほどスワップの量が減少します。

デフォルト値は 60 です。

他のオプションは、cgroups カーネル マネージャーを使用することです。これはプロセスごとに固有ですが、実行する「作業」がいくつかあります。 -linux#10227


Linux
  1. Linuxでのコピーから特定のディレクトリを除外する方法

  2. Linuxで特定のリポジトリからパッケージをインストールする方法

  3. プログラムをどこからでも実行可能にする方法は?

  1. `ls`が出力をソートしないようにするにはどうすればよいですか?

  2. カーネル メッセージがコンソールにあふれないようにするにはどうすればよいですか?

  3. SWAPに行くのを防ぐには?

  1. LinuxでBashの履歴から特定のコマンドをクリアする方法

  2. Journalctl:ターミナルでテキストが切り捨てられないようにする方法は?

  3. プロセスがファイルを書き込めないようにする方法