[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