2

特定のプロセスID(実行時にsysctlまたは/ procファイルシステムによって定義される)に対してvruntime(タスクが実行された時間と赤黒木のインデックス)のようにcfsを変更したいと思います。 cfs)は人為的に拡張されているため、cfsはプロセスが長時間実行されたと見なしますが、実際にはその半分の時間実行されています。

通常は各CPUを50%使用する同一のプロセスを使用するという目標を達成し、たとえば10%と90%を使用するようにします...

アイデア?行ってvruntimeを編集すると、赤黒木が台無しになります。sched_entityのタスクのvruntimeを調整するには、どの関数を使用する必要がありますか?

4

1 に答える 1

1

カーネルでそれを行う必要はありません(最終的な目標はcfsをだますことではありません)。私が理解した場合、特定のプロセスをより低いCPU使用率で実行する必要があります。

  1. 低いスケジューリング優先度で特定のプロセスを開始できます。

    nice -n10your_process引数

    「mannice」と入力すると、詳細情報を取得できます

  2. 特定のプロセスのコードを変更できる場合はnice()、コードで使用できます。また、入力man 2 niceして詳細情報を取得することもできます

  3. cgroup/cpuを使用してそれを実現できます。

    マウント-tcgroup-ocpu cgroup / cgroup

    そしてそれを使用します。

私は最初のものを提案します。

最後に、カーネルに固執する場合は、__ dequeue_entity()を使用してエンティティをデキューし、vruntimeを変更してから、__ enqueue_entity()を使用して挿入し直すことができます。それは単なるヒントです、それは間違っているかもしれません、サックハックのような人は誰もいません、それは私の答えではありません。

于 2012-07-13T08:27:44.397 に答える