All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
From: Linus Torvalds <torvalds@linux-foundation.org>
To: Eric Dumazet <eric.dumazet@gmail.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Martin Schwidefsky <schwidefsky@de.ibm.com>,
	John Stultz <johnstul@us.ibm.com>
Cc: Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Linux 2.6.32-rc1
Date: Mon, 28 Sep 2009 08:39:31 -0700 (PDT)	[thread overview]
Message-ID: <alpine.LFD.2.01.0909280829100.3349@localhost.localdomain> (raw)
In-Reply-To: <4AC060AE.1090401@gmail.com>




On Mon, 28 Sep 2009, Eric Dumazet wrote:
> Linus Torvalds a écrit :
> > 
> > Go wild, test it out, and let us know about any regressions you find,
> 
> Something seems wrong with process time accounting.
> 
> Following program should consume 10*8 seconds of cpu on a 8 cpu machine, but
> with 2.6.32-rc1 numbers are crazy.

Ok, so the top-level process time looks sane _while_ the thing is running 
(sum of all threads), but the per-thread times look broken (as if they had 
randomly had the times of the other threads added into them - looks to me 
like they on average had half the other threads' time accounted into 
them).

And then at the end, it looks like the time of the threads (which was 
over-accounted) get re-accounted back into the main process, so the final 
time is indeed wildly inflated.

IOW, looks like we're adding thread times multiple times to other threads 
(and then finally to the parent).

I'm adding the usual suspects to the cc, and leaving your results and 
test-program quoted here for them.. Thomas, Martin, John - if you're not 
the people I should blame for this, let me know.

		Linus

---
> $ gcc -O2 -o process process.c -lpthread
> $ ./process
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      0:08 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:05 -
>     - -        Rl+    0:05 -
>     - -        Rl+    0:09 -
>     - -        Rl+    0:05 -
>     - -        Rl+    0:05 -
>     - -        Rl+    0:05 -
>     - -        Rl+    0:05 -
>     - -        Rl+    0:01 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      0:16 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:14 -
>     - -        Rl+    0:06 -
>     - -        Rl+    0:14 -
>     - -        Rl+    0:10 -
>     - -        Rl+    0:06 -
>     - -        Rl+    0:06 -
>     - -        Rl+    0:10 -
>     - -        Rl+    0:02 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      0:24 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:20 -
>     - -        Rl+    0:11 -
>     - -        Rl+    0:24 -
>     - -        Rl+    0:15 -
>     - -        Rl+    0:07 -
>     - -        Rl+    0:07 -
>     - -        Rl+    0:24 -
>     - -        Rl+    0:03 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      0:32 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:29 -
>     - -        Rl+    0:12 -
>     - -        Rl+    0:29 -
>     - -        Rl+    0:21 -
>     - -        Rl+    0:08 -
>     - -        Rl+    0:08 -
>     - -        Rl+    0:29 -
>     - -        Rl+    0:04 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      0:40 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:35 -
>     - -        Rl+    0:13 -
>     - -        Rl+    0:35 -
>     - -        Rl+    0:26 -
>     - -        Rl+    0:09 -
>     - -        Rl+    0:09 -
>     - -        Rl+    0:35 -
>     - -        Rl+    0:05 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      0:48 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:40 -
>     - -        Rl+    0:14 -
>     - -        Rl+    0:40 -
>     - -        Rl+    0:31 -
>     - -        Rl+    0:10 -
>     - -        Rl+    0:10 -
>     - -        Rl+    0:40 -
>     - -        Rl+    0:06 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      0:56 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:45 -
>     - -        Rl+    0:15 -
>     - -        Rl+    0:45 -
>     - -        Rl+    0:37 -
>     - -        Rl+    0:11 -
>     - -        Rl+    0:11 -
>     - -        Rl+    0:45 -
>     - -        Rl+    0:07 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      1:05 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:51 -
>     - -        Rl+    0:21 -
>     - -        Rl+    0:55 -
>     - -        Rl+    0:46 -
>     - -        Rl+    0:12 -
>     - -        Rl+    0:12 -
>     - -        Rl+    0:59 -
>     - -        Rl+    0:08 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      1:13 ./process
>     - -        Sl+    0:00 -
>     - -        Rl+    0:56 -
>     - -        Rl+    0:22 -
>     - -        Rl+    1:00 -
>     - -        Rl+    0:52 -
>     - -        Rl+    0:13 -
>     - -        Rl+    0:13 -
>     - -        Rl+    1:04 -
>     - -        Rl+    0:09 -
>   PID TTY      STAT   TIME COMMAND
>  5532 pts/1    -      5:13 ./process
>     - -        S+     5:13 -
> 
> 
> $ cat process.c
> #include <pthread.h>
> #include <time.h>
> #include <stdio.h>
> 
> /*
>  * Burn cpu cycles for about 10 seconds
>  */
> static void *do_unit(void *arg)
> {
>         time_t t0,t1;
> 
>         t0 = time(NULL);
>         do {
>                 t1 = time(NULL);
>         } while (t1 - t0 <= 10);
>         return NULL;
> }
> 
> 
> 
> 
> int main(int argc, char *argv[])
> {
>         pthread_t tids[8];
>         int i;
>         char cmd[128];
> 
>         sprintf(cmd, "ps m -p %d", getpid());
>         for (i = 0; i < 8 ; i++)
>                 pthread_create(&tids[i], NULL, do_unit, NULL);
>         for (i = 0; i < 9; i++) {
>                 sleep(1);
>                 system(cmd);
>         }
>         for (i = 0; i < 8 ; i++)
>                 pthread_join(tids[i], NULL);
>         system(cmd);
>         return 0;
> }
> 

  reply	other threads:[~2009-09-28 15:40 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-09-27 22:34 Linux 2.6.32-rc1 Linus Torvalds
2009-09-27 23:44 ` Stephen Rothwell
2009-09-27 23:48   ` Diego Calleja
2009-09-27 23:52   ` Linus Torvalds
2009-09-28  0:17     ` Stephen Rothwell
2009-09-28  7:07 ` Eric Dumazet
2009-09-28 15:39   ` Linus Torvalds [this message]
2009-09-28 17:15     ` Martin Schwidefsky
2009-09-28 18:41       ` Eric Dumazet
2009-09-28 20:56         ` Martin Schwidefsky
2009-09-29 20:42         ` Eric Dumazet
2009-09-29 21:17           ` Linus Torvalds
2009-09-29 21:22             ` Arjan van de Ven
2009-09-29 21:56               ` Linus Torvalds
2009-09-30 15:07                 ` Arjan van de Ven
2009-09-30 15:27                   ` Eric Dumazet
2009-09-30 15:31                     ` Arjan van de Ven
2009-10-01  0:42                       ` Yuhong Bao
2009-09-30 15:57                   ` Eric Dumazet
2009-09-30 16:13                     ` Arjan van de Ven
2009-09-30 16:14                     ` Linus Torvalds
2009-09-30 18:53                       ` Ingo Molnar
2009-09-30 22:03                         ` [GIT PULL] scheduler fixes Ingo Molnar
2009-10-01  0:42                           ` Linus Torvalds
2009-10-01  0:57                             ` Linus Torvalds
2009-10-01  5:30                               ` Eric Dumazet
2009-10-01  6:11                                 ` Ingo Molnar
2009-10-01  6:18                                   ` Eric Dumazet
2009-10-01  6:42                                     ` Ingo Molnar
2009-10-01  6:59                                       ` Eric Dumazet
2009-10-01  7:28                                       ` Sam Ravnborg
2009-10-01  6:49                                 ` [tip:x86/urgent] x86: Don't generate cmpxchg8b_emu if CONFIG_X86_CMPXCHG64=y tip-bot for Eric Dumazet
2009-10-01  6:40                               ` [tip:x86/urgent] x86: Optimize cmpxchg64() at build-time some more tip-bot for Linus Torvalds
2009-10-02 16:40                               ` [GIT PULL] scheduler fixes Yuhong Bao
2009-10-01  6:05                             ` Ingo Molnar
2009-09-30 16:14                     ` Linux 2.6.32-rc1 Cyrill Gorcunov
2009-09-30 16:55                   ` Stefan Richter
2009-09-30 17:08                     ` Linus Torvalds
2009-09-30 17:40                       ` Stefan Richter
2009-09-30 19:32                   ` Ingo Molnar
2009-09-30 19:35                     ` Ingo Molnar
2009-09-30 20:16                     ` Eric Dumazet
2009-09-30 20:20                       ` Linus Torvalds
2009-09-30 20:22                         ` Ingo Molnar
2009-09-30 20:38                           ` Ingo Molnar
2009-10-01  7:18                             ` Arjan van de Ven
2009-09-30 19:37                   ` [tip:sched/urgent] x86: Provide an alternative() based cmpxchg64() tip-bot for Arjan van de Ven
2009-09-30 19:37                   ` [tip:sched/urgent] sched_clock: Fix atomicity/continuity bug by using cmpxchg64() tip-bot for Arjan van de Ven
2009-09-30 19:39                     ` Ingo Molnar
2009-09-30 19:39                   ` tip-bot for Eric Dumazet
2009-09-30 20:19                   ` Linux 2.6.32-rc1 Linus Torvalds
2009-09-30 20:24                     ` Eric Dumazet
2009-09-30 20:41                       ` Linus Torvalds
2009-09-30 20:49                         ` Ingo Molnar
2009-09-30 20:53                           ` Eric Dumazet
2009-09-30 21:00                             ` Ingo Molnar
2009-09-30 20:54                         ` Linus Torvalds
2009-09-30 21:53                         ` David Miller
2009-10-01 12:48                         ` Christoph Hellwig
2009-10-01 16:08                           ` Valdis.Kletnieks
2009-10-05 14:39                             ` Peter Zijlstra
2009-09-30 20:40                   ` [tip:sched/urgent] x86: Provide an alternative() based cmpxchg64() tip-bot for Arjan van de Ven
2009-09-30 20:58                     ` Ingo Molnar
2009-09-30 20:40                   ` [tip:sched/urgent] sched_clock: Fix atomicity/continuity bug by using cmpxchg64() tip-bot for Eric Dumazet
2009-09-30 20:55                   ` [tip:sched/urgent] x86: Provide an alternative() based cmpxchg64() tip-bot for Arjan van de Ven
2009-09-30 20:55                   ` [tip:sched/urgent] sched_clock: Fix atomicity/continuity bug by using cmpxchg64() tip-bot for Eric Dumazet
2009-09-30 21:00                   ` [tip:sched/urgent] x86: Provide an alternative() based cmpxchg64() tip-bot for Arjan van de Ven
2009-09-30 21:01                   ` [tip:sched/urgent] sched_clock: Fix atomicity/continuity bug by using cmpxchg64() tip-bot for Eric Dumazet
2009-10-05 16:00             ` [PATCH] x86: Generate cmpxchg build failures Peter Zijlstra
2009-10-05 18:51               ` Maciej Żenczykowski
2009-10-05 19:16               ` Linus Torvalds
2009-10-05 19:33                 ` Peter Zijlstra
2009-10-05 20:54                   ` Linus Torvalds
2009-10-09 14:23                   ` [tip:x86/asm] " tip-bot for Peter Zijlstra
2009-09-28 14:34 ` Linux 2.6.32-rc1 compile error Wolfgang Erig
2009-09-28 15:10   ` Jaswinder Singh Rajput
2009-09-28 15:32     ` Wolfgang Erig
2009-09-28 16:25 ` [PATCH] isdn: fix netjet/isdnhdlc build errors Randy Dunlap
2009-09-28 19:47   ` David Miller
  -- strict thread matches above, loose matches on Subject: below --
2009-09-28 22:10 Linux 2.6.32-rc1 devzero

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LFD.2.01.0909280829100.3349@localhost.localdomain \
    --to=torvalds@linux-foundation.org \
    --cc=eric.dumazet@gmail.com \
    --cc=johnstul@us.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=schwidefsky@de.ibm.com \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.