topコマンドのTime+(CPU時間)列が誤って報告されている

topコマンドのTime+(CPU時間)列が誤って報告されている

私のtopコマンドのTime+列は、実行中のphpスクリプトの正しい時間を報告しません。最初は上下に変動し、次のようなものを報告します。

TIME+
22:39.35 php

そして3秒後に報告

TIME+
7:12.41 php

そしてさらに3秒後に報告

TIME+
42:44.21 php

なぜこのようなことが起こるのか、何か手がかりはありますか?

編集:

「c」を押してプロセス名を切り替えて、同じプロセスであることを確認しました。それでも、時間は誤って報告されています。

答え1

これらが同じ PHP プロセスであることは確かですか? おそらく、複数の PHP プロセスが「上にジャンプ」しているのでしょう。

すべての PHP プロセスをより良く、より簡単に監視したい場合は、監視対象に応じてはるかに簡単な「htop」を使用することをお勧めします。

答え2

デフォルトではtop%CPU でソートされるため、リスト内のプロセスが移動します。<キーを繰り返し使用してソート列を PID に移動すると、リストの「移動」が停止します (少なくとも、新しいプロセスが停止または開始しない限り)。 または、ps p PID u(対象のプロセスの PID を代入してphp) を実行して、リスト内のそのプロセスだけを表示しますps。 で時間が「移動」しない場合は、 でのソートのアーティファクトが表示されている可能性がありますtop

答え3

この値は、カーネルが管理する /proc//stat から 14 番目のフィールドを取得して計算されます。

問題の値は、私が理解する限り、「jiffies」(実質的には 100 分の 1 秒)単位でのみ増加します。

その pid の /proc//stat の値を 10 秒ごとに cat できますか?

関連情報