login
Header Space

 
 

Re: Linux 2.6.25-rc7 sparc64 loops forever on cat /proc/<pid>/pagemap

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <m.kozlowski@...>
Cc: <torvalds@...>, <linux-kernel@...>, <sparclinux@...>
Date: Wednesday, March 26, 2008 - 8:35 pm

From: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Date: Wed, 26 Mar 2008 13:02:45 +0100


The patch below will speed this up for 32-bit processes but for 64-bit
ones it's still going to take a long time.

Cat'ing this file writes a 64-bit value for every possible page in the
task's address space, which for 64-bit is an enormous number of
entries.

This is not how this file is supposed to be used.  Programs are
supposed to inspect /proc/${PID}/maps, and use those ranges to lseek()
around the pagemap file and fish out the values they need.

This expensive operation is quite harmless, the process can still be
killed, it is not unstoppable.

commit c101b088ba0ed16d7109b2f3c2d16798d162a535
Author: David S. Miller <davem@davemloft.net>
Date:   Wed Mar 26 17:32:33 2008 -0700

    [SPARC64]: Define TASK_SIZE_OF()
    
    This make "cat /proc/${PID}/pagemap" more efficient for
    32-bit tasks.
    
    Based upon a report by Mariusz Kozlowski.
    
    Signed-off-by: David S. Miller <davem@davemloft.net>

diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h
index 8da484c..885b6a1 100644
--- a/include/asm-sparc64/processor.h
+++ b/include/asm-sparc64/processor.h
@@ -37,6 +37,9 @@
 #endif
 
 #define TASK_SIZE	((unsigned long)-VPTE_SIZE)
+#define TASK_SIZE_OF(tsk) \
+	(test_tsk_thread_flag(tsk,TIF_32BIT) ? \
+	 (1UL << 32UL) : TASK_SIZE)
 #ifdef __KERNEL__
 
 #define STACK_TOP32	((1UL << 32UL) - PAGE_SIZE)
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Linux 2.6.25-rc7, Linus Torvalds, (Tue Mar 25, 10:07 pm)
Re: Linux 2.6.25-rc7 sparc64 loops forever on cat /proc/&lt;..., Mariusz Kozlowski, (Wed Mar 26, 8:02 am)
Re: Linux 2.6.25-rc7 sparc64 loops forever on cat /proc/<..., David Miller, (Wed Mar 26, 8:35 pm)
Re: Linux 2.6.25-rc7 sparc64 loops forever on cat /proc/&lt;..., Mariusz Kozlowski, (Fri Mar 28, 7:33 am)
sparc64 BUG: using smp_processor_id() in preemptible, Mariusz Kozlowski, (Wed Mar 26, 6:42 am)
Re: sparc64 BUG: using smp_processor_id() in preemptible, Andrew Morton, (Wed Mar 26, 11:25 pm)
Re: sparc64 BUG: using smp_processor_id() in preemptible, Mariusz Kozlowski, (Wed Mar 26, 7:46 am)
Re: sparc64 BUG: using smp_processor_id() in preemptible, Mariusz Kozlowski, (Wed Mar 26, 8:10 am)
speck-geostationary