Messages in this thread |  | | Date | Fri, 25 Jan 2013 15:27:40 -0800 | From | "Paul E. McKenney" <> | Subject | Re: [PATCH 0/7] cputime: Full dynticks task/cputime accounting v5 |
| |
Right... Replied to the wrong email. :-/
I queued "context_tracking: Add comments on interface and internals".
Thanx, Paul
On Fri, Jan 25, 2013 at 09:42:47AM -0800, Paul E. McKenney wrote: > On Thu, Jan 17, 2013 at 02:24:28PM +0100, Frederic Weisbecker wrote: > > Hi, > > > > This patchset was formerly called "Generic virtual based cputime accounting" > > but I changed the name to better reflect what it's all about. > > > > This is the part of the full dynticks patchset that handles the task and CPU > > time accounting without the tick. > > > > It's available at: > > > > git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git > > vtime/generic-v5 > > > > There have been a lot of changes since latest full dynticks patchset: > > > > - Use sched_clock() instead of jiffies for better precision. And because > > jiffies granularity was requiring too much dirty hacks to make it working. > > (Thanks Steven for the suggestion). > > > > - To fully support sched_clock(), use a per nanosec granularity in cputime_t > > > > - Fix a deadlock with tsacct > > > > - Better description of the Kconfig > > > > - Don't scale generic vtime accounting against CFS precise task time accounting. > > Now that we use sched_clock() we should have precise enough statistics. > > > > - Consolidate some code in the reader side > > > > - Make the reader irqsafe (fix potential deadlock against writers) > > > > > > Most of the work is done. There are just a few small things I need to care about > > to complete the full cputime support: > > > > * Also handle dynticks guest time accounting (p->gtime and p->utime). This > > require to bring a new accessor: task_gtime() and to add guest_enter() and > > guest_exit() on the context tracking subsystem. Then make the same treatment > > than with utime and stime. No big deal. > > > > * New tasks start their cputime accounting from schedule() on sched-in time > > (see arch_vtime_task_switch()). But I fear that idle tasks don't fall into this > > category. That's a small detail but I hope I can find some generic way to handle it. > > The boot init idle task is however handled. > > > > * Per nsec granularity requires that cputime_t directly maps to cputime64_t. This > > is fine on 64 bits archs and mostly fine in 32 bits archs as well because readers > > use seqlock to synchronize against writers. But reading struct kernel_cputstat > > is not protected. Not sure yet how to solve that. > > > > So I'll likely focus on these items on the next version. Let's hope we can make > > it ready for the next merge window. > > Queued for 3.9, thank you! > > Thanx, Paul > > > Thanks. > > > > --- > > Frederic Weisbecker (7): > > context_tracking: Export context state for generic vtime > > cputime: Librarize per nsecs resolution cputime definitions > > cputime: Move default nsecs_to_cputime() to jiffies based cputime file > > cputime: Generic on-demand virtual cputime accounting > > cputime: Allow dynamic switch between tick/virtual based cputime accounting > > cputime: Use accessors to read task cputime stats > > cputime: Safely read cputime of full dynticks CPUs > > > > > > arch/alpha/kernel/osf_sys.c | 6 +- > > arch/ia64/include/asm/cputime.h | 92 +---------- > > arch/ia64/include/asm/thread_info.h | 4 +- > > arch/ia64/include/asm/xen/minstate.h | 2 +- > > arch/ia64/kernel/asm-offsets.c | 2 +- > > arch/ia64/kernel/entry.S | 16 +- > > arch/ia64/kernel/fsys.S | 4 +- > > arch/ia64/kernel/head.S | 4 +- > > arch/ia64/kernel/ivt.S | 8 +- > > arch/ia64/kernel/minstate.h | 2 +- > > arch/ia64/kernel/time.c | 4 +- > > arch/powerpc/configs/chroma_defconfig | 2 +- > > arch/powerpc/configs/corenet64_smp_defconfig | 2 +- > > arch/powerpc/configs/pasemi_defconfig | 2 +- > > arch/powerpc/include/asm/cputime.h | 6 +- > > arch/powerpc/include/asm/lppaca.h | 2 +- > > arch/powerpc/include/asm/ppc_asm.h | 4 +- > > arch/powerpc/kernel/entry_64.S | 4 +- > > arch/powerpc/kernel/time.c | 4 +- > > arch/powerpc/platforms/pseries/dtl.c | 6 +- > > arch/powerpc/platforms/pseries/setup.c | 6 +- > > arch/s390/kernel/vtime.c | 6 +- > > arch/x86/kernel/apm_32.c | 11 +- > > drivers/isdn/mISDN/stack.c | 7 +- > > fs/binfmt_elf.c | 8 +- > > fs/binfmt_elf_fdpic.c | 7 +- > > include/asm-generic/cputime.h | 66 +------- > > include/asm-generic/cputime_jiffies.h | 72 +++++++++ > > include/asm-generic/cputime_nsecs.h | 104 ++++++++++++ > > include/linux/context_tracking.h | 28 ++++ > > include/linux/hardirq.h | 4 +- > > include/linux/init_task.h | 11 ++ > > include/linux/kernel_stat.h | 2 +- > > include/linux/sched.h | 34 ++++ > > include/linux/tsacct_kern.h | 3 + > > include/linux/vtime.h | 51 ++++-- > > init/Kconfig | 23 +++- > > kernel/acct.c | 6 +- > > kernel/context_tracking.c | 22 +-- > > kernel/cpu.c | 4 +- > > kernel/delayacct.c | 7 +- > > kernel/exit.c | 6 +- > > kernel/fork.c | 14 ++ > > kernel/posix-cpu-timers.c | 28 +++- > > kernel/sched/cputime.c | 219 +++++++++++++++++++++++--- > > kernel/signal.c | 12 +- > > kernel/softirq.c | 6 +- > > kernel/time/tick-sched.c | 5 +- > > kernel/tsacct.c | 44 ++++-- > > 49 files changed, 696 insertions(+), 296 deletions(-) > > create mode 100644 include/asm-generic/cputime_jiffies.h > > create mode 100644 include/asm-generic/cputime_nsecs.h > > > > -- > > 1.7.5.4 > >
|  |