From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751967AbdANLOa (ORCPT ); Sat, 14 Jan 2017 06:14:30 -0500 Received: from terminus.zytor.com ([198.137.202.10]:49182 "EHLO terminus.zytor.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751845AbdANLO2 (ORCPT ); Sat, 14 Jan 2017 06:14:28 -0500 Date: Sat, 14 Jan 2017 02:01:26 -0800 From: tip-bot for Frederic Weisbecker Message-ID: Cc: sgruszka@redhat.com, fenghua.yu@intel.com, borntraeger@de.ibm.com, mpe@ellerman.id.au, torvalds@linux-foundation.org, riel@redhat.com, tony.luck@intel.com, mingo@kernel.org, heiko.carstens@de.ibm.com, linux-kernel@vger.kernel.org, schwidefsky@de.ibm.com, hpa@zytor.com, wanpeng.li@hotmail.com, paulus@samba.org, benh@kernel.crashing.org, tglx@linutronix.de, peterz@infradead.org, fweisbec@gmail.com Reply-To: mpe@ellerman.id.au, torvalds@linux-foundation.org, sgruszka@redhat.com, borntraeger@de.ibm.com, fenghua.yu@intel.com, schwidefsky@de.ibm.com, linux-kernel@vger.kernel.org, paulus@samba.org, hpa@zytor.com, wanpeng.li@hotmail.com, fweisbec@gmail.com, peterz@infradead.org, tglx@linutronix.de, benh@kernel.crashing.org, tony.luck@intel.com, mingo@kernel.org, riel@redhat.com, heiko.carstens@de.ibm.com In-Reply-To: <1483636310-6557-4-git-send-email-fweisbec@gmail.com> References: <1483636310-6557-4-git-send-email-fweisbec@gmail.com> To: linux-tip-commits@vger.kernel.org Subject: [tip:sched/core] sched/cputime: Allow accounting system time using cpustat index Git-Commit-ID: c31cc6a5187e8b09ccee34f81728a90f80e872e7 X-Mailer: tip-git-log-daemon Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset=UTF-8 Content-Disposition: inline Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Commit-ID: c31cc6a5187e8b09ccee34f81728a90f80e872e7 Gitweb: http://git.kernel.org/tip/c31cc6a5187e8b09ccee34f81728a90f80e872e7 Author: Frederic Weisbecker AuthorDate: Thu, 5 Jan 2017 18:11:43 +0100 Committer: Ingo Molnar CommitDate: Sat, 14 Jan 2017 09:54:11 +0100 sched/cputime: Allow accounting system time using cpustat index In order to prepare for CONFIG_VIRT_CPU_ACCOUNTING_NATIVE=y to delay cputime accounting to the tick, let's provide APIs to account system time to precise contexts: hardirq, softirq, pure system, ... Inspired-by: Martin Schwidefsky Signed-off-by: Frederic Weisbecker Acked-by: Thomas Gleixner Cc: Benjamin Herrenschmidt Cc: Christian Borntraeger Cc: Fenghua Yu Cc: Heiko Carstens Cc: Linus Torvalds Cc: Martin Schwidefsky Cc: Michael Ellerman Cc: Paul Mackerras Cc: Peter Zijlstra Cc: Rik van Riel Cc: Stanislaw Gruszka Cc: Tony Luck Cc: Wanpeng Li Link: http://lkml.kernel.org/r/1483636310-6557-4-git-send-email-fweisbec@gmail.com Signed-off-by: Ingo Molnar --- include/linux/kernel_stat.h | 2 ++ kernel/sched/cputime.c | 10 +++++----- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h index 00f7768..14b63bb 100644 --- a/include/linux/kernel_stat.h +++ b/include/linux/kernel_stat.h @@ -80,6 +80,8 @@ static inline unsigned int kstat_cpu_irqs_sum(unsigned int cpu) extern void account_user_time(struct task_struct *, cputime_t); extern void account_system_time(struct task_struct *, int, cputime_t); +extern void account_system_index_time(struct task_struct *, cputime_t, + enum cpu_usage_stat); extern void account_steal_time(cputime_t); extern void account_idle_time(cputime_t); diff --git a/kernel/sched/cputime.c b/kernel/sched/cputime.c index 7700a9c..aad4283 100644 --- a/kernel/sched/cputime.c +++ b/kernel/sched/cputime.c @@ -176,8 +176,8 @@ static void account_guest_time(struct task_struct *p, cputime_t cputime) * @cputime: the cpu time spent in kernel space since the last update * @index: pointer to cpustat field that has to be updated */ -static inline -void __account_system_time(struct task_struct *p, cputime_t cputime, int index) +void account_system_index_time(struct task_struct *p, + cputime_t cputime, enum cpu_usage_stat index) { /* Add system time to process. */ p->stime += cputime; @@ -213,7 +213,7 @@ void account_system_time(struct task_struct *p, int hardirq_offset, else index = CPUTIME_SYSTEM; - __account_system_time(p, cputime, index); + account_system_index_time(p, cputime, index); } /* @@ -400,7 +400,7 @@ static void irqtime_account_process_tick(struct task_struct *p, int user_tick, * So, we have to handle it separately here. * Also, p->stime needs to be updated for ksoftirqd. */ - __account_system_time(p, cputime, CPUTIME_SOFTIRQ); + account_system_index_time(p, cputime, CPUTIME_SOFTIRQ); } else if (user_tick) { account_user_time(p, cputime); } else if (p == rq->idle) { @@ -408,7 +408,7 @@ static void irqtime_account_process_tick(struct task_struct *p, int user_tick, } else if (p->flags & PF_VCPU) { /* System time or guest time */ account_guest_time(p, cputime); } else { - __account_system_time(p, cputime, CPUTIME_SYSTEM); + account_system_index_time(p, cputime, CPUTIME_SYSTEM); } }