rtprio
maximum realtime priority allowed for non-privileged processes (Linux 2.6.12 and higher)
priority
the priority to run user process with (negative values boost process priority)
これらの違いはなぜですか?
Linux にはさまざまなクラスのプロセス スケジューラがあります。デフォルトのもの (CFQ) は基本的に、実行したい各プロセスに等しい量のタイム スライスを与え、実行可能なタスクをキューに入れ、誰もが平均して同じ時間待機するようにします。この規則にはいくつかの例外が存在しますが、それが基本的な考え方です。
スケジューラのもう 1 つのクラスは、リアルタイム スケジューラです。リアルタイムは少し異なり、実行可能なタスクを公平なキューイング スキームにキューイングします。リアルタイム プロセスは、プロセスで必要になるとすぐに CPU 時間を取得します。これにより、実行中のプロセスが CPU から追い出され、「リアルタイム' プロセス。
どのような値を取ることができますか?
「優先度」が行うことは、プロセスのナイスネスを変更して、ログイン時にメインプロセスが特定のナイスネスで開始し、生成した子プロセスも同じナイスネスで開始するようにすることです。
これにより、競合する他のプロセスを優先してスケジュールされる可能性が高くなり、niceness の値が低い場合はユーザー エクスペリエンスの応答性/インタラクティブ性が高くなり、niceness が上がる場合は応答性/インタラクティブ性が低くなります。
たとえば、通常のログイン ユーザーの優先度をサービス可能なデーモンよりも低くしたり、root のログインの優先度を他のすべてよりも高くしたりすることが重要な場合があります。
リアルタイムに関しては、競合は「rtprio」フィールドで処理されます。両方とも実行したい 2 つのリアルタイム タスクがある場合、'rtprio' 値を使用して、どちらのプロセスを最初に優先するかを決定します。 rtprio が高いほど、タスクの優先度が高くなります。
これを limits.conf で設定すると、root が値を設定しなくても、リアルタイム タスクを特定の優先度帯に設定できます。これは、リアルタイム スケジューラを使用して実行するように設定されていないタスクには影響しません。
「nice」値は「rtprio」と同じですが、標準の CFQ スケジューリング用です。試したことはないけど。これは、PAM がこれらの制限を適切な値に設定しているときに生成される初期プロセスを設定します。通常のユーザーは、ルートを設定する必要なく、適切なレベル以上に移動できます。明示的に renice しない場合、そのログインのシェルから生成されたすべてのプロセス (たとえば) は、最初に作成された親プロセスから、limits.conf に設定された nice 値を継承することを意味します。
デフォルトとは?
「デフォルト」の制限 - 技術的には、明示的に設定されていない限り、それらはすべて pid 1 に設定されています。リソースの制限は、親プロセスから継承されます。制限が定義されていないか、どこにもオーバーライドされていない場合は、00から継承されます。コード> がデフォルトです。
その他の値
data
maximum data size (KB)
プロセスが初期化されると、プロセスがメモリにコピーされるときに「データ セグメント」と呼ばれるメモリが割り当てられます。これは、グローバルのスペース、おそらく他の初期化されたデータとヒープから割り当てられたメモリが存在する場所です。制限は、プロセスが使用できる最大割り当て量を制御します。
malloc() がデータ セグメントを過度に使用してデータを格納することはめったにないため、この制限に達することはまずありません。
fsize
maximum filesize (KB)
これは文字通り、そのユーザーと同じようにファイルに書き込める最大サイズを設定するだけです。
memlock
maximum locked-in-memory address space (KB)
アプリケーションが取得したほぼすべてのメモリは「削除可能」です。つまり交換可能です。メモリがロックされたメモリはスワップできず、常駐のままです。この値は、システムのメモリを枯渇させてスワッピングを引き起こすために悪用される可能性があるため、厳密に管理されています。これは通常、セキュリティ アプリケーション (ページがスワップされることを決して望まず、スワップ パーティションから読み取り可能になる) で役立ちます。
cpu
maximum CPU time (minutes)
これは、プロセスが CPU で消費できる合計時間を表します。この値を超えるプロセスは強制終了されます。これは、プロセスが開始されてから経過した時間と同じではないことに注意してください。つまり、1 分の cputime 制限は、プロセスの CPU 使用率が 100% の場合、消費するのに 1 分かかりますが、プロセスは 50% の使用率を使用しました。
CPU を超えるとどうなりますか?
プロセスに kill シグナル 12
が送信されます プロセスを終了します。これは、親プロセスによってキャッチされ、そこで処理されます。
CPU の使用が禁止されているプロセスは 1 つだけですか、それともユーザー全体ですか?
参照されているほぼすべての制限は、プロセスごとに処理されます。 CPU 時間も含まれます。そうではない唯一のもの 私は信じている そのユーザーによるログインの総数とプロセスの総数。
制限のあるその他の落とし穴は次のとおりです。
- 最大プロセスには、軽量スレッドの数が含まれます。
- RSS 制限は何の役にも立ちませんし、何年も前から存在していません。設定しても意味がありません。