- PR -

MRTG CPU使用率

投稿者投稿内容
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2005-01-16 01:11
ぽんす さん、平易かつ簡潔なご説明をありがとうございました。
# たくさん書いていただいて多謝です m(_ _)m
教えていただいた内容から、また資料探しなどもできそうです。

よい機会だからと 「man top」 を見直してみて、そういや見ていなかったわ…と 「man 5 proc」 を見てみたところ、

引用:

Manpage of PROC (JM Project さん) より:
loadavg
ロードアベレージは 1, 5, 15 分あたりの実行キュー内 (state R) またはディスク I/O 待ち (state D) のジョブ数を与える。これは uptime(1) などのプログラムによって得られる値と同じである。


とありましたので、あわせて記載しておきます。


引用:

ぽんすさんの書き込み (2005-01-13 22:37) より:
引用:

負荷がかかっているかどうかは cpu 数で判断すると、人づてに聞いて分かったのですが。


CPUが多いとロードアベレージも高くなる、という話でしょうか。
それはそうです。CPUが4個あれば4つのプロセスが同時に走行可能
ですので。


はい、そのときはアホな質問をしたと思いました
ロードアベレージについては、「1 以下なら OK」 や 「5 だとかなりの負荷がかかっている」 等の解説も見ていたんですね。
で、過去にそれが 1 以上になっているサーバを見る機会がありまして。
そのサーバは CPU を 2個搭載していたのですが、大事なのは 1 や 5 という数字自体ではないのだと、そのときに分かりました

そういえば、「CPU 使用率」 といいますと 「top コマンドでどのくらい idle になっているかを見る」 と学んだのですが、みなさんはどうされているのでしょう?
_________________
はゆる
Smile, Smiles make me happy.
ぽんす
ぬし
会議室デビュー日: 2003/05/21
投稿数: 1023
投稿日時: 2005-01-16 13:56
引用:

はゆるさんの書き込み (2005-01-16 01:11) より:
引用:

Manpage of PROC (JM Project さん) より:
loadavg
ロードアベレージは 1, 5, 15 分あたりの実行キュー内 (state R) またはディスク I/O 待ち (state D) のジョブ数を与える。これは uptime(1) などのプログラムによって得られる値と同じである。


とありましたので、あわせて記載しておきます。


「にゃにいいい?」と思ったのでカーネルソースをざっと眺めてみました。

Linuxの場合、ロードアベレージを算出する際にみているプロセスは
2種類あります。ひとつは走行可能なプロセス、もうひとつはシグナル
受信不可(とりあえず受付を保留する)で待機しているプロセスです。
# それを数えているのは kernel/timer.c の count_active_tasks()

で、シグナル受信不可で待機している(TASK_UNINTERRUPTIBLE の状態)
というのは典型的にはディスクI/Oの際に用いられるとのこと。
マニュアルの記述はこのことを指しているのでしょう。

が、たとえばFreeBSDですと...
数えているプロセスはやはり2種類なんですが、それは「生成したてで
まだ走行したことのないプロセス」と「走行可能なプロセス」です。
待機状態のプロセスは数えていません。
# 確認していませんが、おそらくBSD系はみんなこうだと思います。

・・・うーん、驚きました。

書き忘れたので追記。
Linux でも FreeBSD でも、ロードアベレージを計算する元ネタを
拾ってるのは5秒に一回でした。

引用:

ロードアベレージについては、「1 以下なら OK」 や 「5 だとかなりの負荷がかかっている」 等の解説も見ていたんですね。
で、過去にそれが 1 以上になっているサーバを見る機会がありまして。
そのサーバは CPU を 2個搭載していたのですが、大事なのは 1 や 5 という数字自体ではないのだと、そのときに分かりました


そうですね。いわゆる「デスクトップ」用途で使っているマシンで
ロードアベレージが1というとかなり重く感じるのではないかと
思いますが、サーバ用途だとシングルプロセッサで5になっても
ぜんぜん問題ない、ということも多いと思います。

引用:

そういえば、「CPU 使用率」 といいますと 「top コマンドでどのくらい idle になっているかを見る」 と学んだのですが、みなさんはどうされているのでしょう?


I/O wait を idle とは別に表示する AIX の罠が...
# ちゃちゃです、すみません。

[ メッセージ編集済み 編集者: ぽんす 編集日時 2005-01-16 14:14 ]
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2005-01-17 15:46
お、奥が深いです…

引用:

ぽんすさんの書き込み (2005-01-16 13:56) より:
いわゆる「デスクトップ」用途で使っているマシンで
ロードアベレージが1というとかなり重く感じるのではないかと
思いますが、サーバ用途だとシングルプロセッサで5になっても
ぜんぜん問題ない、ということも多いと思います。


単に CPU 数だけで判断するのは早計だ、ということですよね。
日頃から、どんなプロセスがあるのかなどを、把握しておかなければならないと (^^;

それと、OS によって違いがあることも分かりました。
# ロードアベレージにせよ、idle 率にせよ…
「処理が重いなぁ」 で CPU が限界なのかを判断するのも、やはり難しいんですねぇ

大変勉強になりました m(_ _)m
_________________
はゆる
Smile, Smiles make me happy.
pikkuri
常連さん
会議室デビュー日: 2004/12/16
投稿数: 39
投稿日時: 2005-01-19 21:17
CPU使用率は、奥が深いのですね。勉強になります。

その後、MRTGのCPU使用率に関してですが、書籍などで調べたのですが、
コンフィグの設定で、Targetを5分平均のまったく同じOIDを2つ並べたものに記述して、そのコンフィグをcrontabで5分間隔まわすようにしました。5分間隔の取得に直近の1分平均のCPU使用率を取得してもデータの意味が薄いので・・・
また、コンフィグの設定で、グラフの下部に同じデータが2行表示されるのは、見た目、”変”なので、
LegendI[xxx]:
と引数なしで設定行を入れました。

以上、御参考まで、
っと言いたいのですが、何か問題や、参考になることが御座いましたらお教えください。
lemon
会議室デビュー日: 2005/07/25
投稿数: 17
投稿日時: 2006-08-18 13:07
まったく同じ疑問ですので、質問を追加させて下さい。
uptimeの値(ロードアベレージ)はUNIX系を経験が長い人には馴染の数値なのですが
Windowsのようにパーセントで表した方が多くの人が理解しやすいのも確かです。
Linuxの端末を多く扱うので各ノードのCPUの負荷をMRTGでグラフ化したいのですが
パーセントとして正しく扱うには、どの値を用いればいいのでしょうか?

よろしくお願いします。
うえだ
ベテラン
会議室デビュー日: 2006/01/21
投稿数: 52
投稿日時: 2006-08-18 15:42
top コマンドでは不十分ですか?
oyaji
会議室デビュー日: 2006/02/25
投稿数: 11
投稿日時: 2006-08-24 20:19
ssCpuRawUser.0(.1.3.6.1.4.1.2021.11.50.0)とssCpuRawSystem.0(.1.3.6.1.4.1.2021.11.52.0)でユーザとシステムのCPU使用率がとれます。
値はTopともほぼ一致しているので、間違いないと思います。
下記が参考になります。

http://www.strikeout.jp/karaburi/2004/08/
Mares
会議室デビュー日: 2007/10/04
投稿数: 1
投稿日時: 2007-10-04 19:06
CpuIdleをMRTGに表示させたくて調べているうちにここを見つけたのですが
計算式でsnmpwalkで取ってきた値をそれぞれ計算すると確かにtopのIdleに近い
値が表示されるのですが、MRTGに計算式を組み込むと計算結果がlogに残って
しまい、ssCpuRawIdle.0の生の値が無くなってしまうため前回のデータからの
引き算がおかしくなってしまいます。

この類いの事でMRTGでグラフ化に成功されてる方はおられましたらご教授をお願いします。m(_ _)m

スキルアップ/キャリアアップ(JOB@IT)