page faults counter example is broken?!
Thomas Knauth
thomas.knauth@gmx.de
Wed Sep 25 15:33:00 GMT 2013
On Sat, Sep 21, 2013 at 9:58 PM, Paddie O'Brien <paddieobrien@gmail.com> wrote:
> I think the way minor faults are recorded is the problem. The code below
> is used to determine the type of fault (from memory.stp). Perhaps the
> check should be:
>
> #if defined(VM_FAULT_MINOR) && VM_FAULT_MINOR == 0
>
> function vm_fault_contains:long (value:long, test:long)
> %{
> int res;
> switch (STAP_ARG_test){
> case 0: res = STAP_ARG_value & VM_FAULT_OOM; break;
> case 1: res = STAP_ARG_value & VM_FAULT_SIGBUS; break;
> #if defined(VM_FAULT_MINOR) && VM_FAULT_MINOR != 0
> case 2: /* VM_FAULT_MINOR infered by that flags off */
> res = !((VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_MAJOR) &
> STAP_ARG_value);
> break;
> #else
> case 2: res = STAP_ARG_value == VM_FAULT_MINOR; break;
After changing the != into an == operator the number of reported
faults indeed matches with the counters maintained by the OS.
Did this catch the attention of some systemtap developer or shall I
file a separate bug report?
Thanks,
Thomas.
More information about the Systemtap
mailing list