Hello David, > > cat /proc/<pid>/pagemap > > > > and > > > > cat /proc/<pid>/task/<pid>/pagemap > > > > eats up to 100% of CPU while looping forever somewhere. On the other > > hand on my old x86 the same commands take well below 1s so I > > guess that is the expected behaviour. > > 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. I see. Sorry for the noise then 8-) I've got a couple of scripts for testing /proc and /sys and I just noticed that some of processes started by them would run for a couple hours eating 100% CPU which doesn't happen on other arch'es I have around - hence my report. Thanks for clarification. > This expensive operation is quite harmless, the process can still be > killed, it is not unstoppable. That's true. > commit c101b088ba0ed16d7109b2f3c2d16798d162a535 > Author: David S. Miller <davem@xxxxxxxxxxxxx> > 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. This patch certainly helps in my case. Tested here: sparc64 # time cat /proc/1/pagemap > /dev/null real 0m0.046s user 0m0.000s sys 0m0.047s Thanks, Mariusz -- To unsubscribe from this list: send the line "unsubscribe sparclinux" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html