My program is occasionally seeing slow page faults. latencytop says
they're slow because they're waiting for read access to mmap_sem, but
latencytop isn't showing any other thread in the process blocking.
Is there any straightforward way to find out who called down_write on
mmap_sem when down_read is slow?
--Andy
On 08/22/2013 08:52 PM, Andy Lutomirski wrote:
> My program is occasionally seeing slow page faults. latencytop says
> they're slow because they're waiting for read access to mmap_sem, but
> latencytop isn't showing any other thread in the process blocking.
>
> Is there any straightforward way to find out who called down_write on
> mmap_sem when down_read is slow?
Build with CONFIG_LOCKDEP (Kernel Debugging -> Lock Debugging ->
"Lock Debugging: prove locking correctness").
When you experience the slowdown, sysrq + d (displays all currently
held locks). sysrq can also be programmatically triggered with
"echo d > /proc/sysrq-trigger" or equivalent.
Regards,
Peter Hurley