2009-07-29 20 views
12

Linuxでは、マシンのCPU負荷を得るための組み込みCライブラリ関数はありますか?おそらく、私は/ procでファイルを開いて解析するための独自の関数を書くことができましたが、もっと良い方法であるはずです。LinuxでCPU負荷を得るためのC API

  • は、ベースRHEL4のインストールを越えたライブラリを要求してはなりません
  • ポータブルにする必要はありません。
+1

/procの中でさまざまなファイルを見てみましょう。 *すべてがファイルです*あなたはMSプログラマーですか?彼らはいつもこのコンセプトには不快に思えます。 –

+1

/procにアクセスするのはLinuxのやり方です。すべてのUNIXがその機能を持っているわけではありません。 – dmckee

+0

@dmckee:RHEL4があり、それは@jcs 'の要件 –

答えて

11

あなたは本当にも/procなしのunixで動作するCインタフェースの使用getloadavg()を、必要な場合。

詳細はすべてman pageです。

+1

です。それにもかかわらず、 "unix way"についての上記のすべての腹ばいは、本当にそれを行うための移植可能な方法です。もちろん、Linuxでは/ procの読み込みの上にあるライブラリ関数です。 –

+0

負荷平均はCPU負荷の表現ではありません。 cpuの負荷によって、私はどのくらいのウェイターがあなたのレストランで忙しいかを意味します。負荷平均は、座っている外に待っている顧客の数+現在食べている顧客の数を示します。これは_same_ものではありません。私は '/ proc/stat'の使用がより重要であると考えています。 –

1

私が理解していることは、/ procの包含を解析することは、そのような種類の公式のインタフェースです(そこには、実際にユーザに提示される前に解析されることが多いファイルが数多くあることです)。

7

Linux上でCPUの負荷に関する情報を得るための好ましい方法は、の/ proc/STATから読み取ることで、の/ proc/loadavg及び/PROC/の稼働時間。 トップのようなすべての通常のLinuxユーティリティは、この方法を使用します。

2

PROC(5)のマニュアルページから:

/proc/loadavg 
      The first three fields in this file are load average figures 
      giving the number of jobs in the run queue (state R) or waiting 
      for disk I/O (state D) averaged over 1, 5, and 15 minutes. They 
      are the same as the load average numbers given by uptime(1) and 
      other programs. The fourth field consists of two numbers sepaâ 
      rated by a slash (/). The first of these is the number of curâ 
      rently executing kernel scheduling entities (processes, 
      threads); this will be less than or equal to the number of CPUs. 
      The value after the slash is the number of kernel scheduling 
      entities that currently exist on the system. The fifth field is 
      the PID of the process that was most recently created on the 
      system. 
1

"負荷平均"はそれほど有用ではないかもしれません。実際にはどれくらいのCP​​Uが使用されているのか、「実行準備が整っている」タスクの平均数だけが限られていることがわかります。 「Ready to run」はやや主観的ですが、IOを待っているプロセスが含まれることが多いため、あまり役に立ちません。

使用中のシステムでは、8コアのマシンでは負荷平均が20+になりますが、CPUは比較的アイドルです。

使用されているものをCPU確認したい場合は、アクセス/ procは物事を行うには、UNIXの方法です

関連する問題