Messages in this thread | | | Date | Wed, 3 Oct 2007 22:24:46 +0200 | From | Willy Tarreau <> | Subject | Re: Decreasing stime running confuses top (was: top displaying 9999% CPU usage) |
| |
On Wed, Oct 03, 2007 at 09:27:41PM +0200, Frans Pop wrote: > On Wednesday 03 October 2007, you wrote: > > On Wed, 3 Oct 2007, Ilpo Järvinen wrote: > > > On Wed, 3 Oct 2007, Frans Pop wrote: > > > > The only change is in 2 consecutive columns: "2911 502" -> "2912 > > > > 500". Is processor usage calculated from those? Can someone explain > > > > how? > > > > > > The latter seems to be utime ...decreasing. No wonder if arithmetics > > > will give strange results (probably top is using unsigned delta?)... > > > > Hmm, minor miscounting from my side, stime seems more appropriate... > > Here is a series showing utime and stime for kontact over 2 minutes. > > Values were obtained using (identical values removed): > $ while true; do awk '{print $14" "$15}' /proc/5269/stat; sleep 1; done | ts > > Oct 03 21:17:12 12220 1593 > Oct 03 21:17:18 12221 1594 > Oct 03 21:17:26 12222 1593 <-- > Oct 03 21:17:34 12223 1594 > Oct 03 21:17:43 12224 1594 > Oct 03 21:17:51 12224 1595 > Oct 03 21:17:59 12225 1596 > Oct 03 21:18:07 12226 1595 <-- > Oct 03 21:18:15 12227 1596 > Oct 03 21:18:18 12228 1596 > Oct 03 21:18:22 12229 1595 <-- > Oct 03 21:18:31 12230 1596 > Oct 03 21:18:39 12230 1597 > Oct 03 21:18:44 12231 1597 > Oct 03 21:18:48 12232 1596 <-- > Oct 03 21:18:56 12233 1597 > Oct 03 21:19:04 12234 1596 <-- > Oct 03 21:19:11 12235 1597 > > So, is it normal that stime decreases sometimes or a kernel bug? > /me expects the last...
Let me guess... Dual core AMD64 ?
I'm 99.99% sure that if you boot with "notsc", the problem disappears. If so, you have one of those wonderful AMD64 with unsynced clock and without HPET to sync with. I wrote a simple program in the past to exhibit the problem. It would bsimply run "date +%s" in a busy loops and display each time it would change. Amazing. It could jump back and forth by up to 3 seconds!
Basically, it looked like this :
old=$(date +%s) while : ; do x=$(date +%s) if [ $x != $old ]; then echo "$old -> $x" old=$x fi done
Regards, Willy
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |