【CPU使用量の取得】

linuxやmac、windowsなんでもいいのですが、「CPU使用量」を取得するツールはありますか?

CPU使用率はよくありますが、これは割合であって絶対的な量ではないですよね。

別のマシン、CPU、別の周波数のCPUでも比較可能な絶対的なCPUの仕事量を表す値を取得することはできないでしょうか。

スーパーπで100万桁を計算する計算量を100とする。という具合の値を取得したいです。
よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:2009/01/30 19:00:58
  • 終了:2009/02/06 17:06:11

ベストアンサー

id:YasudaS No.1

YasudaS回答回数351ベストアンサー獲得回数52009/01/30 20:03:44

ポイント25pt

>絶対的なCPUの仕事量

というものが測定しがたいために、ありません。

CPUには得意/不得意があります。

極端な例として、足し算が得意だがかけ算はちょっと遅いということもあります。

もしくはその逆。

また、処理量はメモリやバスの速度等、環境に大きく依存するために

CPU本体だけでは決まりません。

http://mark.jolt.jp/pageDetail/87307

id:urekat

ありがとうございます。

そうですよね。すべて正確にはわからないものの、なんとか目安になる値はないものでしょうか。

2009/01/31 01:12:35

その他の回答(4件)

id:YasudaS No.1

YasudaS回答回数351ベストアンサー獲得回数52009/01/30 20:03:44ここでベストアンサー

ポイント25pt

>絶対的なCPUの仕事量

というものが測定しがたいために、ありません。

CPUには得意/不得意があります。

極端な例として、足し算が得意だがかけ算はちょっと遅いということもあります。

もしくはその逆。

また、処理量はメモリやバスの速度等、環境に大きく依存するために

CPU本体だけでは決まりません。

http://mark.jolt.jp/pageDetail/87307

id:urekat

ありがとうございます。

そうですよね。すべて正確にはわからないものの、なんとか目安になる値はないものでしょうか。

2009/01/31 01:12:35
id:longicorn No.2

longicorn回答回数56ベストアンサー獲得回数62009/01/30 20:23:27

ポイント25pt

FLOPS - WikipediaMIPS - Wikipediaとかいうのが有ったりはします。

ただ単純に考えると、こういうのってあらかじめCPU使用率100%でどれだけの値が出るかと計算しておくとか、CPU側からこの値をもらえれればいいけど

そうじゃなかったら今の使用量ってだせないような気がします。


それにアセンブラをやれば分かるけど、CPUの違いとかメモリ量とか値を求めるFLOPSの値を求めるソフトによって計算量が変わったりするしどうしようもないかと。

業界側で取り決めをしてCPU側から使用率を取得できるようにするとかしないと無理じゃないかな。

id:urekat

ありがとうございます。

仮に、「bogomips×プロセスの使用率×プロセスの実行時間」を

CPU使用量としたら何か参考になりうる値になりますかね。

2009/01/31 01:22:29
id:taksei No.4

taksei回答回数4ベストアンサー獲得回数02009/01/31 11:11:48

ポイント25pt

>CPU使用率はよくありますが、これは割合であって絶対的な量ではないですよね。

プログラムがCPUを占有していた時間です。
これにはメモリーやキャッシュからのデータ転送時間も含みます。
ゆえにその時間にCPUがどれだけの時間有効に演算が行われたのかさえもわかりません。
また、仮にデータ転送がなかったとしても、同時に何命令かを並列で走らせたりするので、単純に時間だけでは処理した演算は測れません。
そもそも、最近のCPUは実行結果を先読みして意味があるか分からない命令を実行したりするので、有効な演算って何なのかさえあやふやです。

>bogomips×プロセスの使用率×プロセスの実行時間

bogomipsはかなり小さなプログラムのようなので、おそらくはデータ転送など発生しないですが、実際のプログラムの動作では、上記のデータ転送待ちが発生します。
最近のCPUではCPUとキャッシュ、メモリの速度差が激しいので、結局、実行時間は走らせるプログラム依存になります。

1さんのおっしゃるようにCPUとしてではなくシステムとしての性能しか測れないと思います。
そのうえで、やはり様々なプログラムを走らせ実行時間を計測して、プログラムの特徴ごとに場合分けするしかないと思います。

リンクはベンチマークプログラム集を出している会社のHPです。
http://www.spec.org/

id:pyopyopyo No.5

pyopyopyo回答回数341ベストアンサー獲得回数832009/02/01 01:46:00

ポイント25pt

「CPU使用量」を「CPUが実行した命令数」と考えれば、取得は可能です。

最近のCPUは、CPU内部にパフォーマンスカウンタと呼ばれるカウンタを持っていて、

「CPUが実行した命令数」を数えることができます。

intel のCPUだと、INSTR_RETIRED という名前のカウンタになります。

このINSTR_RETIREDの値を取得するツールとしては、

があります。

なお、vtuneは intel cpu 上で動作している window、 linux に対応しています。

一方、oprofile は intel だけでなく amd のCPU等にも対応していますが、linux 上でしか動作しません。

  • id:pahoo
    着想は面白いのですが、「スーパーπ」以外の演算の換算率はどうしましょう?
  • id:seble
    単純にトランジスタの動作回数でいけますかね?
    トランジスタ総数x周波数x使用率でおおよそは数字が出せるんじゃないかなぁ・・・?
    もしくは、Flopsに稼働時間と使用率を掛ければ、、、
  • id:pahoo
    seble > トランジスタの動作回数

    ああ、それは面白そう。
    コンパイラの出来不出来(CPU最適化)が分かりそうな予感――。
  • id:YasudaS
    >単純にトランジスタの動作回数でいけますかね?

    無駄に動作させる方が高い値を示しそうな....

    >コンパイラの出来不出来(CPU最適化)が分かりそうな予感――。

    これはそうだと思います。
  • id:longicorn
    >仮に、「bogomips×プロセスの使用率×プロセスの実行時間」を
    >CPU使用量としたら何か参考になりうる値になりますかね。
    発想はいいかも。
    計算さえできれば十分参考値にはなりそうですね。


    ただ、bogomipsはどうやってもとめるのかが問題ですね。
    [http://ja.wikipedia.org/wiki/BogoMips:title=]に大まかな値が書いてますがここに出てこないCPUならばどうすればいいのかな?
    あらかじめデータベースを持っていてそれで計算する?
    まあ普通はPCしか使わないので、Wikipediaに乗っていないCPUは気にしなくてもいいのかな。(組み込み屋としてはこれはつらいけど)


    そもそもCPU使用量をもとめるプログラムが動くから正しい値が求まらないし。
    まあ参考値程度であればあまり気にしなくても良いのかなあ。
  • id:longicorn
    追記です。すいません。

    BogoMipsのWikipediaに以下のような1文が
    >|
    異なる種類のCPU間での性能比較には使えない。
    |<
    普通のPC同士でもCPUが異なれば比較できませんね。
  • id:YasudaS
    >pyopyopyo
    >「CPU使用量」を「CPUが実行した命令数」と考えれば

    その「考えれば」が誤りなんです。
    1命令で複数データを扱うといったCPUもあり、またベクトル型とスカラ型といった違いもあり、「CPU使用量をCPUが実行した命令数」という考え方がそもそも誤りなのですよ。

    質問者の問題の出し方もちょっと誤誘導がありますね。
    最初は、「CPU使用率はよくありますが、これは割合であって絶対的な量ではないですよね」としておいて、質問内容は、「絶対的なCPUの仕事量を表す値」になっているところです。
    つまり、質問内容は、CPU使用量ではなく、「絶対的なCPUの仕事量を表す値」となっておいるので、この「考えれば」という(CPU使用率を考えるという)論述の前提が誤っていることは、容易にわかると思います。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません