web-dev-qa-db-ja.com

Linuxはプロセスの良さを自動的に変更しますか?

setpriorityまたはNiceまたはreniceでプロセスの良さを変更できることを私は知っています。

しかし、Linuxはユーザー入力なしでプロセスの良さを自動的に調整/変更しますか?

次のように、Cでsetpriorityを使用するプロセスがあります。

setpriority(PRIO_PROCESS, 0, -1)

プロセスが実行されているとき、htopを実行すると、そのniceness値が-1になっていることがわかります。

リモートマシンでのクラッシュを調査しているときに、htopの出力が提供されました。このプロセスのniceness値が、あるインスタンスで0に、別のインスタンスで6に変更されていることに気付きました。これがカーネルによって変更されたのか、それともこの値を変更する唯一の方法がユーザーを持つことであるのかを知りたいのですが。またはスクリプトが意図的に変更を加えます。

7
Luis

私の知る限り、Linuxカーネルはプロセスの素晴らしさを変えません。また、プロセスの優先度を下げる必要がないため、なぜそうなるのかわかりません。素晴らしさは、カーネルに与えられる情報であり、そのプロセスがどれほど素晴らしかったかを示します。カーネルスケジューラは、プロセスの優先度を変更するために、この情報を自由に考慮に入れることができます。値を変更する必要はありません。

一方、ユーザーランドには、 [〜#〜] and [〜#〜] のようなデーモンがあり、そのタスクは、管理者によって設定されたルールに従ってプロセスを解放することです。そのようなデーモンがサーバーにインストールされていますか?

ただし、ANDデーモンはrootが所有するプロセスを解放しません。また、setpriority()-1の優先度を設定したため、ここではこれが当てはまると思います。したがって、その良さの変化について私が見る唯一の理由は、ユーザーの操作です。

とはいえ、htopを使用しているため、を押すと、プロセスが誤って削除された可能性があります。 ] キーまたは F8 キー。

4
xhienne