Magellan Linux

Annotation of /trunk/kernel26-magellan/patches-2.6.16-r5/0027-2.6.16-mm-aggresive_swap_prefetch.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 67 - (hide annotations) (download)
Wed Apr 12 18:59:30 2006 UTC (18 years, 1 month ago) by niro
File size: 3333 byte(s)
ver bump to 2.6.16-r5; updated to linux-2.6.16.4

1 niro 67 ---
2     Documentation/sysctl/vm.txt | 14 ++++++++++----
3     include/linux/swap-prefetch.h | 5 +++++
4     mm/swap_prefetch.c | 11 +++++++++++
5     3 files changed, 26 insertions(+), 4 deletions(-)
6    
7     Index: linux-2.6.16-ck1/include/linux/swap-prefetch.h
8     ===================================================================
9     --- linux-2.6.16-ck1.orig/include/linux/swap-prefetch.h 2006-03-20 20:46:55.000000000 +1100
10     +++ linux-2.6.16-ck1/include/linux/swap-prefetch.h 2006-03-20 20:47:01.000000000 +1100
11     @@ -33,6 +33,7 @@ extern void add_to_swapped_list(struct p
12     extern void remove_from_swapped_list(const unsigned long index);
13     extern void delay_swap_prefetch(void);
14     extern void prepare_swap_prefetch(void);
15     +extern void aggressive_swap_prefetch(void);
16    
17     #else /* CONFIG_SWAP_PREFETCH */
18     static inline void add_to_swapped_list(struct page *__unused)
19     @@ -50,6 +51,10 @@ static inline void remove_from_swapped_l
20     static inline void delay_swap_prefetch(void)
21     {
22     }
23     +
24     +static inline void aggressive_swap_prefetch(void)
25     +{
26     +}
27     #endif /* CONFIG_SWAP_PREFETCH */
28    
29     #endif /* SWAP_PREFETCH_H_INCLUDED */
30     Index: linux-2.6.16-ck1/mm/swap_prefetch.c
31     ===================================================================
32     --- linux-2.6.16-ck1.orig/mm/swap_prefetch.c 2006-03-20 20:47:00.000000000 +1100
33     +++ linux-2.6.16-ck1/mm/swap_prefetch.c 2006-03-20 20:47:01.000000000 +1100
34     @@ -29,6 +29,7 @@
35    
36     #define PREFETCH_NORMAL (1 << 0)
37     #define PREFETCH_AGGRESSIVE (1 << 1)
38     +
39     /*
40     * sysctl - enable/disable swap prefetching bits
41     * This is composed of the bitflags PREFETCH_NORMAL and PREFETCH_AGGRESSIVE.
42     @@ -601,6 +602,16 @@ void __init prepare_swap_prefetch(void)
43     }
44     }
45    
46     +/*
47     + * This exported function sets the PREFETCH_AGGRESSIVE flag but only if there
48     + * are entries to prefetch.
49     + */
50     +void aggressive_swap_prefetch(void)
51     +{
52     + if (swapped.count)
53     + swap_prefetch |= PREFETCH_AGGRESSIVE;
54     +}
55     +
56     static int __init kprefetchd_init(void)
57     {
58     kprefetchd_task = kthread_run(kprefetchd, NULL, "kprefetchd");
59     Index: linux-2.6.16-ck1/Documentation/sysctl/vm.txt
60     ===================================================================
61     --- linux-2.6.16-ck1.orig/Documentation/sysctl/vm.txt 2006-03-20 20:47:00.000000000 +1100
62     +++ linux-2.6.16-ck1/Documentation/sysctl/vm.txt 2006-03-20 20:47:01.000000000 +1100
63     @@ -192,9 +192,15 @@ This is value ORed together of
64     1 = Normal background swap prefetching when load is light
65     2 = Aggressively swap prefetch as much as possible
66    
67     -When 2 is set, after the maximum amount possible has been prefetched, this bit
68     -is unset. ie Setting the value to 3 will prefetch aggressively then drop to 1.
69     -This is useful for doing aggressive prefetching for short periods in scripts
70     -such as after resuming from software suspend.
71     +ie Setting the value to 3 will prefetch aggressively then drop to 1. This
72     +is useful for doing aggressive prefetching for short periods in scripts
73     +such as after resuming from software suspend. Setting the value to 2 will
74     +prefetch aggressively as much as it can and then disable any further swap
75     +prefetching.
76     +
77     +Note that setting this to 0 disables even storing a list of swapped pages (to
78     +minimise overhead) which means that if significant swapping has occurred with
79     +swap_prefetch unset and then it is enabled, there is nothing that can be
80     +prefetched.
81    
82     The default value is 1.