[PATCH] Add ktrace records for user page faults
Jilles Tjoelker
jilles at stack.nl
Wed May 4 21:26:06 UTC 2011
On Mon, May 02, 2011 at 03:37:19PM -0400, John Baldwin wrote:
> One thing I have found useful is knowing when processes are in the
> kernel instead of in userland. ktrace already provides records for
> syscall entry/exit. The other major source of time spent in the
> kernel that I've seen is page fault handling. To that end, I have a
> patch that adds ktrace records to the beginning and end of VM faults.
> This gives a pair of records so a user can see how long a fault took
> (similar to how one can see how long a syscall takes now). Sample
> output from kdump is below:
> 47565 echo CALL mmap(0x800a87000,0x179000,PROT_READ|
> PROT_WRITE,MAP_PRIVATE|MAP_ANON,0xffffffff,0)
> 47565 echo RET mmap 34370777088/0x800a87000
> 47565 echo PFLT 0x800723000 VM_PROT_EXECUTE
> 47565 echo RET KERN_SUCCESS
> 47565 echo CALL munmap(0x800887000,0x179000)
> 47565 echo RET munmap 0
> 47565 echo PFLT 0x800a00000 VM_PROT_WRITE
> 47565 echo RET KERN_SUCCESS
Just a small nitpick, I think the return from a page fault should not
use the same "RET" keyword; even though the next word unambiguously
distinguishes it from a return from a syscall, I think it is clearer in
the documentation and possibly useful for automated processing to use a
separate keyword such as "PRET".
--
Jilles Tjoelker
More information about the freebsd-arch
mailing list