Skip to contentSkip to conversation

swap prefetch: avoid repeating entry

PATCH In review Con Kolivas 2 participants 2 messages Mar 7, 2007 Memory management

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 swap prefetch: avoid repeating entry

I've been unable for 4 months to find someone to test this Andrew. I'm going to assume it fixes the problem on numa=64 (or something like that) so please apply it.

---
Avoid entering trickle_swap() when first initialising kprefetchd to prevent endless loops.

---
 mm/swap_prefetch.c |    4 ++++
 1 file changed, 4 insertions(+)
mm/swap_prefetch.c +4 -0
Index: linux-2.6.21-rc2-mm2/mm/swap_prefetch.c
===================================================================
@@ -515,6 +515,10 @@ static int kprefetchd(void *__unused)
 	/* Set ioprio to lowest if supported by i/o scheduler */
 	sys_ioprio_set(IOPRIO_WHO_PROCESS, 0, IOPRIO_CLASS_IDLE);
 
+	/* kprefetchd has nothing to do until it is woken up the first time */
+	set_current_state(TASK_INTERRUPTIBLE);
+	schedule();
+
 	do {
 		try_to_freeze();
 
Signature · 7 lines
-ck

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to [email protected].  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>
maintainer
#1 lore raw
Quoted 19 lines · On Wed, 7 Mar 2007 18:14:04 +1100 Con Kolivas <[email protected]> wrote:

I've been unable for 4 months to find someone to test this Andrew. I'm going to assume it fixes the problem on numa=64 (or something like that) so please apply it.

---
Avoid entering trickle_swap() when first initialising kprefetchd to prevent endless loops.

---
 mm/swap_prefetch.c |    4 ++++
 1 file changed, 4 insertions(+)

Index: linux-2.6.21-rc2-mm2/mm/swap_prefetch.c
===================================================================

mm/swap_prefetch.c static int kprefetchd(void *__unused) · line 524

Quoted 10 lines
mm/swap_prefetch.c +4 -0
@@ -515,6 +515,10 @@ static int kprefetchd(void *__unused)
 	/* Set ioprio to lowest if supported by i/o scheduler */
 	sys_ioprio_set(IOPRIO_WHO_PROCESS, 0, IOPRIO_CLASS_IDLE);
 
+	/* kprefetchd has nothing to do until it is woken up the first time */
+	set_current_state(TASK_INTERRUPTIBLE);
+	schedule();
+
 	do {
 		try_to_freeze();
 

hm, yes, strange.

You can do poor-man's NUMA by setting CONFIG_NUMA_EMU and booting with `numa=fake=16' Requires x86_64 and perhaps the fake-numa fixes in -mm.

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to [email protected]. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"[email protected]"> [email protected] </a>