Magellan Linux

Contents of /trunk/kernel26-magellan/patches-2.6.29-r1/0302-2.6.29-powertop-fixes-2.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 759 - (show annotations) (download)
Thu Apr 23 19:48:34 2009 UTC (15 years ago) by niro
File size: 4559 byte(s)
-2.6.29-magellan-r1:
- linux-2.6.29.1
- fbcondecor-0.9.6
- dropped squashfs; version 4.0 is upstream
- unionfs-2.5.1
- linux-phc-0.3.1
- reiserfs4 re-diffed
- dropped atl2; driver is upstream
- tuxonice-3.0.1
- powertop fixes re-diffed

1 From e6f2ff1e4763212f1dcc945db76fb744b951ac53 Mon Sep 17 00:00:00 2001
2 From: Josh Triplett <josh@freedesktop.org>
3 Date: Sun, 13 May 2007 15:21:39 -0700
4 Subject: [PATCH] Lengthen and align background timers to decrease wakeups
5
6 This patch changes a few background timers in the Linux kernel to
7 1) be aligned to full seconds so that multiple timers get handled in one
8 processor wakeup
9 2) have longer timeouts for those timers that can use such longer timeouts
10
11 Some of these are a bit crude, but it's effective.
12
13 Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
14 [Josh: Updates for 2.6.22-rc1]
15 Signed-off-by: Josh Triplett <josh@kernel.org>
16 ---
17 kernel/time/clocksource.c | 10 ++++++++--
18 mm/page-writeback.c | 8 ++++----
19 mm/slab.c | 6 +++---
20 net/core/neighbour.c | 4 ++--
21 4 files changed, 17 insertions(+), 11 deletions(-)
22
23 diff -Naur linux-2.6.29/kernel/time/clocksource.c linux-2.6.29-magellan/kernel/time/clocksource.c
24 --- linux-2.6.29/kernel/time/clocksource.c 2009-03-24 00:12:14.000000000 +0100
25 +++ linux-2.6.29-magellan/kernel/time/clocksource.c 2009-04-23 20:24:07.000000000 +0200
26 @@ -79,11 +79,17 @@
27 /*
28 * Interval: 0.5sec Threshold: 0.0625s
29 */
30 -#define WATCHDOG_INTERVAL (HZ >> 1)
31 +#define WATCHDOG_INTERVAL (HZ*10)
32 #define WATCHDOG_THRESHOLD (NSEC_PER_SEC >> 4)
33
34 +static int secondtime;
35 +
36 static void clocksource_ratewd(struct clocksource *cs, int64_t delta)
37 {
38 + if (!secondtime) {
39 + secondtime = 1;
40 + return;
41 + };
42 if (delta > -WATCHDOG_THRESHOLD && delta < WATCHDOG_THRESHOLD)
43 return;
44
45 @@ -150,7 +156,7 @@
46
47 if (next_cpu >= nr_cpu_ids)
48 next_cpu = cpumask_first(cpu_online_mask);
49 - watchdog_timer.expires += WATCHDOG_INTERVAL;
50 + round_jiffies(watchdog_timer.expires + WATCHDOG_INTERVAL));
51 add_timer_on(&watchdog_timer, next_cpu);
52 }
53 spin_unlock(&watchdog_lock);
54 diff -Naur linux-2.6.29/mm/page-writeback.c linux-2.6.29-magellan/mm/page-writeback.c
55 --- linux-2.6.29/mm/page-writeback.c 2009-04-23 20:25:15.000000000 +0200
56 +++ linux-2.6.29-magellan/mm/page-writeback.c 2009-04-23 20:20:46.000000000 +0200
57 @@ -94,7 +94,7 @@
58 /*
59 * The interval between `kupdate'-style writebacks, in jiffies
60 */
61 -int dirty_writeback_interval = 5 * HZ;
62 +int dirty_writeback_interval = 15 * HZ;
63
64 /*
65 * The longest number of jiffies for which data is allowed to remain dirty
66 @@ -773,7 +773,7 @@
67
68 oldest_jif = jiffies - dirty_expire_interval;
69 start_jif = jiffies;
70 - next_jif = start_jif + dirty_writeback_interval;
71 + next_jif = round_jiffies(start_jif + dirty_writeback_interval);
72 nr_to_write = global_page_state(NR_FILE_DIRTY) +
73 global_page_state(NR_UNSTABLE_NFS) +
74 (inodes_stat.nr_inodes - inodes_stat.nr_unused);
75 @@ -791,7 +791,7 @@
76 nr_to_write -= MAX_WRITEBACK_PAGES - wbc.nr_to_write;
77 }
78 if (time_before(next_jif, jiffies + HZ))
79 - next_jif = jiffies + HZ;
80 + next_jif = round_jiffies(jiffies + HZ);
81 if (dirty_writeback_interval)
82 mod_timer(&wb_timer, next_jif);
83 }
84 @@ -813,7 +813,7 @@
85 static void wb_timer_fn(unsigned long unused)
86 {
87 if (pdflush_operation(wb_kupdate, 0) < 0)
88 - mod_timer(&wb_timer, jiffies + HZ); /* delay 1 second */
89 + mod_timer(&wb_timer, round_jiffies(jiffies + HZ)); /* delay 1 second */
90 }
91
92 static void laptop_flush(unsigned long unused)
93 diff -Naur linux-2.6.29/mm/slab.c linux-2.6.29-magellan/mm/slab.c
94 --- linux-2.6.29/mm/slab.c 2009-03-24 00:12:14.000000000 +0100
95 +++ linux-2.6.29-magellan/mm/slab.c 2009-04-23 20:20:46.000000000 +0200
96 @@ -464,8 +464,8 @@
97 * OTOH the cpuarrays can contain lots of objects,
98 * which could lock up otherwise freeable slabs.
99 */
100 -#define REAPTIMEOUT_CPUC (2*HZ)
101 -#define REAPTIMEOUT_LIST3 (4*HZ)
102 +#define REAPTIMEOUT_CPUC (12*HZ)
103 +#define REAPTIMEOUT_LIST3 (20*HZ)
104
105 #if STATS
106 #define STATS_INC_ACTIVE(x) ((x)->num_active++)
107 @@ -944,7 +944,7 @@
108 init_reap_node(cpu);
109 INIT_DELAYED_WORK(reap_work, cache_reap);
110 schedule_delayed_work_on(cpu, reap_work,
111 - __round_jiffies_relative(HZ, cpu));
112 + __round_jiffies_relative(HZ*4, cpu));
113 }
114 }
115
116 diff -Naur linux-2.6.29/net/core/neighbour.c linux-2.6.29-magellan/net/core/neighbour.c
117 --- linux-2.6.29/net/core/neighbour.c 2009-03-24 00:12:14.000000000 +0100
118 +++ linux-2.6.29-magellan/net/core/neighbour.c 2009-04-23 20:20:46.000000000 +0200
119 @@ -755,10 +755,10 @@
120 if (!expire)
121 expire = 1;
122
123 - if (expire>HZ)
124 + if (expire>4*HZ)
125 mod_timer(&tbl->gc_timer, round_jiffies(now + expire));
126 else
127 - mod_timer(&tbl->gc_timer, now + expire);
128 + mod_timer(&tbl->gc_timer, round_jiffies(now + 4*HZ));
129
130 write_unlock(&tbl->lock);
131 }