Details
-
Improvement
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
puppet-agent 5.5.1
-
Night's Watch
-
3
-
PR - 2019-03-20, PR - 2019-04-03, PR - 2019-04-17, PR - 2019-05-02, PR - 2019-05-15, PR - 2019-05-29
-
Not Needed
-
Needs Assessment
Description
Ruby can be built with support for User Defined Static Tracing probes via the --enable-dtrace configure option. These probes define attachment points where tools like DTrace and SystemTap can hook in and trace program execution — which is really handy for debugging all manner of performance issues and logic bugs.
Ruby builds provided by the RedHat Software Collection have these probes enabled, we should consider doing the same unless there are major downsides to having them on.
Current State
The Ruby library provided by the Puppet Runtime has no USDT probes:
# PE 2018.1.0
|
# readelf -n /opt/puppetlabs/puppet/lib/libruby.so.2.4.3
|
|
Notes at offset 0x000001c8 with length 0x00000024:
|
Owner Data size Description
|
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
|
Build ID: 56702e75d367ba5ca95838eb3ccf50345cd4b1e4
|
Desired State
The Ruby library provided by the Puppet Runtime should have USDT probes similar to the RedHat SCL build:
# CentOS 7
|
# yum install centos-release-scl
|
# yum install -y rh-ruby24-scl
|
|
# readelf -n /opt/rh/rh-ruby24/root/lib64/libruby.so.2.4.0
|
|
Notes at offset 0x000001c8 with length 0x00000024:
|
Owner Data size Description
|
GNU 0x00000014 NT_GNU_BUILD_ID (unique build ID bitstring)
|
Build ID: bcd1f47c9ce91aaa1be49e490a13ae366e1d4b6b
|
|
Notes at offset 0x00289978 with length 0x00000eb4:
|
Owner Data size Description
|
stapsdt 0x00000046 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: array__create
|
Location: 0x0000000000030402, Base: 0x00000000002387a5, Semaphore: 0x000000000048995c
|
Arguments: -8@%rbp 8@%rax -4@12(%rsp)
|
stapsdt 0x00000044 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: array__create
|
Location: 0x0000000000030460, Base: 0x00000000002387a5, Semaphore: 0x000000000048995c
|
Arguments: -4@$0 8@%rax -4@12(%rsp)
|
stapsdt 0x00000040 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: raise
|
Location: 0x000000000008d632, Base: 0x00000000002387a5, Semaphore: 0x0000000000489960
|
Arguments: 8@%rax 8@8(%rsp) -4@60(%rsp)
|
stapsdt 0x0000002d NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: gc__sweep__end
|
Location: 0x00000000000a0bd8, Base: 0x00000000002387a5, Semaphore: 0x000000000048994a
|
Arguments:
|
stapsdt 0x0000002f NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: gc__sweep__begin
|
Location: 0x00000000000a0bde, Base: 0x00000000002387a5, Semaphore: 0x000000000048994c
|
Arguments:
|
stapsdt 0x0000002e NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: gc__mark__begin
|
Location: 0x00000000000a1b6b, Base: 0x00000000002387a5, Semaphore: 0x0000000000489950
|
Arguments:
|
stapsdt 0x0000002c NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: gc__mark__end
|
Location: 0x00000000000a1bcf, Base: 0x00000000002387a5, Semaphore: 0x000000000048994e
|
Arguments:
|
stapsdt 0x00000043 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: hash__create
|
Location: 0x00000000000a68c2, Base: 0x00000000002387a5, Semaphore: 0x000000000048995a
|
Arguments: -4@$0 8@%rax -4@12(%rsp)
|
stapsdt 0x00000043 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: load__entry
|
Location: 0x00000000000c21c0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489964
|
Arguments: 8@%rax 8@%rbp -4@12(%rsp)
|
stapsdt 0x00000044 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: load__return
|
Location: 0x00000000000c21e0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489962
|
Arguments: 8@%rax 8@%rbp -4@12(%rsp)
|
stapsdt 0x0000004a NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: require__entry
|
Location: 0x00000000000c32b8, Base: 0x00000000002387a5, Semaphore: 0x000000000048996c
|
Arguments: 8@%rax 8@24(%rsp) -4@72(%rsp)
|
stapsdt 0x00000051 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: find__require__return
|
Location: 0x00000000000c3606, Base: 0x00000000002387a5, Semaphore: 0x0000000000489966
|
Arguments: 8@%rax 8@32(%rsp) -4@80(%rsp)
|
stapsdt 0x0000004b NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: require__return
|
Location: 0x00000000000c3686, Base: 0x00000000002387a5, Semaphore: 0x000000000048996a
|
Arguments: 8@%rax 8@24(%rsp) -4@84(%rsp)
|
stapsdt 0x00000050 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: find__require__entry
|
Location: 0x00000000000c36d8, Base: 0x00000000002387a5, Semaphore: 0x0000000000489968
|
Arguments: 8@%rax 8@24(%rsp) -4@76(%rsp)
|
stapsdt 0x00000046 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: object__create
|
Location: 0x00000000000dec46, Base: 0x00000000002387a5, Semaphore: 0x000000000048995e
|
Arguments: 8@%rax 8@%r12 -4@12(%rsp)
|
stapsdt 0x00000041 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: parse__end
|
Location: 0x00000000000fc5d0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489952
|
Arguments: 8@168(%rbx) -4@164(%rbx)
|
stapsdt 0x00000043 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: parse__begin
|
Location: 0x00000000000fc5d6, Base: 0x00000000002387a5, Semaphore: 0x0000000000489954
|
Arguments: 8@168(%rbx) -4@164(%rbx)
|
stapsdt 0x00000047 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: string__create
|
Location: 0x000000000014efe3, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
|
Arguments: -8@%rbp 8@%rax -4@12(%rsp)
|
stapsdt 0x00000047 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: string__create
|
Location: 0x000000000014f0e4, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
|
Arguments: -8@%rbp 8@%rax -4@12(%rsp)
|
stapsdt 0x00000045 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: string__create
|
Location: 0x000000000014f150, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
|
Arguments: -4@$0 8@%rax -4@12(%rsp)
|
stapsdt 0x00000047 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: string__create
|
Location: 0x0000000000155eef, Base: 0x00000000002387a5, Semaphore: 0x0000000000489958
|
Arguments: -8@%rdx 8@%rax -4@12(%rsp)
|
stapsdt 0x00000046 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: symbol__create
|
Location: 0x0000000000168100, Base: 0x00000000002387a5, Semaphore: 0x0000000000489956
|
Arguments: 8@%rdx 8@%rax -4@28(%rsp)
|
stapsdt 0x00000046 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: symbol__create
|
Location: 0x00000000001682e6, Base: 0x00000000002387a5, Semaphore: 0x0000000000489956
|
Arguments: 8@%rdx 8@%rax -4@12(%rsp)
|
stapsdt 0x0000004c NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: method__cache__clear
|
Location: 0x00000000001933d1, Base: 0x00000000002387a5, Semaphore: 0x0000000000489948
|
Arguments: 8@%rax 8@%r13 -4@12(%rsp)
|
stapsdt 0x00000045 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: hash__create
|
Location: 0x00000000001934d1, Base: 0x00000000002387a5, Semaphore: 0x000000000048995a
|
Arguments: -8@%rdx 8@%rax -4@12(%rsp)
|
stapsdt 0x0000005a NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__return
|
Location: 0x0000000000193fe0, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
|
Arguments: 8@48(%rsp) 8@56(%rsp) 8@64(%rsp) -4@72(%rsp)
|
stapsdt 0x00000059 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__entry
|
Location: 0x00000000001940b8, Base: 0x00000000002387a5, Semaphore: 0x0000000000489970
|
Arguments: 8@48(%rsp) 8@56(%rsp) 8@64(%rsp) -4@72(%rsp)
|
stapsdt 0x00000059 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: method__return
|
Location: 0x0000000000194251, Base: 0x00000000002387a5, Semaphore: 0x0000000000489972
|
Arguments: 8@16(%rsp) 8@24(%rsp) 8@32(%rsp) -4@40(%rsp)
|
stapsdt 0x0000005a NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__return
|
Location: 0x0000000000194348, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
|
Arguments: 8@32(%rsp) 8@40(%rsp) 8@48(%rsp) -4@56(%rsp)
|
stapsdt 0x00000049 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: hash__create
|
Location: 0x000000000019cffb, Base: 0x00000000002387a5, Semaphore: 0x000000000048995a
|
Arguments: 8@32(%rsp) 8@%rax -4@960(%rsp)
|
stapsdt 0x0000005e NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__return
|
Location: 0x000000000019d13d, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
|
Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
|
stapsdt 0x0000005d NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__entry
|
Location: 0x000000000019d1b2, Base: 0x00000000002387a5, Semaphore: 0x0000000000489970
|
Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
|
stapsdt 0x0000005c NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: method__entry
|
Location: 0x000000000019d1f0, Base: 0x00000000002387a5, Semaphore: 0x0000000000489974
|
Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
|
stapsdt 0x0000005d NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: method__return
|
Location: 0x000000000019d228, Base: 0x00000000002387a5, Semaphore: 0x0000000000489972
|
Arguments: 8@960(%rsp) 8@968(%rsp) 8@976(%rsp) -4@984(%rsp)
|
stapsdt 0x0000005e NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__return
|
Location: 0x000000000019dadd, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
|
Arguments: 8@112(%rsp) 8@120(%rsp) 8@128(%rsp) -4@136(%rsp)
|
stapsdt 0x00000059 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: method__return
|
Location: 0x000000000019dccc, Base: 0x00000000002387a5, Semaphore: 0x0000000000489972
|
Arguments: 8@16(%rsp) 8@24(%rsp) 8@32(%rsp) -4@40(%rsp)
|
stapsdt 0x00000058 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: method__entry
|
Location: 0x000000000019dd53, Base: 0x00000000002387a5, Semaphore: 0x0000000000489974
|
Arguments: 8@16(%rsp) 8@24(%rsp) 8@32(%rsp) -4@40(%rsp)
|
stapsdt 0x0000005a NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__return
|
Location: 0x00000000001a27d6, Base: 0x00000000002387a5, Semaphore: 0x000000000048996e
|
Arguments: 8@64(%rsp) 8@72(%rsp) 8@80(%rsp) -4@88(%rsp)
|
stapsdt 0x00000059 NT_STAPSDT (SystemTap probe descriptors)
|
Provider: ruby
|
Name: cmethod__entry
|
Location: 0x00000000001a28a5, Base: 0x00000000002387a5, Semaphore: 0x0000000000489970
|
Arguments: 8@64(%rsp) 8@72(%rsp) 8@80(%rsp) -4@88(%rsp)
|