setpriority
私はnice
あなたがプロセスをどれだけうまく使用または変更できるかを知っていますrenice
。
しかし、Linuxはユーザー入力なしでプロセスのパフォーマンスを自動的に調整/変更しますか?
setpriority
次のようにCが使用する手順があります。
setpriority(PRIO_PROCESS, 0, -1)
プロセスが実行されているときに以下を実行すると、niceness値が-1であることがわかります。トップ。
リモートシステムの衝突を調査中にhtopの出力を受けました。このプロセスの適切な値が、あるインスタンスでは0に変更され、別のインスタンスでは6に変更されたことがわかりました。これがカーネルによって変更されるのか、それとも値を変更する唯一の方法がユーザーに値を変更させるか、スクリプトが意図的に変更するのかを知りたいのです。
答え1
私が知っている限り、Linuxカーネルはプロセスの利点を変えず、プロセスの優先順位を下げる必要がないため、なぜそうするのか理解できません。おなじみとは、プロセスがどのようになじむかをカーネルに提供する情報です。カーネルスケジューラはプロセスの優先順位を変更するためにこの情報を自由に考慮することができますが、その値を変更する必要はありません。
一方、ユーザーモードには次のデーモンプロセスがあります。そしてその使命は、管理者が設定した規則に従ってプロセスを再開することです。サーバーにそのようなデーモンがインストールされていますか?
ただし、ANDデーモンは、ルートが所有するプロセスを制限せず-1
に優先順位を設定したため、setpriority()
ここでもそうであると仮定します。だから私はこの素晴らしい変化の唯一の理由はユーザーの対話だと思います。
つまり、これを使用しているため、キーを押すか、キーを介して誤ってプロセスを再開した可能性がhtop
あります。]F8