• 締切済み

CPU 使用率について(ps,top,sar)

 "ps -aux"コマンドを利用したスクリプトを作成し、CPU 使用率を定期的に監視するようにしています。 先日、このスクリプトで CPU 使用率 99% を示す異常がありましたが、同じタイミングで top や sar を 試したところ、CPU 使用率は 1% もありませんでした。 異常があった時の ps -aux の取得結果は以下の通りです。 USER   PID %CPU %MEM VSZ RSS TTY STAT START  TIME COMMAND root    7 99.9  0.0  0  0  ?  SW Jul23 272:54 [kscand/Normal] ※等幅フォントだと見易いです kscand で CPU を 99.9% 消費しているように見えるのですが、top や sar コマンドの CPU 使用率は いずれも 1% 未満でした。またサーバの動作自体は軽快で、とても CPU を使い切っているようには 思えませんでした。 この事から ps コマンドの異常か何かだと思うのですが、ps と top や sar で取得する CPU 使用率の値に どの様な違いがあるのでしょうか。また、取得する値についてそれぞれ信頼性はあるのでしょうか。 ご存知の方いらっしゃいましたらご教示の程お願いします。 ■バージョン OS:Redhat Linux 9 (Shrike) procps version 2.0.11 sysstat version 4.0.7

みんなの回答

  • pakuti
  • ベストアンサー率50% (317/631)
回答No.1

ps のmanより 現在のところ CPU 使用率は、プロセスの生存期間中に実行に利用した時間のパーセンテージで表される。 なので値は、希望するものと異なるでしょう。 通常、psのCPUの使用率は、個々のプロセスのみのみの 判断材料とするべきでしょう。 余談ですが ps -aux は、恐らく文法が間違っています。 かなりの人がそのような間違った書き方をしますが。。。。 希望しているには ps aux か ps -ef でしょう。

cotton840
質問者

お礼

つまり、PS コマンドにおいての CPU 使用率とは <プロセスの生存時間>÷<実行時間>=<CPU使用率> として求められているのですね。 何かの事情でプロセスが残ってしまった場合、CPU使用率の値が 不当となる、という理解で構わないのでしょうか。 とにかくありがとうございました。あれからスクリプトには PS コマンドは使用しないようにしております。 ## かなりお礼が送れてしまいました。 ## ps の文法のミスのご指摘もありがとうございました。

関連するQ&A

  • sarコマンドで取得したCPU使用率について

    sarコマンドで取得したCPU使用率の内、%wio(wait i/o)の値をどう解釈すればいいのでしょうか? 私の理解は、cpuは非稼働状態、つまりCPU使用率としては含めないと理解しています。しかし、unixの場合、ディスクi/o(Nonアレイ)はCPUに負荷をかけるという人もいます。 誰か教えてください! ちなみに、稼働環境はHP-UXです。

  • TOPコマンドで表示するCPU使用率で100%以上の表示について

    皆さんこんにちは。 TOPコマンドに関して、 分からないことがあり質問させていただきます。 特定のプロセスのCPU使用率が知りたく、 TOPコマンドに、grepをかけて、 そのプロセスのみのCPU使用率を見ていましたが、 「135.1%」とか、「120.9%」と、 100%を超える値を表示するプロセスがあるのですが、 これはどうしてか、 分からないでいます。 どなたか教えていただけるとありがたいです。 どんな要素が原因として考えられるものでしょうか? OS:fedora9 CPU:Intel(R) Pentium(R) 4

  • [Redhat Linux]sarの出力結果について

    いつもお世話になっています。 sarの出力結果について悩んでいます。 リソースを図る為、sysstatを入れて、sarによって結果を見ようと思いましたが、サーバーにより表示間隔が異なっています。 すべてのサーバーで5分おきに出力するにはどうすればよいでしょうか。 ▼Aサーバー sarコマンドの結果が一日1つしかデータが取得できていない。。 ▼Bサーバー sarコマンドの結果がランダムに出力されている。 ▼サーバーC sarコマンドの結果がきっちり5分おきに取得できています。 ▼設定ファイル(設定は全ファイル共通です。) $ cat /etc/sysconfig/sysstat # How long to keep log files (days), maximum is a month HISTORY=7 $ cat /etc/cron.d/sysstat # run system activity accounting tool every 10 minutes */5 * * * * root /usr/lib/sa/sa1 1 1 # generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib/sa/sa2 -A 取得間隔は5分置きに変更しております。 ▼sysstat バージョン $ rpm -qa | grep sysst sysstat-5.0.5-11.rhel4 ▼OSバージョン $ cat /etc/redhat-release Red Hat Enterprise Linux ES release 4 (Nahant Update 3) $ uname -a Linux xxxxxx 2.6.9-5.ELsmp #1 SMP Wed Jan 5 19:30:39 EST 2005 i686 i686 i386 GNU/Linux 以上宜しくお願い致します。

  • sysstatをインストールしたが、sarが使えない

    CnetOS 5 を使用しています。 #cat /etc/redhat-release CentOS release 5 (Final) 「sar」コマンドを使用したいと考え、WEB上から以下をダウンロードし、[./configure][make][make install]を実施しました。 ※sysstat-8.1.3.tar.gz その後「# sar」を実行するのですが、 『/var/log/sa/sa28 を開けません: そのようなファイルやディレクトリはありません』 とErrorがでて、コマンドが実行できません。 Google先生でも調べたのですが・・どなたかおわかりの方いらっしゃらないでしょうか。 よろしくお願いします。

  • pppoeのCPU使用率について。

    自宅でサーバーを運営しています。 サーバーを再起動したところ、 pppoeのCPU利用率が異常に跳ね上がる現象に遭いました。 /sbin/ifup ppp0 としたあと、TOPコマンドを見ると、 pppoeのプロセスのみ50-80%という異常な利用率が出てきました。 それ以外のプロセスは通常通りです。 使用しているCPUはQ9550(2.4Ghz 4core)です。 いろいろと試しましたが、解決できませんでした。 また、WEBで探しても同じ状況を見つけられませんでした。 よろしくお願いします。

  • cygwin(psコマンド)についての質問です

    cygwin(psコマンド)についての質問です ----- いつもお世話になっています。 cygwin/Linux勉強中です。 cygwinからwindows上のプロセスを見て、cpu負荷が高いものをkillしようと思っているのですが、以下のコマンドをたたいてもcpuの使用率が表示されません。 ps aux -W manコマンドで確認したところ、psのオプションにはauxについての説明がありませんでしたので使用できないのでしょうか? もしくは、オプションが間違っているのでしょうか? 低レベルな質問で申し訳ありませんが、ご教示の程、よろしくお願いいたします ------ cygwin version:1.7.5-1

  • psをCPU、MEMの使用率の多い順に表示 ( ps -aux )

    コマンド"ps"を CPUの使用率や、メモリの使用容量の順に並べるオプションってあります?

  • CPU使用率、メモリ使用率の取得

    solaris上でコマンドを起動するごとにCPU使用率、メモリ使用率を取得しテキストファイルかなにかにはきだされるようなシェルを作りたいのですが、何か良い方法はありませんか?ちなみにコマンドはcronで起動させ連続100回ほどコマンドを起動するような仕組みにしたいと思っています。 贅沢を言うならCPU使用率、メモリ使用率がエクセルファイルにはきだせ、グラフか何かであらわせないものかと思っているのですが・・・ムリですか?

  • Linuxのtopコマンドで2回目のCpu使用率だけを取り出す方法を教

    Linuxのtopコマンドで2回目のCpu使用率だけを取り出す方法を教えてください。 Cpu使用率をファイル出力出来るようにしようと思ったのですが、 topコマンドで一発目に表示されるものはシステムを起動してからの平均の様ですね。 それだと今の値がわからないので、下記のように実行して2回目だけをファイル出力したいのですが、 grepで2行目を抜き出すとゆうのが調べてもないように思います。 何かいい方法はないでしょうか? $ top -b -n 2 | grep ^Cpu Cpu(s): 46.1%us, 0.3%sy, 1.5%ni, 50.3%id, 1.8%wa, 0.0%hi, 0.0%si, 0.0%st Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st

  • CPU使用率とロードアベレージ

    Linuxのtopコマンド等で出力されるCPU使用率とロードアベレージの違いを教えてください。 また、ロードアベレージをCPU使用率に換算することは可能でしょうか? 可能であれば方法を教えてください。