• 締切済み

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