lkml.org 
[lkml]   [2013]   [Jan]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[GIT PULL] cputime: Full dynticks task/cputime accounting v7
    Date
    Ingo,

    Please pull the new full dynticks cputime accounting code that
    can be found at:

    git://git.kernel.org/pub/scm/linux/kernel/git/frederic/linux-dynticks.git
    tags/full-dynticks-cputime-for-mingo

    My last concern is the dependency on CONFIG_64BIT. We rely on cputime_t
    being u64 for reasonable nanosec granularity implementation. And therefore
    we need a single instruction fetch to read kernel cpustat for atomicity
    requirement against concurrent incrementation, which only 64 bit archs
    can provide.

    It's probably no big deal to solve this issue. What we need is simply some
    atomic accessors.

    There is just no emergency though as this new option depends on the context
    tracking subsystem that only x86-64 (and soon ppc64) implements yet. And
    this set is complex enough already. I think we can deal with that later.

    Thanks.

    ---
    This implements the cputime accounting on full dynticks CPUs.

    Typical cputime stats infrastructure relies on the timer tick and
    its periodic polling on the CPU to account the amount of time
    spent by the CPUs and the tasks per high level domains such as
    userspace, kernelspace, guest, ...

    Now we are preparing to implement full dynticks capability on
    Linux for Real Time and HPC users who want full CPU isolation.
    This feature requires a cputime accounting that doesn't depend
    on the timer tick.

    To implement it, this new cputime infrastructure plugs into
    kernel/user/guest boundaries to take snapshots of cputime and
    flush these to the stats when needed. This performs pretty
    much like CONFIG_VIRT_CPU_ACCOUNTING except that context location
    and cputime snaphots are synchronized between write and read
    side such that the latter can safely retrieve the pending tickless
    cputime of a task and add it to its latest cputime snapshot to
    return the correct result to the user.

    Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
    ---

    Changes since v6:

    * Fix build error with kvm modules (Thanks Sedat Dilek and
    Wu Fenguang)

    * Fix mistyped header inclusion in ia64

    * Fix more missing symbols for kvm

    ---
    Frederic Weisbecker (8):
    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
    kvm: Prepare to add generic guest entry/exit callbacks
    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 | 5 +-
    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 | 5 +-
    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 +-
    fs/proc/array.c | 4 +-
    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/kvm_host.h | 55 ++++-
    include/linux/sched.h | 40 ++++
    include/linux/tsacct_kern.h | 3 +
    include/linux/vtime.h | 59 ++++--
    init/Kconfig | 23 ++-
    kernel/acct.c | 6 +-
    kernel/context_tracking.c | 43 +++--
    kernel/cpu.c | 4 +-
    kernel/delayacct.c | 7 +-
    kernel/exit.c | 10 +-
    kernel/fork.c | 6 +
    kernel/posix-cpu-timers.c | 28 ++-
    kernel/sched/core.c | 1 +
    kernel/sched/cputime.c | 298 +++++++++++++++++++++++---
    kernel/signal.c | 12 +-
    kernel/softirq.c | 6 +-
    kernel/time/tick-sched.c | 5 +-
    kernel/tsacct.c | 44 +++-
    52 files changed, 842 insertions(+), 322 deletions(-)
    create mode 100644 include/asm-generic/cputime_jiffies.h
    create mode 100644 include/asm-generic/cputime_nsecs.h

    --
    1.7.5.4



    \
     
     \ /
      Last update: 2013-01-28 21:01    [W:4.085 / U:0.056 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site