Hide Forgot
The RHEL 6 System Tap Beginners Guide in section 4.4 "Identifying Contended User-Space Locks" includes an example script futexes.stp. However, this script will not return any results as written when run on RHEL 6, as it has not accounted for the FUTEX_PRIVATE_FLAG which newer kernels now use. The update is fairly trivial, but the examples in our current documentation should work out-of-the-box. Perhaps there are other example scripts that need updating too.
Current script is at: http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/6/html/SystemTap_Beginners_Guide/futexcontentionsect.html
Created attachment 483740 [details] Modified script The attached script works ok on RHEL 6 (although it is likely not very elegantly written and can be cleaned up).
Kim, Are you sure that the example shouldn't mask off the PRIVATE flag, as in if ((op & ~FUTEX_PRIVATE_FLAG) != FUTEX_WAIT) next;
I agree, that is probably a more correct implementation.
upstream commits c085f1feb2 and 148d3a367 should correct this.
Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Cause RHEL6 kernels have additional futex flags, FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME in the syscall.futex $op argument. Consequence Without filtering out FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME the script does not record data on RHEL6. Fix The futexes.stp added filtering for FUTEX_PRIVATE_FLAG and FUTEX_CLOCK_REALTIME. Result The futexes.stp example now runs correctly on RHEL6.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHBA-2011-1517.html