68

プロセスの合計 CPU 使用率を計算する方法を考えていました。

もしそうなら、関連するフィールドは次のとおりだと思います(lindevdoc.orgから取得):cat /proc/pid/stat

  1. ユーザーコードで費やされた CPU 時間 (ジフィー単位で測定)
  2. カーネル コードで費やされた CPU 時間 (ジフィー単位で測定)
  3. 子からの時間を含む、ユーザー コードで費やされた CPU 時間
  4. 子からの時間を含む、カーネル コードで費やされた CPU 時間

では、フィールド 14 から 17 の合計に費やされた合計時間は?

4

6 に答える 6

6

はい、そう言えます。次の式を使用して、これらの値を秒に変換できます。

      sec = jiffies / HZ ; here - HZ = number of ticks per second

HZ 値は構成可能です - カーネル構成時に行われます。

于 2013-05-24T09:13:27.463 に答える
3

過去 10 秒間にプロセスによって使用された cpu% を計算する必要がある場合

  1. get total_time (13+14) in jiffies => t1 starttime(22) in jiffies => s1

-- 10 秒の遅延

total_time (13+14) in jiffies => t2 starttime(22) in jiffies => s2

t2-t1 *100 / s2 - s1 は % を与えませんか??

于 2013-06-30T12:48:18.747 に答える
-4

探しているものは次のとおりです。

//USER_HZ detection, from openssl code
#ifndef HZ
# if defined(_SC_CLK_TCK) \
     && (!defined(OPENSSL_SYS_VMS) || __CTRL_VER >= 70000000)
#  define HZ ((double)sysconf(_SC_CLK_TCK))
# else
#  ifndef CLK_TCK
#   ifndef _BSD_CLK_TCK_ /* FreeBSD hack */
#    define HZ  100.0
#   else /* _BSD_CLK_TCK_ */
#    define HZ ((double)_BSD_CLK_TCK_)
#   endif
#  else /* CLK_TCK */
#   define HZ ((double)CLK_TCK)
#  endif
# endif
#endif

このコードは実際にはcpulimitからのものですが、openssl スニペットを使用しています。

于 2015-09-25T02:24:17.400 に答える