Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 13 Sep 2010 07:25:35 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/sys/amd64/amd64 machdep.c mp_machdep.c src/sys/amd64/include apicvar.h src/sys/dev/acpica acpi_cpu.c acpi_hpet.c src/sys/i386/i386 machdep.c mp_machdep.c src/sys/i386/include apicvar.h src/sys/kern kern_clock.c ...
Message-ID:  <201009130726.o8D7Q6XD016976@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
mav         2010-09-13 07:25:35 UTC

  FreeBSD src repository

  Modified files:
    sys/amd64/amd64      machdep.c mp_machdep.c 
    sys/amd64/include    apicvar.h 
    sys/dev/acpica       acpi_cpu.c acpi_hpet.c 
    sys/i386/i386        machdep.c mp_machdep.c 
    sys/i386/include     apicvar.h 
    sys/kern             kern_clock.c kern_clocksource.c kern_et.c 
                         kern_tc.c kern_timeout.c sched_4bsd.c 
                         sched_ule.c 
    sys/mips/include     smp.h 
    sys/mips/mips        mp_machdep.c 
    sys/pc98/pc98        machdep.c 
    sys/powerpc/aim      machdep.c 
    sys/powerpc/booke    machdep.c 
    sys/powerpc/include  smp.h 
    sys/powerpc/powerpc  mp_machdep.c 
    sys/sparc64/include  intr_machdep.h smp.h 
    sys/sparc64/sparc64  intr_machdep.c mp_machdep.c 
    sys/sun4v/include    intr_machdep.h smp.h 
    sys/sun4v/sun4v      intr_machdep.c mp_machdep.c 
    sys/sys              callout.h sched.h systm.h timeet.h 
                         timetc.h 
    sys/x86/x86          local_apic.c 
  Log:
  SVN rev 212541 on 2010-09-13 07:25:35Z by mav
  
  Refactor timer management code with priority to one-shot operation mode.
  The main goal of this is to generate timer interrupts only when there is
  some work to do. When CPU is busy interrupts are generating at full rate
  of hz + stathz to fullfill scheduler and timekeeping requirements. But
  when CPU is idle, only minimum set of interrupts (down to 8 interrupts per
  second per CPU now), needed to handle scheduled callouts is executed.
  This allows significantly increase idle CPU sleep time, increasing effect
  of static power-saving technologies. Also it should reduce host CPU load
  on virtualized systems, when guest system is idle.
  
  There is set of tunables, also available as writable sysctls, allowing to
  control wanted event timer subsystem behavior:
    kern.eventtimer.timer - allows to choose event timer hardware to use.
  On x86 there is up to 4 different kinds of timers. Depending on whether
  chosen timer is per-CPU, behavior of other options slightly differs.
    kern.eventtimer.periodic - allows to choose periodic and one-shot
  operation mode. In periodic mode, current timer hardware taken as the only
  source of time for time events. This mode is quite alike to previous kernel
  behavior. One-shot mode instead uses currently selected time counter
  hardware to schedule all needed events one by one and program timer to
  generate interrupt exactly in specified time. Default value depends of
  chosen timer capabilities, but one-shot mode is preferred, until other is
  forced by user or hardware.
    kern.eventtimer.singlemul - in periodic mode specifies how much times
  higher timer frequency should be, to not strictly alias hardclock() and
  statclock() events. Default values are 2 and 4, but could be reduced to 1
  if extra interrupts are unwanted.
    kern.eventtimer.idletick - makes each CPU to receive every timer interrupt
  independently of whether they busy or not. By default this options is
  disabled. If chosen timer is per-CPU and runs in periodic mode, this option
  has no effect - all interrupts are generating.
  
  As soon as this patch modifies cpu_idle() on some platforms, I have also
  refactored one on x86. Now it makes use of MONITOR/MWAIT instrunctions
  (if supported) under high sleep/wakeup rate, as fast alternative to other
  methods. It allows SMP scheduler to wake up sleeping CPUs much faster
  without using IPI, significantly increasing performance on some highly
  task-switching loads.
  
  Tested by:      many (on i386, amd64, sparc64 and powerc)
  H/W donated by: Gheorghe Ardelean
  Sponsored by:   iXsystems, Inc.
  
  Revision  Changes    Path
  1.724     +115 -115  src/sys/amd64/amd64/machdep.c
  1.332     +12 -12    src/sys/amd64/amd64/mp_machdep.c
  1.38      +1 -2      src/sys/amd64/include/apicvar.h
  1.91      +13 -5     src/sys/dev/acpica/acpi_cpu.c
  1.32      +3 -3      src/sys/dev/acpica/acpi_hpet.c
  1.706     +130 -122  src/sys/i386/i386/machdep.c
  1.318     +12 -12    src/sys/i386/i386/mp_machdep.c
  1.41      +2 -4      src/sys/i386/include/apicvar.h
  1.221     +88 -52    src/sys/kern/kern_clock.c
  1.4       +601 -262  src/sys/kern/kern_clocksource.c
  1.6       +1 -1      src/sys/kern/kern_et.c
  1.189     +12 -6     src/sys/kern/kern_tc.c
  1.123     +37 -2     src/sys/kern/kern_timeout.c
  1.142     +1 -1      src/sys/kern/sched_4bsd.c
  1.277     +4 -4      src/sys/kern/sched_ule.c
  1.9       +0 -1      src/sys/mips/include/smp.h
  1.16      +1 -5      src/sys/mips/mips/mp_machdep.c
  1.427     +81 -58    src/sys/pc98/pc98/machdep.c
  1.141     +12 -0     src/sys/powerpc/aim/machdep.c
  1.29      +12 -0     src/sys/powerpc/booke/machdep.c
  1.12      +0 -1      src/sys/powerpc/include/smp.h
  1.32      +1 -1      src/sys/powerpc/powerpc/mp_machdep.c
  1.24      +0 -1      src/sys/sparc64/include/intr_machdep.h
  1.34      +0 -1      src/sys/sparc64/include/smp.h
  1.41      +1 -2      src/sys/sparc64/sparc64/intr_machdep.c
  1.61      +11 -10    src/sys/sparc64/sparc64/mp_machdep.c
  1.7       +0 -1      src/sys/sun4v/include/intr_machdep.h
  1.11      +0 -2      src/sys/sun4v/include/smp.h
  1.13      +1 -3      src/sys/sun4v/sun4v/intr_machdep.c
  1.16      +11 -8     src/sys/sun4v/sun4v/mp_machdep.c
  1.35      +2 -1      src/sys/sys/callout.h
  1.43      +1 -1      src/sys/sys/sched.h
  1.290     +6 -4      src/sys/sys/systm.h
  1.3       +2 -2      src/sys/sys/timeet.h
  1.61      +1 -0      src/sys/sys/timetc.h
  1.12      +1 -1      src/sys/x86/x86/local_apic.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201009130726.o8D7Q6XD016976>