lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:	Thu, 17 Jan 2013 14:24:28 +0100
From:	Frederic Weisbecker <fweisbec@...il.com>
To:	LKML <linux-kernel@...r.kernel.org>
Cc:	Frederic Weisbecker <fweisbec@...il.com>,
	Andrew Morton <akpm@...ux-foundation.org>,
	Ingo Molnar <mingo@...nel.org>,
	Li Zhong <zhong@...ux.vnet.ibm.com>,
	Namhyung Kim <namhyung.kim@....com>,
	"Paul E. McKenney" <paulmck@...ux.vnet.ibm.com>,
	Paul Gortmaker <paul.gortmaker@...driver.com>,
	Peter Zijlstra <peterz@...radead.org>,
	Steven Rostedt <rostedt@...dmis.org>,
	Thomas Gleixner <tglx@...utronix.de>,
	Tony Luck <tony.luck@...el.com>,
	Fenghua Yu <fenghua.yu@...el.com>
Subject: [PATCH 0/7] cputime: Full dynticks task/cputime accounting v5                 

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.

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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ