I once wrote a kernel loadable module for getting page fault handling info (time cost, etc.):
https://github.com/jw2013/getvminfo
I use that to see the page fault pattern of both sequential and random memory access pattern. In case anyone is interested, just check it out.