Re: [PATCH] i386: Selectable Frequency of the Timer Interrupt.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 16 May 2005 19:38:36 -0700 (PDT) Christoph Lameter wrote:

| On Mon, 16 May 2005, Andrew Morton wrote:
| 
| > So yes, the time has come around again to work out what we're going to do
| > about this.  I'd be a bit worried about allowing users to set HZ=724,
| > simply because nobody tests with that, and it might expose odd timing
| > relationships and unfortunate arithmetic rounding artifacts.  So if we're
| > going to do this thing it might be better to just offer 100, 250 and 1000.
| 
| Ok. Here is the patch allowing 100, 250 and 1000 HZ for i386 and x86_64:
| 
| -----
| 
| Make the timer frequency selectable. The timer interrupt may cause bus
| and memory contention in large NUMA systems since the interrupt occurs
| on each processor HZ times per second.
| 
| Signed-off-by: Christoph Lameter <[email protected]>
| Signed-off-by: Shai Fultheim <[email protected]>
| 
| Index: linux-2.6.12-rc4/arch/i386/Kconfig
| ===================================================================
| --- linux-2.6.12-rc4.orig/arch/i386/Kconfig	2005-05-17 02:19:55.000000000 +0000
| +++ linux-2.6.12-rc4/arch/i386/Kconfig	2005-05-17 02:27:12.000000000 +0000
| @@ -1133,6 +1133,20 @@
|  	  a work-around for a number of buggy BIOSes. Switch this option on if
|  	  your computer crashes instead of powering off properly.
|  
| +config HZ
| +	int "Frequency of the Timer Interrupt (100, 250 or 1000 per second)"
| +	range 100 1000
| +	default 1000
| +	help
| +	  Allows the configuration of the timer frequency. It is customary
| +	  to have the timer interrupt run at 1000 HZ but 100 HZ may be more
| +	  beneficial for servers and NUMA systems that do not need to have
| +	  a fast response for user interaction and that may experience bus
| +	  contention and cacheline bounces as a result of timer interrupts.
| +	  Note that the timer interrupt occurs on each processor in an SMP
| +	  environment leading to NR_CPUS * HZ number of timer interrupts
| +	  per second.
| +
|  endmenu

How about using choice / endchoice to that an improper HZ value
cannot be entered at all?  (instead of using range M N)


|  source "arch/i386/kernel/cpu/cpufreq/Kconfig"
| Index: linux-2.6.12-rc4/include/asm-i386/param.h
| ===================================================================
| --- linux-2.6.12-rc4.orig/include/asm-i386/param.h	2005-05-17 02:15:57.000000000 +0000
| +++ linux-2.6.12-rc4/include/asm-i386/param.h	2005-05-17 02:30:22.000000000 +0000
| @@ -1,8 +1,19 @@
| +#include <linux/config.h>
| +
|  #ifndef _ASMi386_PARAM_H
|  #define _ASMi386_PARAM_H
|  
|  #ifdef __KERNEL__
| -# define HZ		1000		/* Internal kernel timer frequency */
| +#if CONFIG_HZ == 1000
| +#define HZ 1000				/* Internal kernel timer frequency */
| +#elif CONFIG_HZ == 250
| +#define CONFIG_HZ 250
| +#elif CONFIG_HZ == 100
| +#define HZ = 100
| +#else
| +#error "Invalid Timer Interrupt Frequency"
| +#endif
| +
|  # define USER_HZ	100		/* .. some user interfaces are in "ticks" */
|  # define CLOCKS_PER_SEC		(USER_HZ)	/* like times() */
|  #endif
| Index: linux-2.6.12-rc4/arch/x86_64/Kconfig
| ===================================================================
| --- linux-2.6.12-rc4.orig/arch/x86_64/Kconfig	2005-05-17 02:19:54.000000000 +0000
| +++ linux-2.6.12-rc4/arch/x86_64/Kconfig	2005-05-17 02:26:38.000000000 +0000
| @@ -410,6 +410,20 @@
|  
|  	  If unsure, say Y. Only embedded should say N here.
|  
| +config HZ
| +	int "Frequency of the Timer Interrupt (100, 250 or 1000 per second)"
| +	range 100 1000
| +	default 1000
| +	help
| +	  Allows the configuration of the timer frequency. It is customary
| +	  to have the timer interrupt run at 1000 HZ but 100 HZ may be more
| +	  beneficial for servers and NUMA systems that do not need to have
| +	  a fast response for user interaction and that may experience bus
| +	  contention and cacheline bounces as a result of timer interrupts.
| +	  Note that the timer interrupt occurs on each processor in an SMP
| +	  environment leading to NR_CPUS * HZ number of timer interrupts
| +	  per second.
| +
|  endmenu
|  
|  #
| Index: linux-2.6.12-rc4/include/asm-x86_64/param.h
| ===================================================================
| --- linux-2.6.12-rc4.orig/include/asm-x86_64/param.h	2005-03-02 07:38:10.000000000 +0000
| +++ linux-2.6.12-rc4/include/asm-x86_64/param.h	2005-05-17 02:28:04.000000000 +0000
| @@ -1,8 +1,20 @@
| +#include <linux/config.h>
| +
|  #ifndef _ASMx86_64_PARAM_H
|  #define _ASMx86_64_PARAM_H
|  
|  #ifdef __KERNEL__
| -# define HZ            1000            /* Internal kernel timer frequency */
| +
| +#if CONFIG_HZ == 1000
| +# define HZ 1000            /* Internal kernel timer frequency */
| +#elif CONFIG_HZ == 250
| +# define HZ 250
| +#elif CONFIG_HZ == 100
| +# define HZ 100
| +#else
| +#error "Invalid Timer Interrupt Frequency"
| +#endif
| +|  # define USER_HZ       100          /* .. some user interfaces are in "ticks */
|  #define CLOCKS_PER_SEC        (USER_HZ)       /* like times() */
|  #endif


---
~Randy
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux