私は外国のコードを「安全に」実行するのに役立つプログラムを書いています。また、外部コードのメモリ使用率とCPU計算時間も得たかったので、cgroupを使うべきだと思いました。
cgroupを生成し/sys/fs/cgroup/cpuacct/<program name>
、外部コードを実行するPIDをcgroups.procsファイルに追加しました。
/sys/fs/cgroup/cpuacct/<program name>/cpuacct.usage
プログラムの実行後にCPU時間を読み取ろうとします。
~によるとこれリンクから取得した番号はUSER_HZにあります。
sysconfとgetconfのマニュアルページを読んでナビゲートした後、次のコマンドを実行しましたが、getconf CLK_TCK
出力は100でした。
sysconf のマニュアルページでは、これは「1 秒あたりのクロックティック数」です。それでは、CPU計算時間を秒単位で取得するためにcpuacct.usageから取得した数値を100で割ることができます。
これは、0から1000までのすべての数値リストを生成してからリストの長さを印刷する単純なPythonプログラムの場合、平均約2億7000万USER_HZを得る数値であるためです。 270万秒は私には合わないようです。
誰かがUSER_HZをミリ秒に変換する方法を説明できますか?あるいは、プロセス全体の私の理解が間違っている可能性があります。
よろしくお願いします!
ベストアンサー1
sysconf のマニュアルページでは、これは「1 秒あたりのクロックティック数」です。それでは、CPU計算時間を秒単位で取得するためにcpuacct.usageから取得した数値を100で割ることができます。
カーネル文書によるとここ
.../sys/fs/cgroup/cpuacct.usage は CPU 時間をナノ秒単位で提供します。
したがって、値をUSER_HZではなくナノ秒(1,000,000,000)単位で割る必要があります。
cpuacct.stat
USER_HZの値のみ。