問題タブ [cfs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux-kernel - 特定のタスク グループの vruntime を変更する方法
私の質問を読んでくれてありがとう。いくつかの仮定を置いて進めているので、事実と違うことを言っている場合は訂正してください。
functionでは、通常、次に選択されるタスク グループは、値pick_next_task_fair()
に関連付けられたタスクを含むグループです。代わりに、手動で介入し、目的のタスク グループを、それが属するmin_vruntime
の最も左側に配置して、その効果を調査したいと考えました。cfs_rq
だから私が持っている主な質問は次のとおりです。
- タスク グループの CPU シェアを変更するだけで済むでしょうか? 同じ基準が cgroup にも適用されますか?
- CPU シェアを変更しても目的が達成できない場合は、どうすればよいですか?
これまでのところ、2 番目の質問については、次の手順を念頭に置いています。
- 対象のタスク グループのスケジューリング エンティティと、それが属する CFS_RQ を特定します。
min_vruntime
そのタスク グループの値を、CFS RQ の現在の最低値よりも低い値に変更します。- CFS_RQ の一番左側に挿入します。
- __schedule() を再度実行します。
しかし、私は自分が使用できるツールを本当に認識していません。私はカーネル モジュールと eBPF に精通していますが、データ収集、トレース、およびネットワーク トラフィックの変更の領域に限られます。カーネル内のデータ構造をどのように変更できるか (または変更できるかどうかさえも) わかりません。
スケジューラを変更する必要がある場合は、xD. しかし、私はそれをやったことがないので、どこから始めればいいのか、何千ファイルを変更する必要があるのかわかりません。
私が得ることができる入力は大歓迎です!もう一度お時間をいただきありがとうございます。