実行時にタイムスライスを大きくしたいUbuntuディストリビューション用のプログラムを書いています。タイムスライスをいじるとコンピューターの応答が遅くなる可能性があることは理解していますが、コンピューターに専用のサービス/プロセスを実行させたいと考えています。理想的には、親プロセスが破棄されると、スケジューラーは通常に戻ります。どうすればこれを達成できますか?ありがとう。
2 に答える
nice は、Linux の新しいバージョンではタイム スライスに大きな影響を与えません (古いバージョンでは、優先度を下げると実際にタイム スライスが減少し、バッチ処理に必要だったのとは正反対です)。
「schedtool -B PID」(インストールが必要な場合があります) を使用して、1 つ以上の PID のスケジューリング ポリシーを BATCH モードに設定できます。これにより、タイム スライスがデフォルト値から増加しますが、他の PID に対する優先度も低下します。man エントリによると、これにより、キャッシュの永続性に敏感な CPU 集中型ジョブのパフォーマンスが最大 300% 向上する可能性があります。
ただし、システムが使用するデフォルトのタイム スライスを直接変更する方法は見つかりませんでした。
プロセスの優先順位を設定するために、 nice(1)や同様のツールを使用したいと考えています。おそらくリアルタイムのスケジューリングですが、Linux でどの程度うまく実装されているかわかりません。
正の "Niceness" (最大 20) は、タスクの優先度を下げる (したがってタイム スライスを減らす) ことを意味し、負の値 (最小 -19) はプロセスをより重要にします。
ユースケースに応じて興味深い I/O 優先度用のioniceもあります。