From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751380Ab3IJJSy (ORCPT ); Tue, 10 Sep 2013 05:18:54 -0400 Received: from merlin.infradead.org ([205.233.59.134]:41467 "EHLO merlin.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750938Ab3IJJSx (ORCPT ); Tue, 10 Sep 2013 05:18:53 -0400 Date: Tue, 10 Sep 2013 11:18:47 +0200 From: Peter Zijlstra To: Emmanuel Deloget Cc: "[ML] linux-kernel" , Ingo Molnar Subject: Re: /proc/$PID/sched does not take PID namespace into account Message-ID: <20130910091847.GQ26785@twins.programming.kicks-ass.net> References: <5225F0A9.5040100@efixo.com> <20130909110141.GM31370@twins.programming.kicks-ass.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20130909110141.GM31370@twins.programming.kicks-ass.net> User-Agent: Mutt/1.5.21 (2012-12-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon, Sep 09, 2013 at 01:01:41PM +0200, Peter Zijlstra wrote: > On Tue, Sep 03, 2013 at 04:22:33PM +0200, Emmanuel Deloget wrote: > > The issue (if this is really an issue) lies in kernel/sched/debug.c, > > function proc_sched_show_task(). The code says [1]: > > > > SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, p->pid, > > get_nr_threads(p)); > > > > > I see a few options: > > > > * either it's a bug and it should be corrected (I'm not sure how to > > do it; the printed PID should reflect the current PID namespace > > and I don't how how to get this information). > > I suppose something like the below ought to work? -- completely > untested, please confirm. > > --- > Subject: sched, debug: Use PID namespaces > > Emmanuel reported that /proc/sched_debug didn't report the right PIDs > when using namespaces, cure this. > > Reported-by: Emmanuel Deloget > Signed-off-by: Peter Zijlstra > --- > kernel/sched/debug.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c > index e076bdd..e30bf44 100644 > --- a/kernel/sched/debug.c > +++ b/kernel/sched/debug.c > @@ -124,7 +124,7 @@ print_task(struct seq_file *m, struct rq *rq, struct task_struct *p) > SEQ_printf(m, " "); > > SEQ_printf(m, "%15s %5d %9Ld.%06ld %9Ld %5d ", > - p->comm, p->pid, > + p->comm, task_pid(p),, > SPLIT_NS(p->se.vruntime), > (long long)(p->nvcsw + p->nivcsw), > p->prio); > @@ -289,7 +289,7 @@ do { \ > P(nr_load_updates); > P(nr_uninterruptible); > PN(next_balance); > - P(curr->pid); > + P(task_pid(curr)); > PN(clock); > P(cpu_load[0]); > P(cpu_load[1]); > @@ -492,7 +492,7 @@ void proc_sched_show_task(struct task_struct *p, struct seq_file *m) > { > unsigned long nr_switches; > > - SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, p->pid, > + SEQ_printf(m, "%s (%d, #threads: %d)\n", p->comm, task_pid(p), > get_nr_threads(p)); > SEQ_printf(m, > "---------------------------------------------------------" Please do s/task_pid/task_pid_nr/g on this before trying.