
私は 2 つのプロセスで Ubuntu 基本サーバーを実行しています: - プロセス 1 - 稼働時間の 100% で計算を実行し、コミュニティに計算能力を共有するために使用します (優先度 19 で実行されています) - プロセス 2 - 時々 5 ~ 10 分間計算を実行し、自分の計算に使用します (優先度 -19 で実行されています)
プロセス 2 に 100% の計算能力を与える必要があります (その時点でプロセス 1 の CPU 使用率は 0% に近づくはずです)。
nice / renice を使用しようとしたところ、プロセス 1 には prio 19 (最低) が与えられ、プロセス 2 には prio -19 (最高) が与えられました。しかし、私が得た最高の結果は、プロセス 1 に 50% の CPU が、プロセス 2 に 50% の CPU が与えられました (htop で確認)。これはちょっと驚きました...
どちらのプロセスもマルチスレッド化されており、単独で実行されている場合は CPU のすべてのコアを 100% 消費します。他のリソース (I/O、メモリ、帯域幅など) がこの使用量に影響を与えることはありません。
計算能力が必要なときに、プロセスを手動で停止/開始したくありません (両方のプロセスが常に実行されている必要があります)。プロセス 2 に 100% の CPU が自動的に割り当てられる必要があります。
目標を達成するには何をすべきでしょうか? ありがとうございます。
答え1
@ubfan1 のおかげで、さまざまなスケジュール戦略を検討してきましたが、これまでに達成した最高の結果は次のとおりです。
プロセス1はSCHED_BATCHポリシーで実行されています
プロセス2はSCHED_RRポリシーで実行されています
結果: 両方のプロセスが同時に実行されている場合: - プロセス 1 には CPU の約 5% が割り当てられます - プロセス 2 には CPU の約 95% が割り当てられます
プロセス1のみが計算を実行している場合(プロセス2は計算を開始するために入力を待機しています) - プロセス1はCPUを100%使用しています
もっと興味がある人は、これを読んでください: