
特定のプログラムの実行を開始するたびに (このプログラムのプロセスを実行するたびに)、それぞれのプロセスに高い優先度が割り当てられるようにデスクトップ Linux システムを設定したいと思います。どうすればよいでしょうか?
プログラムを実行するインスタンスごとに、つまり特定のプロセスごとに個別に実行できることはわかっています。しかし、プログラムのデフォルト(つまり、将来のすべてのプロセス)を構成するにはどうすればよいでしょうか?
カーネルバージョン: 4.10.11-200.fc25.x86_64
答え1
「」というプログラムがあります自動ナイスデーモン" はこれを実行します。バックグラウンドで実行され、特定のパターンに一致するプロセスがプロセス テーブルに出現すると、その nice 値を自動的に設定します。
これを使うこともできますが、Linuxスケジューラはバランスを取ることが非常に多く、優先度を上げることで必ずしも魔法のように速度が向上するわけではないため、少しがっかりするかもしれません。悪いなぜなら、優先度の高いプロセスによって、アプリケーションの進行に実際に依存している優先度の低いプロセスが「飢え」てしまう可能性があるからです。
代わりに、次のようなものを検討してみましょう調整されたさまざまなワークロード向けのパフォーマンス プロファイルを備えています。または冒険好きなら、Con Kolivas デスクトップ スケジューラ パッチは、デスクトップエクスペリエンスを最適化することを目的としています。これは測定が非常に難しく、やや議論を呼んでいます。多くの人がこれを信頼していますが、懐疑的な人もいます。(Linux Weekly Newsに最新のイテレーションに関する記事があります。MuQSS CPUスケジューラ(現在は有料ですが、5 月 4 日から無料になります。)
答え2
あなたは調べてみたいと思うでしょうニースそしてレニスユーティリティ。プロセスに高い CPU 優先度を与えるには、root/sudo 権限が必要です。 を使用してnice
プロセスを高い優先度で開始するか、renice
後で高い優先度に変更することができます。
(terminal1):~# nice -n -10 sleep 100
(terminal2):~# top -b -n1 | grep sleep
23580 root 10 -10 4508 1244 1156 S 0.000 0.008 0:00.00 sleep
(terminal1):~# sleep 100
(terminal2):~# top -b -n1 | grep sleep
23888 root 20 0 4508 1316 1228 S 0.000 0.008 0:00.00 sleep
(terminal2):~# renice -n -10 23888
23888 (process ID) old priority 0, new priority -10
(terminal2):~# top -b -n1 | grep sleep
23888 root 10 -10 4508 1356 1268 S 0.000 0.008 0:00.00 sleep