uclampset - システムやプロセスにおける使用率クランプ属性を操作する
uclampset [options] [-m uclamp_min] [-M uclamp_max] _command argument
uclampset [options] [-m uclamp_min] [-M uclamp_max] -p PID
uclampset は、 既存の PID に対して、 使用率クランプ属性 (utilization clamping attributes) を設定または取得する。 また指定されたその属性を使って command を実行する。
使用率クランプは、 v5.3 において加わった新機能である。 タスクが稼働するにあたって、 利用できるリソース範囲についての情報を、 スケジューラーにヒントとして与えるものである。
タスクの使用率は、 周波数選択 (fequency selection) やタスク配置に影響する。 schedutil の cpufreq ガバナーだけが、 書き込み時において、 使用率クランプのヒントを解釈できる。 その他の cpufreq ガバナーサポートに関する詳細は、 カーネルのドキュメントを確認すること。
Arm の big.LITTLE のような、 非対称異種混合システム (asymmetric heterogeneous system) を利用している場合、 使用率クランプは、 タスク配置を切り替えるのに役立つ。 LITTLE コアの性能を超えた util_min 値によって、 ブーストされたタスクがあった場合、 スケジューラーは、 できる限り big コア上にそのタスクを配置しようとする。
同じように、 util_max が LITTLE コアの性能より小さい、 あるいは同じである場合、 たとえタスクの実際の使用率が最大であったとしても、 スケジューラーは、 タスクの配置をそのままとする決定を行う。
タスクの uclamp_min にゼロ以外の値を設定すると、 起動時のタスクを効率良くブーストさせ、 その使用率のままで起動させることができる。 value.
タスクにおける uclamp_max の値を 1024 未満とすると、 タスクを効率良く起動させ、 その使用率を上回らないようにすることができる。
使用率の範囲は [0:1024] である。 特別な値 -1 は、 システムのデフォルトをリセットする際に用いられる。
-m
util_min の値を設定する。
-M
util_max の値を設定する。
-a, --all-tasks
指定された PID に対応するすべてのタスク (スレッド) の使用率クランプ属性を、 設定または取得する。
-p, --pid
既存の PID に対しての操作を行い、 新たなタスクの起動は行わない。
-s, --system
システム全体のリソース使用の制約属性を、 設定または取得する。
-R, --reset-on-fork
SCHED_FLAG_RESET_ON_FORK フラグを設定する。
-v, --verbose
ステータス情報を表示する。
-h, --help
ヘルプを表示して終了する。
-V, --version
バージョンを表示して終了する。
デフォルトの動作は、 新たなコマンドを実行することである。
uclampset [-m uclamp_min] [-M uclamp_max] command [arguments]
また、 既存のタスクから使用率クランプ属性を取得することもできる。
uclampset -p PID
設定の場合は、以下のようにする。
uclampset -p PID [-m uclamp_min] [-M uclamp_max]
システム全体の属性を制御するには、 以下のようにする。
uclampset -s [-m uclamp_min] [-M uclamp_max]
プロセスのスケジューリング属性を変更するには、 ユーザーが CAP_SYS_NICE の権限を有していなければならない。 スケジューリング情報の取得は、 どのユーザーでも可能である。
システム全体における使用率クランプ属性は、 タスクが利用できる許容範囲を制御するためにある。 デフォルトにおいて、 uclamp_min と uclamp_max は 1024 に設定されている。 このことは、ユーザーがタスクを利用するにあたって、 使用率クランプの値は、 最大幅である [0:1024] での利用が可能であることを意味する。
たとえば以下を実行したとする。
uclampset -s
-m 512
-M 700
上により、 どのタスクであっても、 512 以上にはブーストさせない。 そしてシステム内のタスクはすべて、 使用率の上限が 700 に設定される。 これにより、 システムの最大パフォーマンスを、 効率よく 700 で提供する。
カーネル上での正確な動作に関しては、 カーネルドキュメントを確認すること。
nice(1), renice(1), taskset(1), sched(7)
Linux のスケジューリングスキームの説明については、 sched_setscheduler(2) や sched_setattr(2) を参照のこと。
バグ報告は、 以下にある issue トラッカーを利用すること。 <https://github.com/util-linux/util-linux/issues>.
uclampset コマンドは util-linux パッケージの一部であり、 以下からダウンロードできる。 Linux Kernel Archive <https://www.kernel.org/pub/linux/utils/util-linux/>.