9

/proc/stat は、user、nice、sys、idle、iowait、irq、および sirq のティックを次のように表示します。

cpu 6214713 286 1216407 121074379 260283 253506 197368 0 0 0

これらの値を使用して、ユーザー、ナイスなどの個々の使用率 (%) を計算するにはどうすればよいですか? 「top」または「vmstat」に表示される値と同様です。

4

2 に答える 2

11

このコードは、すべてのコアに広がるユーザー使用率を計算します。

import os
import time
import multiprocessing

def main():
    jiffy = os.sysconf(os.sysconf_names['SC_CLK_TCK'])
    num_cpu = multiprocessing.cpu_count()

    stat_fd = open('/proc/stat')
    stat_buf = stat_fd.readlines()[0].split()
    user, nice, sys, idle, iowait, irq, sirq = ( float(stat_buf[1]), float(stat_buf[2]),
                                            float(stat_buf[3]), float(stat_buf[4]),
                                            float(stat_buf[5]), float(stat_buf[6]),
                                            float(stat_buf[7]) )

    stat_fd.close()

    time.sleep(1)

    stat_fd = open('/proc/stat')
    stat_buf = stat_fd.readlines()[0].split()
    user_n, nice_n, sys_n, idle_n, iowait_n, irq_n, sirq_n = ( float(stat_buf[1]), float(stat_buf[2]),.
                                                            float(stat_buf[3]), float(stat_buf[4]),
                                                            float(stat_buf[5]), float(stat_buf[6]),
                                                            float(stat_buf[7]) )

    stat_fd.close()

    print ((user_n - user) * 100 / jiffy) / num_cpu

if __name__ == '__main__':
    main()
于 2011-09-04T12:38:35.627 に答える
4

からDocumentation/filesystems/proc.txt:

(...) これらの数値は、CPU がさまざまな種類の作業に費やした時間を識別します。時間単位は USER_HZ (通常は 100 分の 1 秒) です。

したがって、パーセンテージで使用率を把握するには、次のことを行う必要があります。

  • USER_HZマシン上にあるものを見つける
  • システムが起動してからの経過時間を調べます。

2 つ目は簡単ですbtime。同じファイルに、そのために使用できる行があります。については、 jiffy あたりのミリ秒数を取得する方法 をUSER_HZ確認してください。

于 2011-09-04T10:56:40.893 に答える