アプリ版:「スタンプのみでお礼する」機能のリリースについて

 "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

A 回答 (1件)

ps のmanより



現在のところ CPU 使用率は、プロセスの生存期間中に実行に利用した時間のパーセンテージで表される。

なので値は、希望するものと異なるでしょう。
通常、psのCPUの使用率は、個々のプロセスのみのみの
判断材料とするべきでしょう。

余談ですが
ps -aux は、恐らく文法が間違っています。
かなりの人がそのような間違った書き方をしますが。。。。


希望しているには

ps aux か
ps -ef でしょう。
    • good
    • 1
この回答へのお礼

つまり、PS コマンドにおいての CPU 使用率とは
<プロセスの生存時間>÷<実行時間>=<CPU使用率>
として求められているのですね。
何かの事情でプロセスが残ってしまった場合、CPU使用率の値が
不当となる、という理解で構わないのでしょうか。

とにかくありがとうございました。あれからスクリプトには
PS コマンドは使用しないようにしております。

## かなりお礼が送れてしまいました。
## ps の文法のミスのご指摘もありがとうございました。

お礼日時:2008/02/28 11:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!