From: Oleg Nesterov <oleg@redhat.com>
To: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Cc: Shailabh Nagar <nagar1234@in.ibm.com>,
Andrew Morton <akpm@linux-foundation.org>,
Peter Zijlstra <a.p.zijlstra@chello.nl>,
John stultz <johnstul@us.ibm.com>,
Thomas Gleixner <tglx@linutronix.de>,
Balbir Singh <balbir@linux.vnet.ibm.com>,
Martin Schwidefsky <schwidefsky@de.ibm.com>,
Heiko Carstens <heiko.carstens@de.ibm.com>,
Roland McGrath <roland@redhat.com>,
linux-kernel@vger.kernel.org, linux-s390@vger.kernel.org
Subject: Re: [patch 3/4] taskstats: Introduce cdata_acct for complete cumulative accounting
Date: Tue, 23 Nov 2010 17:59:51 +0100 [thread overview]
Message-ID: <20101123165951.GA5938@redhat.com> (raw)
In-Reply-To: <20101119201144.542948128@linux.vnet.ibm.com>
On 11/19, Michael Holzheu wrote:
>
> Currently the cumulative time accounting in Linux is not complete.
> Due to POSIX POSIX.1-2001, the CPU time of processes is not accounted
> to the cumulative time of the parents, if the parents ignore SIGCHLD
> or have set SA_NOCLDWAIT. This behaviour has the major drawback that
> it is not possible to calculate all consumed CPU time of a system by
> looking at the current tasks. CPU time can be lost.
>
> This patch adds a new set of cumulative time counters. We then have two
> cumulative counter sets:
>
> * cdata_wait: Traditional cumulative time used e.g. by getrusage.
> * cdata_acct: Cumulative time that also includes dead processes with
> parents that ignore SIGCHLD or have set SA_NOCLDWAIT.
> cdata_acct will be exported by taskstats.
Looks correct at first glance. A couple of nits below.
> TODO:
> -----
> With this patch we take the siglock twice. First for the dead task
> and second for the parent of the dead task. This give the following
> lockdep warning (probably a lockdep annotation is needed here):
And we already discussed this ;) We do not need 2 siglock's, only
parent's. Just move the callsite in __exit_signal() down, under
another (lockless) group_dead check.
Or I missed something?
> @@ -595,6 +595,8 @@ struct signal_struct {
> */
> struct cdata cdata_wait;
> struct cdata cdata_threads;
> + struct cdata cdata_acct;
> + struct task_io_accounting ioac_acct;
> struct task_io_accounting ioac;
Given that task_io_accounting is Linux specific, perhaps we can use
signal->ioac in both cases?
Yes, this is a user-visible change anyway. But, at least we can
forget about POSIX.
> + spin_lock_irqsave(&p->real_parent->sighand->siglock, flags);
> + if (wait) {
> + pcd = &p->real_parent->signal->cdata_wait;
> + tcd = &p->signal->cdata_threads;
> + cd = &p->signal->cdata_wait;
> + } else {
> + pcd = &p->real_parent->signal->cdata_acct;
> + tcd = &p->signal->cdata_threads;
> + cd = &p->signal->cdata_acct;
> + }
We can do this before taking ->siglock. Not that I think this really
matters, but otherwise this looks a bit confusing imho, as if we need
parent's ->siglock to pin something.
And thanks for splitting these changes. It was much, much easier to
read now.
Oleg.
next prev parent reply other threads:[~2010-11-23 16:59 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-19 20:11 [patch 0/4] taskstats: Improve cumulative time accounting Michael Holzheu
2010-11-19 20:11 ` [patch 1/4] taskstats: Introduce "struct cdata" Michael Holzheu
2010-11-25 12:29 ` Balbir Singh
2010-11-25 14:23 ` Oleg Nesterov
2010-11-25 16:38 ` Michael Holzheu
2010-11-19 20:11 ` [patch 2/4] taskstats: Introduce __account_cdata() function Michael Holzheu
2010-11-19 20:11 ` [patch 3/4] taskstats: Introduce cdata_acct for complete cumulative accounting Michael Holzheu
2010-11-23 16:59 ` Oleg Nesterov [this message]
2010-11-25 9:40 ` Michael Holzheu
2010-11-25 13:21 ` Oleg Nesterov
2010-11-25 17:45 ` Michael Holzheu
2010-11-19 20:11 ` [patch 4/4] taskstats: Export "cdata_acct" with taskstats Michael Holzheu
2010-11-25 13:26 ` Oleg Nesterov
2010-11-25 17:21 ` Michael Holzheu
2010-11-29 16:43 ` Oleg Nesterov
2010-11-29 16:58 ` Michael Holzheu
2010-11-29 18:08 ` Oleg Nesterov
2010-11-25 16:57 ` Balbir Singh
2010-11-19 20:19 ` [patch 0/4] taskstats: Improve cumulative time accounting Peter Zijlstra
2010-11-20 15:17 ` Oleg Nesterov
2010-11-22 7:21 ` Balbir Singh
2010-11-22 11:03 ` Michael Holzheu
2010-11-22 12:47 ` Michael Holzheu
2010-11-22 18:11 ` Valdis.Kletnieks
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=20101123165951.GA5938@redhat.com \
--to=oleg@redhat.com \
--cc=a.p.zijlstra@chello.nl \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=heiko.carstens@de.ibm.com \
--cc=holzheu@linux.vnet.ibm.com \
--cc=johnstul@us.ibm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nagar1234@in.ibm.com \
--cc=roland@redhat.com \
--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.